前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单的Apache NiFi操作仪表板(第2部分):Spring Boot

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

原创
作者头像
用户3382876
修改2018-11-07 16:50:36
2.9K1
修改2018-11-07 16:50:36
举报
文章被收录于专栏:技术翻译

在这篇文章中,我们继续使用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结果

指标主页

运行微服务

代码语言:javascript
复制
java -Xms512m -Xmx2048m -Dhdp.version=3.0.0 -Djava.net.preferIPv4Stack=true -jar target/operations-0.0.1-SNAPSHOT.jar

Maven POM

代码语言:javascript
复制
<?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)

代码语言:javascript
复制
 <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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在这篇文章中,我们继续使用Spring Boot 2.0.6与开源大数据平台Apache NiFi建立仪表板。
  • 简单的Apache NiFi操作仪表板 - 第2部分
  • Spring Boot 2.0.6加载
  • JSON输出
  • Spring Boot微服务和UI
  • Apache Zeppelin屏幕
  • 只显示MonitorMemory的公告(您可以在报告任务中看到)
    • NiFi查询限制我们在蜂巢中存储的公告(现在只是抓错误)
    • REST API的Spring Boot代码
    • 度量标准REST API结果
    • 公告REST API结果
    • 指标主页
    • 运行微服务
      • Maven POM
        • HTML和JavaScript(参见src / main / resources / static / index.html)
        • 示例API调用Spring Boot
        相关产品与服务
        云数据库 HBase
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档