flume将数据从mysql迁移到hadoop

u4vypkhs  于 2021-06-04  发布在  Flume
关注(0)|答案(5)|浏览(603)

请分享你的想法。
为了便于分析,需要将mysql数据库中的数据迁移到hadoop/hbase。
数据应实时或接近实时地迁移。Flume可以支持这一点。
什么是更好的方法。

ikfrs5lh

ikfrs5lh1#

事实上,flume更多地用于收集日志或其他时间序列数据。很少听说有人使用flume将数据从db导入hadoop。
sqoop非常适合从rdbms批量导入到hdfs/hive/hbase。如果只是一次进口,那就很好了,照纸上承诺的做。但当你想要实时增量更新时,问题就来了。在两种类型的增量更新之间,sqoop支持:
append,这个允许您重新运行sqoop作业,并且每个新作业从上一个旧作业结束的地方开始。例如,第一个sqoop作业只导入第0-100行,然后下一个作业将从101开始,基于--last value=100。但是即使0-100更新了,附加模式也不会再覆盖它们。
最后一次修改,这个更糟,它要求源表有一个timestamp字段,它指示行最后一次更新的时间。然后根据时间戳进行增量更新导入。如果源表中没有类似的内容,那么这个就没有用了。
好吧,没有完美的解决方案,如果你更关心实时性,添加触发器或使用flume扫描编辑日志并以rt方式更新hbase,我知道这听起来很糟糕。或者使用sqoop+oozie,定期将源表导入hbase,就不会有rt甚至近rt响应。到目前为止,考虑到周围没有其他东西,我会投票给flume自定义源代码。

cczfrluj

cczfrluj2#

你的问题的直接答案是肯定的。flume是一个分布式的事件/日志结构数据传输和聚合系统。如果设置“正确”,flume可以在hadoop中推送数据以进行连续摄取。当flume被正确地设置为从各种源(在本例中是mysql)收集数据时,我确信如果数据在源位置可用,那么flume中的sink将以毫秒级别将其同步到hdfs。一旦数据在hdfs/hbase上可用,您就可以对其运行查询,并且可以根据基础结构进行处理。
因此,我想说flume配置对于将数据以近乎实时的方式推送到hdfs是非常重要的,其余的取决于map/reduce集群的性能以及如何编写与正在处理的数据相关的查询。
我还找到了以下资源供您了解如何使用flume和hdfs:http://assets.en.oreilly.com/1/event/61/real-time%20streaming%20analysis%20for%20hadoop%20and%20flume%20presentation.pdf

o7jaxewo

o7jaxewo3#

我使用flume在hdsf和mysql上存储数据。对于后者,我使用jdbc com.stratio.ingestion.sink.jdbc.jdbcsink。但我对它的性能不是很满意。既然您需要从mysql迁移数据,我建议您使用sqoop。另一个选择是使用flume将数据发送到mysql和hbase/hadoop,这样就不需要从mysql复制到hadoop/

9ceoxa92

9ceoxa924#

你可以使用hadoopapplier的mysql产品,可以在这里找到http://labs.mysql.com/
它将数据从mysql实时传输到hdfs

kh212irz

kh212irz5#

据我所知,Flume并不是用来做这个的。flume基本上用于读取类似日志的数据源(平面文件)并以结构化的方式将它们推送到接收器。sqoop很有用,试试看http://archive.cloudera.com/cdh/3/sqoop/sqoopuserguide.html

相关问题