前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0755-如何使用Cloudera Edge Management

0755-如何使用Cloudera Edge Management

作者头像
Fayson
发布2020-03-25 11:10:51
1.6K0
发布2020-03-25 11:10:51
举报
文章被收录于专栏:Hadoop实操Hadoop实操

作者:卢其敏

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

创建数据库:

代码语言:javascript
复制
create database efm;
grant all privileges on efm.* to efm@‘%’ identified by ‘Cloudera4u’;

解压下载好的CEM Tarball:

下载链接:

https://www.cloudera.com/downloads/cdf.html

代码语言:javascript
复制
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
代码语言:javascript
复制
tar -xzvf nifi-registry-0.3.0.1.1.0.0-172-bin.tar.gz -C /opt/
  • 启动nifi-registry
代码语言:javascript
复制
/opt/nifi-registry-0.3.0.1.1.0.0-172/bin/nifi-registry.sh start

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

http://192.168.0.150:18080/nifi-registry/

3.3 安装efm server

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

安装步骤:

•解压efm

代码语言:javascript
复制
tar -xzvf efm-1.0.0.1.1.0.0-172-bin.tar.gz -C /opt/

•配置文件conf/efm.properties

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

代码语言:javascript
复制
cp mysql-connector-java-5.1.48-bin.jar efm-1.0.0.1.1.0.0-172/lib/

•启动efm

代码语言:javascript
复制
/opt/efm-1.0.0.1.1.0.0-172/bin/nifi-registry.sh start

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

http://192.168.0.150:18080/nifi-registry/

3.4 安装minifi

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

安装步骤:

•解压minifi

代码语言:javascript
复制
/opt/efm-1.0.0.1.1.0.0-172/bin/nifi-registry.sh start

•配置conf/bootstrap.conf

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

•启动

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

  • 文档结束 2020-03-10
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档