请分享你的想法。
要求是在MySQL数据库中的数据迁移到的Hadoop / HBase的用于分析目的。
这些数据应被迁移实时或接近实时。 水槽可以支持这一点。
什么可以成为更好的方法。
请分享你的想法。
要求是在MySQL数据库中的数据迁移到的Hadoop / HBase的用于分析目的。
这些数据应被迁移实时或接近实时。 水槽可以支持这一点。
什么可以成为更好的方法。
直接回答你的问题是肯定的。 水槽设计成用于事件分布式数据传输和聚合系统/日志结构化数据。 如果设置了“正确”水槽可以在Hadoop的连续摄取推送数据。 这是当水槽设置正确地从各种渠道收集(在这种情况下,MySQL的)数据,我相信,如果数据是可用的源头,在水槽水槽将在毫秒级同步到HDFS。 一旦数据可在HDFS / HBASE您可以运行的查询就可以了,可以处理依赖于基础设施。
所以,我要说的水槽配置是近乎实时地将数据推送到HDFS非常重要的,然后剩下的就看你的Map / Reduce集群性能和查询如何针对数据写入正在处理中。
我还发现以下资源,让您使用水槽和HDFS明白: http://assets.en.oreilly.com/1/event/61/Real-time%20Streaming%20Analysis%20for%20Hadoop%20and%20Flume%20Presentation .PDF
据我了解水槽并不意味着为。 水槽是基本上用于读取日志等数据源(平坦的文件),并推动它们以结构化方式至水槽。 Sqoop可以使用的,尝试一下http://archive.cloudera.com/cdh/3/sqoop/SqoopUserGuide.html
事实上,水槽更多的是用来收集日志或其他时间序列数据。 几乎没有听说过人们用水槽从数据库到Hadoop的导入数据。
Sqoop也是很好的RDBMS批量导入到HDFS /蜂巢/ HBase的。 如果它只是一个时间的进口,这是非常好的,它做什么它承诺在纸面上。 但问题是当你想有实时增量更新。 两种类型的增量更新之间Sqoop支持:
追加,这个可以让你重新运行sqoop工作,每一个新的工作开始了最后的老工作的结束位置。 例如。 第一sqoop作业只进口0-100行,那么接下来的工作会从101基于--last值= 100开始。 但是,即使得到了0-100更新,追加模式将不包括他们了。
最后一次修改,这个人是恕我直言,更糟的是,它要求源表具有指示当行获取最新更新一个时间戳字段。 然后根据时间戳,它的增量更新导入。 如果源表中没有这样的事情,这个人是不是有用。
据我所知,有这个没有完美的解决方案,如果你更在乎实时,添加触发器或使用水槽扫描编辑日志,并保持你的HBase在RT时尚更新,这听起来很讨厌的,我知道。 或者使用Sqoop + Oozie的,定期导入源表HBase的,你不会有RT甚至接近RT响应。 到目前为止,由于没有别的身边,我会投票给水槽定制源。
您可以使用Hadoop的施放器的MySQL的产品,它可以在这里找到http://labs.mysql.com/
它传输从MySQL数据HDFS实时
我用水槽同时存储在HDSF和MySQL数据。 对于后者我用JDBC com.stratio.ingestion.sink.jdbc.JDBCsink 。 但我不是很满意它的表现。 既然你需要迁移从MySQL数据我建议使用Sqoop 。 另一种选择是使用水槽将数据同时发送到MySQL和HBase的/ Hadoop的,所以你就不必从MySQL复制到Hadoop的/