如何使用Cloudera Edge Management

发布日期:2020-12-25 14:51
c93afce71c7dcaca54e5d5b52f1b5b8c.png
EFM简介:
Cloudera Data Flow(CDF) 作为 Cloudera 一个独立的产品单元,围绕着实时数据采集,实时数据处理和实时数据分析有多个不同的功能模块,如下图所示:


图中4个功能模块从左到右分别解释如下:
1.Cloudera Edge Management(CEM),主要是指在边缘设备如传感器上部署 MiNiFi 的 agent 后用于采集数据。
2.Cloudera Flow Management(CFM),主要是使用 Apache NiFi 通过界面化拖拽的方式实现数据采集,处理和转换。
3.Cloudera Streaming Processing(CSP),主要包括 Apache Kafka,Kafka Streams,Kafka 的监控 Streams Messaging Manager(SMM),以及跨集群 Kafka topic 的数据复制 Streams Replication Manager(SRM)。
4.Cloudera Streaming Analytics(CSA),以前这块是使用 Storm 来作为 Native Streaming 来补充 Spark Streaming 的 Micro-batch 的时延问题,目前这块改为 Flink 来实现,未来的 CDF 中将不再包含 Storm。

本文会对 CEM 进行简要介绍,同时会演示如何安装 CEM 即 MiNiFi,最后会演示一个简单的示例通过 MiNiFi 搜集数据并写入到 HDFS。

Cloudera Edge Management(CEM)是由边缘代理和边缘管理中心组成的边缘管理(Edge Management )解决方案。它管理、控制和监控边缘代理,可以从边缘设备收集数据并将数据推回边缘设备。

CEM包含两个组件:
•Apache MiNiFi。一种轻量级的边缘代理,它实现了Apache NiFi的核心功能,专注于边缘的数据收集和处理。
•Edge Flow Manager(EFM)。是一个代理管理中心,它支持基于图形界面的流(Flow)编程模型,可以在数千个MiNiFi代理上开发、部署和监控边缘流。

CEM为边缘流(Edge Flow)生命周期提供了三种主要功能:
•Flow著作:EFM通过提供无代码拖放式开发环境来解决开发IoT应用程序的挑战。该开发环境提供了类似于NiFi的体验,可用于将数据从边缘代理捕获、过滤、转换和传输到CDH等上游企业系统。
•Flow部署:管理物联网应用程序的部署一直是行业的挑战。Edge Flow Manager通过提供一种简单但功能强大的模型来将流部署到代理来缓解这一挑战。当新的或修改的流程可用时,将通知在EFM中注册的代理。代理将访问该流并将其本地应用。
•Flow监控:CEM中的代理向其EFM实例发送定期心跳。心跳包含有关部署和运行时指标的信息。EFM存储、分析这些心跳并将其呈现给最终用户。心跳使操作员可以可视化细节,例如流吞吐量、连接深度、运行的处理器以及整体代理运行状况。

系统需求:
可以在 Windows 操作系统上安装 MiNiFi C 或 Java 代理,但是 Windows 操作系统不支持运行 EFM Server 和 NiFi Registry。 
  • 操作系统支持:

  • JDK版本支持:

  • 数据库支持:


安装CEM
3.1 测试环境
  • 操作系统:RHEL-7.6
  • 数据库:MySQL-5.7.28
  • Java:jdk1.8.0_181-cloudera
  • CEM:CEM-1.1.0.0-centos7-tars-tarball.tar.gz
  • MySQL-Connector: mysql-connector-java-5.1.48-bin.jar
创建数据库:
create database efm;
grant all privileges on efm.* to efm@‘%’ identified by ‘Cloudera4u’;

解压下载好的CEM Tarball:
下载链接:
tar -xzvf CEM-1.1.0.0-centos7-tars-tarball.tar.gz -C /opt

目录结构如下:


3.2 安装nifi-registry
Apache NiFi Registry(Apache NiFi的子项目)是一个补充应用程序,用于一个或多个 NiFi 以及 MiNiFi 实例之间的共享资源的存储和管理。

Apache NiFi Registry 是流(Flow)的版本控制仓库。在 Apache NiFi 中创建的流程组级别的数据流可以置于版本控制下并存储在 NiFi Registry 中。NiFi Registry 提供流的存储位置,并管理访问、创建、修改或删除流的权限。

Apache NiFi Registry(Apache NiFi的子项目)是一个补充应用程序,用于一个或多个 NiFi 以及 MiNiFi 实例之间的共享资源的存储和管理。

Apache NiFi Registry 是流(Flow)的版本控制仓库。在 Apache NiFi 中创建的流程组级别的数据流可以置于版本控制下并存储在 NiFi Registry 中。NiFi Registry 提供流的存储位置,并管理访问、创建、修改或删除流的权限。

EFM 可以使用现存的 NiFi Registry,也可以使用 tarball 中自带的 NiFi Registry。以下测试采用后者。

安装步骤:
  • 解压nifi-registry
tar -xzvf nifi-registry-0.3.0.1.1.0.0-172-bin.tar.gz -C /opt/

  • 启动nifi-registry
/opt/nifi-registry-0.3.0.1.1.0.0-172/bin/nifi-registry.sh start

可以通过以下链接访问nifi-registry,并创建一个Bucket:CEM-1


3.3 安装efm server
EFM 提供了一个可视化的界面,支持基于图形界面的流编程模型,可以在数千个MiNiFi 代理上开发、部署和监控边缘流。

安装步骤:
•解压efm
tar -xzvf efm-1.0.0.1.1.0.0-172-bin.tar.gz -C /opt/

•配置文件conf/efm.properties
# 启用nifi-registry,并指定URL
efm.nifi.registry.enabled=true
efm.nifi.registry.url=http://192.168.0.150:18080
# Bucket是nifi-registry中基础存储单元(目录),bucketId和bucketName只填一个
efm.nifi.registry.bucketId=
efm.nifi.registry.bucketName=CEM-1
# 指定数据库连接参数
efm.db.url=jdbc:mysql://192.168.0.149/efm
efm.db.driverClass=com.mysql.jdbc.Driver
efm.db.username=efm
efm.db.password=Cloudera4u
# 指定用于加密敏感数据的主密码,也可以通过命令行参数或OS环境变量进行设置
efm.encryption.password=myEfm-Cloudera4u

•准备MySQL-JDBC-Driver
cp mysql-connector-java-5.1.48-bin.jar efm-1.0.0.1.1.0.0-172/lib/

•启动efm
/opt/efm-1.0.0.1.1.0.0-172/bin/nifi-registry.sh start

可以通过以下链接访问efm:

3.4 安装minifi
Apache MiNiFi是一种轻量级的边缘代理,它实现了Apache NiFi的核心功能,专注于边缘的数据收集和处理。CEM提供了基于Java和C 的MiNiFi,这里我们使用MiNiFi Java代理测试。

安装步骤:
•解压minifi
/opt/efm-1.0.0.1.1.0.0-172/bin/nifi-registry.sh start

•配置conf/bootstrap.conf
# 启用c2协议,并指定参数
nifi.c2.enable=true
nifi.c2.rest.url=http://192.168.0.150:10080/efm/api/c2-protocol/heartbeat
nifi.c2.rest.url.ack=http://192.168.0.150:10080/efm/api/c2-protocol/acknowledge
# 配置心跳发送间隔,单位ms
nifi.c2.agent.heartbeat.period=1000
# 配置代理的class名称
nifi.c2.agent.class=Class-A
# 配置代理的显示名称,默认为系统自动生成
nifi.c2.agent.identifier=Agent-150

•启动
/opt/minifi-0.6.0.1.1.0.0-172/bin/nifi-registry.sh start

演示:
打开EFM的WebUI界面,默认进入Monitor菜单页面。这里我们可以看到注册到该EFM实例的Minifi代理类别(Class),以及相关的告警信息和Event事件信息。

切换到Design菜单页,可以看到Minifi代理的Class列表,打开一个Class类,即可对这个Class类下所有的Minifi代理进行Flow设计、开发和管理。


4.1 示例
本实例展示了从Minifi收集数据,将数据发送至NiFi,再由NiFi将数据写入HDFS。

具体配置方式如下:

切换到Design菜单页,选择Class-A,并点击OPEN


点击“PROCESSOR”选择“GenerateFlowFile”自动产生测试数据;
配置“GenerateFlowFile”:
5秒产生一次数据,数据内容为“Minifi-Testing,Hello.”


点击“REMOTE PROCESS GROUP”,填入NiFi实例的URL,如:http://192.168.0.151:8080/nifi


在NiFi实例上建立一个INPUT端口,下游输出到HDFS 
(NiFi的输入端口对应Minifi的输出端口。当数据从Nifi发送到Minifi时,Nifi的输出端口对应Minifi的输入端口)

在EFM上,连接“GenerateFlowFile”与RPG,并填入NiFi的INPUT端口ID,如:
c46f1c86-0170-1000-ffff-ffffc2446a17(该ID号在NiFi上查看)


在EFM上,点击右上角“ACTION”,选择“Publish…”,将Flow推送至ninifi和nifi-registry


打开nifi-registry可以看到我们刚才推送的Flow版本信息

在NiFi上启动Process,并查看“Data Provenance”,可以看到数据已经写入HDFS


使用HDFS命令行查看数据已经写入HDFS

分享到:
推荐精彩博文