解决方案:数据采集中间件技术对比V1.0

优采云 发布时间: 2020-11-29 09:18

  数据采集中间件技术比较V1.0

  1前言

  大数据平台通常包括以下步骤:

  数据采集->数据存储->数据分析->数据显示(可视化,报告,监视等)

  数据采集是非常重要的部分。大数据采集的任务还具有许多特征,例如:数量大,数据源的多样性,快速变化,确保正确的数据以及避免数据重复。

  在这里,我们研究了几种常用的大数据采集中间件:datax,水槽,鱿鱼,运河,麦克斯韦,nifi和水壶。

  以下将从多个方面比较7种中间件。为了根据各种数据采集的需求选择更合适的工具。

  此外,这里有一些主要工厂的做法示例可供参考。

  2个数据采集中间件比较

  此处不再重复特定的安装和使用步骤。有关详细信息,请参阅相应的技术实践文档。

  2.1受支持的数据源

  数据采集中间件的一个更重要的功能是它支持的数据源。

  flume:flume支持的数据源通常是文件或目录,例如用于接收单个文件的单点采集; TailDIR监视目录; sqoop:Sqoop支持的数据源通常是RMDB,例如mysql,oracle,hive和hdfs等。 datax:datax还支持关系数据库canal:Canal原则上是伪奴隶,因此它基本上仅支持启用了binlog的mysql; maxwell:与运河相同,仅支持启用了binlog的mysql; nifi:Nifi接口操作,只要可以在处理器中搜索数据格式就可以支持。例如,mysql和kafka。 Kettle:在Kettle的实践文档中,您可以看到Kettle支持的数据源非常多样化,例如:文本,数据表,CSV,hbase,msyql,hdfs等。 2.2支持的数据格式

  综合分析2.1,然后查看这些中间件支持的数据格式:

  flume:支持文件格式。 avro,thrift,exec,jms,假脱机目录,netcat,序列*敏*感*词*,syslog,http,legacy; sqoop:由于RMDB和HDFS的限制,仅支持hdfs中的SQL表和结构化数据; Datax:SQL也与sqoop或hdfs文件通道相同:输入数据仅支持mysql binlog,输出文件可以自定义; maxwell:输入文件格式也为binlog,但输出格式也受限制,即json。有关详细信息,请参阅maxwell的实践文档。 nifi:支持所有可以在处理器界面中搜索的文件格式,例如csv,db,文本,kafka数据等;水壶:还支持所有可以在trans中搜索的文件格式,例如Habse表,mysql表,文本,CSV等。2.3支持的上下游中间件

  在讨论了数据源和文件格式之后,我们来比较一下受支持的上游和下游插件。毕竟,大数据正在蓬勃发展,并且有许多中间件。还有一个更具竞争力:

  flume:由水槽上游和下游支持的中间件是常用的hdfs和hbase; sqoop:sqoop上游和下游支持的中间件是常用的mysql,oracle,hdfs; datax:支持的上游和下游类似于sqoop运河:上游运河仅支持mysql(MariaDB),下游中间件可以定制,一般为Kafka; maxwell:像运河上游仅支持mysql,但不能自定义,仅支持kafka等; nifi:支持许多上游和下游中间件kafka; Kettle:它还支持许多中间件,例如mysql,hbase,hdfs等。2.4任务监视通道:Ganglia第三方插件监视; oop datax:需要额外部署datax-web。官方附带运河:没有;麦克斯韦:无; nifi:带有界面的可视监视;电水壶:带有界面的可视监控。 3 MYSQL的BINLOG日志工具分析:CANAL,MAXWELL

  参考链接:

  此文章比较运河,麦克斯韦和其他两个binlog日志分析工具。这里只挑相关部分看。首先是介绍运河的原理,其实麦克斯韦的原理是一样的:

  

  由于运河和麦克斯韦之间有太多相似之处,我将直接给出比较结果:

  

  4个Youzan大数据:FLUME数据采集服务的最佳做法

  参考链接:

  文章主要写了大数据Flume 采集架构的演变和性能优化:

  

  这是该体系结构的第一个版本,使用NsqSource和FileChannel来hdfsSink;

  

  在第二个版本中,出于考虑FileChannel故障的原因,使用了扩展的NsqSourceChannel。优点是:

  •每条消息的传递仅需要一笔交易,而不是两次,因此性能更好。

  •避免引入新的kafka服务,减少资源成本,同时保持架构更简单,更稳定。

  5个基于NIFI + SPARK STREAMING 采集的流媒体

  参考链接:

  本文使用NiFi + Spark Streaming的技术方案为各种外部数据源设计通用的实时采集处理方法。

  

  此解决方案使用NiFi处理采集数据,然后通过Spark Streaming流引擎,将采集数据按指定进行转换,并生成新数据并将其发送到Kafka系统以用于后续服务或流程,例如Kylin Streaming模型的构建。

  基于OGG和SQOOP的6 TBDS访问解决方案系列-SQOOP和腾讯大数据套件TBDS集成示例的介绍

  参考链接:

  此案例介绍了一种场景,其中Sqoop用于将数据从Oracle脱机导入到腾讯的大数据套件TBDS中的Hadoop和Hive组件。

  文章很长,基本上是sqoop的一些常用用法,已导入hdfs和hive中。核心命令是sqoop import:

  

  7使用KETTLE进行SQLSERVER和ORACLE之间的数据迁移实践

  参考链接:

  此案例主要在某些技术实现中引入了将SQL Server中的数据导出到Oracle。任务视图如下:

  

  分别在表输入和表输出中配置SqlServer和Oracle的连接信息。

  8总结

  以下是这些数据采集中间件的特征的简要摘要。

  根据它们的特征,我将这6种中间件分为3类:Canal和Maxwell都用作Binglog同步工具; Kettle和Nifi都是界面可视化操作。 Flume和Sqoop是命令行操作。将它们放在一起进行比较并比较每个都有自己的特点,但是根据目的进行比较非常好:

  flume:文件采集;

  sqoop:将RMDB转换为hdfs / hive / hbase文件采集,或将hdfs反向转换为RMDB导出;

  canal / maxwell:实时监视mysql增量数据,不同之处在于maxwell直接将json输出到kafka;运河必须解析,但是它有点灵活;

  水壶/ nifi:两者都是可视界面的拖放操作,但是实现的功能不同。 Kettle比ETL操作更强大,Nifi的优势在于数据流采集。

  说到这里,基本上各自的应用场景都非常清楚,但是flume和Nifi似乎都比文件采集好。但是重点有所不同。 Flume没有可视界面。其操作全部在flume / conf /下的配置文件中。尽管只有源/通道/*敏*感*词*,但采集更灵活。根据处理器中的选项选择Nifi 采集的配置。

  最后,根据比较总结一下这6种中间件的适用场景:

  flume:适用于复杂文件采集; sqoop:适合将RMDB传输到大数据平台的其他中间件,例如hdfs / hive / hbase; datax:与sqoop非常相似,但在各个方面都比sqoop强。有一种趋势是替换鱿鱼。渠道:适用于mymql增量数据的实时同步,可以支持格式和输出多样化; maxwell:适用于将mysql增量数据快速实时同步到kafka; Nifi:适合简单的文件流操作,是的简单的视觉界面,学习成本低;水壶:适合复杂的ETL操作,并具有可视界面,易于操作。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线