大数据干货:Apache NiFi介绍及使用体验

当我们决定把产品定位在企业市场时,因为企业的数据的多元化,数据经过整合后接入分析平台是很必要的。传统的办法是使用ETL来完成,而实际上我们期望这样的过程更加的平滑、可视,而且能跟hadoop生态圈,以及层出不穷的存储分析组件能对接起来。当看到Hortonworks的DataPlatform组件后,类似的产品概念更加清晰起来。Hortonworks是用NiFi做的,我们希望这样的数据传送平台,让我们从数据流动的维度,编排数据的处理过程,这种接近“万能”的工具就是工作流引擎。我们通过对NiFi从多个维度进行评价,以期在项目和产品中合理使用,提高数据转送的效率。

Apache NiFi 是一个web项目,安装部署好后,打开如上图的页面。可以通过拖拽的方式设置操作及节点和流程。

操作类型主要是Processor,NiFI提供的Processor有上百个,也支持自己封装新的Processor。Processor可以分为两大类

具体的功能性的Processor,比如putHDFS、ExecuteSQL、ConvertCSVToAvro

通用的Processor,可以在里面支持第三方的操作,比如ExecuteScript、ExecuteProcess

通过拖拽Processor,把操作拼接起来成为一个workflow。

下面是一个把PostgreSQL中一个表的数据导出到Apache HAWQ的过程。数据需要在HDFS缓存后,再load进HAWQ。

复杂的workflow可以保存成模板,以便以后复用。也可以封装Processor,Processor的开发基于maven进行,开发完成后放入NiFi的目录即可使用。

NiFi主要的特性有

Web-based user interface

Seamless experience between design, control, feedback, and monitoring

Highly configurable

Loss tolerant vs guaranteed delivery

Low latency vs high throughput

Dynamic prioritization

Flow can be modified at runtime

Back pressure

Data Provenance

Track dataflow from beginning to end

Designed for extension

Build your own processors and more

Enables rapid development and effective testing

Secure

SSL, SSH, HTTPS, encrypted content, etc...

Multi-tenant authorization and internal authorization/policy management

基于这些特性,我们主要从我们认为的产品生态方面,结合对Apache HAWQ的数据导入,对NiFi做了评估。

数据源的支持功能

ETL的功能

性能

实际项目中的使用场景

功能的扩展

离线文件导入数据库

以NiFi将文件写入HDFS然后执行SQL使用pxf插件进行数据导入。测试时在处理超过2GB的文件时会发生SQL执行超时报错,需要通过将文件进行预分割进行处理。

从数据库导入数据

通过NiFi将源数据库数据导出为avro格式并写入HDFS,然后使用HAWQ的pxf插件进行导入。源表过大时NiFi会发生栈空间不足,处理能力约在单表5000万条记录左右。

聚合等预处理的支持

NiFi自身没有对聚合计算提供processor,但可以通过自定义processor或调用脚本进行处理。

错误处理

没有健全的容错处理和重试机制。以Apache HAWQ的场景为例,所有数据导入都是通过外部表挂载,然后insert into table select * 的方式进行导入的,并且每个流程只能对单张表进行数据操作。在发生数据类型不匹配等错误时,当前处理的所有数据都会被丢弃,并且ExecuteSQL这个processor会留下报错的log。需要通过后续的更新配置进行重试。

NiFi的Cluster

NiFi支持cluster的方式并行执行workflow。无需配置主从,节点会自动进行选举。web页面访问任意节点均可,Dashboard会在所有节点间同步。使用资源可以监控,包括每个节点的uptime,queue资源,系统cpu信息,jvm信息,磁盘使用状况。但是只能进行监控不能进行调度,能够操作的只有将某个节点从cluster中断开。cluster模式下对于一些调用了本地文件的操作,比如getfile和puthdfs,需要所有节点在相同位置有同样的文件,否则processor无法运行。

第三方库的使用

NiFi是个运行框架,功能可以扩展。

分两种情况:

1)执行脚本,可以通过ExecuteScript直接对FLowFile进行处理,支持Clojure、Groovy、lua、python、ruby

2)直接调用服务器上的可执行文件,通过ExecuteProcess即可。

与Kettle协作

NiFi对ETL的支持非常有限,有一个美好的想法是用专业的ETL工具跟NiFi这种流转引擎协作使用。遗憾的是NiFi无法与Kettle直接结合使用,但是可以通过预先编写好Kettle的ktr转换文件,然后通过processor进行调用。

使用场景

1)在我们工业大数据平台项目中,NiFi可以做到整体替代Flume的作用,并且配置上较Flume相对更为简单,读取文件后可以直接将文件作为kafka的message发送。此外在替代Streaming组件直接进行数据文件解析并存入数据库这方面,理论上是可行的,但是处理能力有待验证,并且上述文件采集的具体性能也需要进行大量文件的实际验证。

2)在我们的金融数据仓库中,试用了两种更新策略,一是本地更新时同时保存一份增量csv数据文件,然后以离线数据文件方式导入;二是以增量表方式更新,原有数据库更新时的增量表不进行即时删除,而是待HAWQ同步完成后再行删除,使用NiFi是可以完成的。

UI的改造开发

NiFi的界面有些编程风格,需要有工程师习惯的人才好接受。是作为项目交付中的一个工具,还是作为一个开放的可配置的工作台,对交互的要求是不一样的。官方文档里提及了可以制作自定义UI,如果想改造,需要不少的二次开发的工作。

关于NiFI的使用案例

NiFi虽然是Apache的顶级项目了,实际用的人不多。在NiFi的官网上,给出了一些使用NiFi的公司,数量还比较少,也不是以案例分享的方式。另外在Github上,NiFi活跃度还不够。

总体来说,Apache NiFi是一个让人耳目一新的数据平台工具,在实际项目中,可以从数据流动的视图来定义开发流程。由于在实时处理和容错可靠性上有些不确定,目前判断适合在中小型项目中使用。我们会在后续的工作中,加深对NiFi的使用场景的理解。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容