专栏首页技术翻译简单的Apache NiFi操作仪表板(第2部分):Spring Boot
原创

简单的Apache NiFi操作仪表板(第2部分):Spring Boot

在这篇文章中,我们继续使用Spring Boot 2.0.6与开源大数据平台Apache NiFi建立仪表板。

简单的Apache NiFi操作仪表板 - 第2部分

要访问要在我们的仪表板中显示的数据,我们将使用一些Spring Boot 2.06 Java 8微服务在Hadoop 3.1上调用HDP 3.0中的Apache Hive 3.1.0表。

我们将托管我们的网站并对Apache NiFi,我们的微服务,YARN和其他API进行REST调用。

正如您所看到的,我们可以轻松地将来自HDP 3 - Apache Hive 3.1.0的数据整合到Spring Boot Java应用程序中,并没有太大的麻烦。您可以看到Maven构建脚本(所有代码都在GitHub中)。

我们的动机是将所有这些数据放在某处,并将其显示在可以使用REST API进行数据访问和更新的仪表板上。我们可以选择将Apache NiFi用于所有REST API,或者我们可以在Apache NiFi中使用它。我们还在探索。我们还可以决定将后端更改为HBase 2.0,Phoenix,Druid或其中的组合。我们会看到。

Spring Boot 2.0.6加载

JSON输出

Spring Boot微服务和UI

https://github.com/tspannhw/operations-dashboard

首先,我有一个简单的网页,可以调用其中一个REST API。

微服务可以运行YARN 3.1,Kubernetes,CloudFoundry,OpenShift或任何可以运行简单Java 8 jar的机器。

我们可以将此HTML作为更大的仪表板的一部分或在任何地方托管。

为了解析监控数据,我们有一些指标,状态和公告的模式。

现在我正在Apache Hive中监视数据,我可以在Apache Zeppelin(或任何JDBC / ODBC工具)中轻松查询它。

Apache Zeppelin屏幕

我们有很多监控NiFi的报告任务。

我们从NiFi上读到并发送给NiFi,很高兴有一个专门的报告集群。

只显示MonitorMemory的公告(您可以在报告任务中看到)

NiFi查询限制我们在蜂巢中存储的公告(现在只是抓错误)

REST API的Spring Boot代码

度量标准REST API结果

公告REST API结果

指标主页

运行微服务

java -Xms512m -Xmx2048m -Dhdp.version=3.0.0 -Djava.net.preferIPv4Stack=true -jar target/operations-0.0.1-SNAPSHOT.jar

Maven POM

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dataflowdeveloper</groupId>
<artifactId>operations</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>operations</name>
<description>Apache Hive Operations Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
<exclusion>
 <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
 </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.0</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty.aggregate</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<artifactId>servlet-api</artifactId>
<groupId>javax.servlet</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.restdocs</groupId>
<artifactId>spring-restdocs-mockmvc</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
   <repositories>
        <repository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>

在Internet的帮助下,我们有一些简单的JavaScript来读取Spring Boot / metrics REST API并填充一些值:

HTML和JavaScript(参见src / main / resources / static / index.html)

 <h1>Metrics</h1>
<div id="output" name="output"  class="white-frame">
  <ul id="metrics"></ul>  
</div>
<script language="javascript">var myList = document.querySelector('ul');var myRequest = new Request('./metrics/');fetch(myRequest).then(function(response) { return response.json(); }).then(function(data) {for (var i = 0; i < data.length; i++) {var listItem = document.createElement('li');listItem.innerHTML = '<strong>Timestamp' + data[i].timestamp + '</strong>Flow Files Received: ' +data[i].flowfilesreceivedlast5minutes + ' JVM Heap Usage:' + data[i].jvmheap_usage +' Threads Waiting:' + data[i].jvmthread_statestimed_waiting +' Thread Count: ' + data[i].jvmthread_count +' Total Task Duration: ' + data[i].totaltaskdurationnanoseconds +' Bytes Read Last 5 min: ' + data[i].bytesreadlast5minutes +' Flow Files Queued: ' + data[i].flowfilesqueued +' Bytes Queued: ' + data[i].bytesqueued;myList.appendChild(listItem);}});</script>
​

示例API调用Spring Boot

  • HTTP://本地主机:8090 /状态/更新
  • HTTP://本地主机:8090 /简报/错误
  • HTTP://本地主机:8090 /度量/

原文标题《Simple Apache NiFi Operations Dashboard (Part 2): Spring Boot》

作者:Tim Spann

译者:Sonia

不代表云加社区观点,更多详情请查看原文链接

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 构建自定义Apache NiFi操作仪表板(第1部分)

    这是一个正在进行的工作; 请参与进来,一切都是开源的。Milind和我正在开发一个项目来构建一些对团队有用的东西来分析他们的流程,当前的集群状态,启动和停止流程...

    用户3382876
  • Kubernetes的五大关键云技术

    Kubernetes采用率是开源软件历史上最快的吗?很可能。根据CNCF,Kubernetes现在是仅次于Linux的全球第二大开源项目。

    用户3382876
  • 分析R中的Elasticsearch数据

    您可以在任何可以安装R和Java的计算机上使用纯R脚本和标准SQL访问Elasticsearch数据。您可以使用适用于Elasticsearch的CData J...

    用户3382876
  • 【学习笔记】springboot教程(1)第一个demo

    【学习笔记】springboot教程(1) 第一个demo 摘要: 先了解下springboot到底是个什么东西,能用来干什么?有什么好处?也就是为什么要学习他...

    Java帮帮
  • SpringBoot2.x基础篇:开发你的第一个SpringBoot应用程序

    本篇文章是2020年的开篇之作,希望能带给你不一样的阅读体验,能带给给你清晰的阅读思路。

    恒宇少年
  • Spring Boot使用Druid进行维度的统计和监控

    ##Druid## Druid:一款为监控而生的数据库连接池框架,整个项目由数据库连接池、插件框架和SQL解析器组成。 Druid功能介于PowerDr...

    SmileNicky
  • Spring Boot 之 spring-boot-devtools 实现热部署

    选择“Registry”,回车,找到“complier.automake.allow.when.app.running” 

    wuweixiang
  • 快速搭建springboot的ssm(spring + springmvc + mybatis)的maven项目

    瑞新
  • 教你十分钟快速搭建springBoot项目实战

    首先申明,本文并没有原理性的东西(请自行百度),适合于刚接触springBoot并有一定javaweb开发基础的人群,大神和小白请出门左拐。 一、使用工具 Ec...

    小柒2012
  • 原 SpringBoot 2.0 系列00

    石奈子

扫码关注云+社区

领取腾讯云代金券