NiFi vs StreamSets(SDC)
Posted on 2019-01-07 |
Symbols count in article: 2.3k | Reading time ≈ 0:02
前面几篇文章分别介绍了 NiFi 和 StreamSets Data Collector (以下简称 SDC) 在一些场景下的使用配置,本文从几个维度简单对比这两个开源的DFM (Data Flow Management) 产品
数据流的定义
作为一款数据流处理平台,灵活的定义和管理数据流是最基本的能力
NiFi 的核心是对 Flowfile 生命周期的管理,核心组件 Processor、Flowfile Repo、FlowContent Repo、Data provenance 都是为其提供服务
在 NiFi 中,Processor 会对 Flowfile 进行 route、copy、modify、terminate 等操作,来完成对流式数据的管理,对不同状态的 Flowfile 都可以分出不同的数据流去处理
转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消
而 SDC 没有 NiFi 那么灵活,首先 SDC 中限定了 Processor 的类型
SDC 中只有以下几种类型的 Processor
- Origin:数据源,用来生产数据
- Processor:数据转换
- Destination:消费数据
- Executor:处理特定事件、如发邮件
SDC 规范了 Processor 的类型,所以不如 NiFi 那么灵活,比如 一个 Pipeline 中只能定义一个数据源
其次,SDC 中只能对处理出错的数据流做处理,并且无法细分错误,而 NiFi 中可以把不同状态的数据流路由到其他 Processor 去做进一步处理,比如 DebugFlow、或者错误日志、Elasticsearch 等
另外,在 NiFi 中可以随时关闭上下游的数据流来更改配置,灵活调试,而 SDC 中只能将整个 Pipeline 停止后才能更改配置,并且 NiFi 可以配置 Processor 连接的队列进行限流,以防上层流量爆发式增长造成后端系统发生故障
NiFi 可以通过 Data provenance 追溯每一条流式数据的内容、状态
转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消
而 SDC 虽然可以通过图表来展示 Processor 的流量状态,但无法查看数据,调试起来很麻烦
转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消
NiFi 中可以全局定义 JDBC、SSL 证书、Schema,数据流,并可以复用这些配置,而 SDC 中无法这样做,对于单个 Processor 只能单独配置
综上所诉,我认为 NiFi 在数据流的定义和管理上比 SDC 灵活很多
用户和权限管理
用户认证方面,NiFi 和 SDC 都支持外部认证,但是 SDC 只支持 LDAP,而 NiFi 不仅支持 LDAP 还支持 Kerberos、OpenID、Knox 等
而权限管理方面,SDC 是 RBAC(基于角色的访问控制),最小权限单位为 Pipeline,赋予角色对 Pipeline 的权限,角色可以赋予组和用户,从而实现细分用户对 Pipeline 的访问控制
NiFi 的权限控制就灵活了很多,最小可以赋予用户和组对单个 Processor 的管理
综上所诉,我认为 NiFi 在用户和权限管理上比 SDC 灵活很多
数据流监控和告警
监控能够及时地发现数据流的瓶颈和问题所在,NiFi 中只能够查看 Flowfile 的状态和内容,报警的话可以单独将错误事件流发送到特定的 Processor 做处理,而 SDC 中能够查看进出数据流的图表,并针对 Processor 设定规则并发送告警邮件
监控和告警方面,NiFi 和 SDC 各有优劣,数据流的汇总报表上,SDC 更胜一筹,而在告警方面,我认为 NiFi 更加灵活
集群部署
NiFi 支持集群部署,可横向扩展集群的数据处理能力, 同时在多个节点上运行 Processor,而 SDC 不支持集群部署,支持集群模式运行,所谓集群模式就是指使用批处理模式运行特定的 Processor,就是把特定作业提交给 Yarn、Mesos 集群,具体可以看官方文档的介绍 Cluster Pipeline Overview
在集群部署方面,NiFi 横向扩展能力很强,但是 SDC 虽然不支持集群部署,但是也可以通过商用版本的 Hub 提供多节点处理数据的能力
其他
通过以上几个方面的对比,显然 NiFi 比 SDC 更胜一筹
但 SDC 只是 StreamSets 的一个产品,通过 SDC Edge、SCH 等产品,可以构建出一个边缘计算处理平台,只靠 NiFi 是无法做到的
而在与大数据管理平台的集成上, NiFi 与 HDP 的集成较好,而 SDC 与 CDH 的结合紧密
毕竟本篇文章只是对比 NiFi 和 SDC 同为一个 DFM(DataFlow Management) 的优劣,所以 NiFi 比 SDC 更加优秀
参考资料
- Apache Nifi vs StreamSets简单比较 https://blog.csdn.net/ffjl1985/article/details/81391333
- https://ask.streamsets.com/question/1683/how-we-can-setup-sdc-multi-node-cluster/
- https://streamsets.com/documentation/datacollector/3.4.0/help/datacollector/UserGuide/Cluster_Mode/ClusterPipelines.html#concept_hmh_kfn_1s