【问题标题】:Near real time sync from mysql to Hbase从 mysql 到 Hbase 的近实时同步
【发布时间】:2017-11-12 10:40:26
【问题描述】:

目前我在将数据从mysql同步到hbase的过程中遇到了一个问题,我需要从mysql到hbase的近乎实时的数据同步,并且我需要在数据同步期间将多个mysql表合并到一个hbase表中。

我试过 sqoop 好像不能满足我们的要求。

那么是否有任何现有的工具/库可以用于我的案例,或者我可以尝试使用 spark 的任何其他解决方案。

【问题讨论】:

  • 您能否详细说明为什么 sqoop 不符合您的要求?
  • 感谢您的宝贵时间,例如首先:我有一个表A和表B,它们有一对多的关系,我想将它们合并到hbase表中的一个表C中(应该成为连接的记录)。第二:Sqoop 是基于批处理的,不是近乎实时的解决方案,我们希望表 A 和 B 中的任何新记录,我们希望此记录立即同步到 Hbase 表 C。

标签: mysql apache-spark hbase sqoop


【解决方案1】:

考虑在 HBase 上使用 Apache Phoenix。它将为您提供对存储在 HBase 中的数据的低延迟 SQL 查询(因此它适用于 OLTP 并且易于用于 OLAP),因此您不必担心同步。它还具有 NoSQL 功能,例如在查询时动态添加列的能力。

为了满足您的用例,您可以为 OLTP 运行 Phoenix,并在只读副本上运行 Phoenix 的第二个实例来为 OLAP 运行表连接。

http://www.cloudera.com/documentation/enterprise/5-4-x/topics/admin_hbase_read_replicas.html

Secondary replicas are refreshed at intervals controlled by a timer (hbase.regionserver.storefile.refresh.period), and so are guaranteed to be at most that interval of milliseconds behind the primary RegionServer.

此解决方案可满足您对 OLTP、OLAP 和近实时同步的要求,同时为您的事务数据库提供 MySQL 无法轻松实现的可扩展性。 Apache Phoenix 还提供与 Hadoop 生态系统的完全集成,因此它将与您当前的分析堆栈很好地集成。

【讨论】:

  • 你有phoenix join的经验吗,貌似多表join,phoenix表现不好?
  • 默认情况下,Phoenix 使用散列连接,要求数据适合内存。如果遇到问题(使用非常大的表),您可以增加分配给 Phoenix 的内存量(配置设置)或设置查询“提示”(即SELECT /*+ USE_SORT_MERGE_JOIN*/ FROM ...)以使用没有的排序合并连接相同的要求。他们计划在未来自动检测理想的连接算法。此外,Phoenix 仅支持一部分连接操作。
猜你喜欢
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 2016-03-31
  • 2012-02-09
  • 2016-02-10
  • 1970-01-01
相关资源
最近更新 更多