2

我有一个负载很重的大型 mySQL 数据库,并且想将此数据库中的数据复制到 Hbase 以便对其进行分析工作。

编辑:我希望数据能够相对快速地复制,并且没有任何架构更改(没有时间戳行等)

我读过这可以使用flume来完成,mySQL作为源,可能是mySQL bin日志,Hbase作为接收器,但没有找到任何细节(高级或低级)。完成这项工作的主要任务是什么?

之前提出并回答了类似的问题,但并未真正解释如何或指向以下资源:

Flume 将数据从 MySQL 迁移到 Hadoop

从 mysql 到 Hbase 的持续数据迁移

4

2 回答 2

1

到目前为止,有三个选项值得考虑:

  1. Sqoop:初始批量导入后,支持两种增量更新导入:APPEND、LAST-MODFIED。但话虽如此,它不会为您提供实时甚至接近实时的复制。这不是因为 Sqoop 不能运行得那么快,而是因为您不想将 Sqoop 管道插入到您的 Mysql 服务器并每 1 或 2 分钟提取一次数据。
  2. 触发器:这是一个快速的解决方案,通过将触发器添加到源 RDBMS,并据此更新您的 HBase。这个给你实时的满足感。但是你必须通过添加触发器来搞乱源数据库。作为临时解决方案可能没问题,但从长远来看,它是行不通的。
  3. Flume:这个,你需要付出最大的开发努力。它不需要接触数据库,也不需要向数据库添加读取流量(它会跟踪事务日志)。

就我个人而言,我会选择水槽,它不仅将数据从 RDBMS 引导到您的 HBase,而且当它们通过水槽管道流式传输时,您可以对数据进行处理。(例如转换、通知、警报等)

于 2013-08-19T06:59:43.153 回答
1

恕我直言,您最好为此目的使用SQOOP 。它正是为此目的而开发的。Flume 是为一个完全不同的目的而设计的,比如聚合日志数据、传感器生成的数据等。

有关更多详细信息,请参阅内容。

于 2013-07-09T06:17:23.347 回答