2016-03-09 25 views
1

目前我在將數據從mysql同步到hbase期間遇到問題,我需要從mysql到hbase的近實時數據同步,並且我需要將多個mysql表合併到一個hbase數據同步期間的表。從mysql到Hbase的近實時同步

我試過sqoop看起來不能滿足我們的要求。

那麼是否有任何現有的工具/庫可用於我的情況,或任何其他解決方案,我可以用火花嘗試。

+0

您能提供一些關於sqoop不符合您的要求的細節嗎? – Rachel

+0

感謝您的時間,例如第一:我有一個表A和表B,它具有一對多的關係,我想將它們合併到hbase表中的一個表C中(應該是連接的記錄)。第二:Sqoop基於批處理,這不是一個接近實時的解決方案,我們希望表A和B中的任何新記錄,我們希望這個記錄立即同步到Hbase表C. – user1330526

回答

2

考慮在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生態系統的全面集成,因此它將與您當前的分析堆棧完美整合。

+0

你有沒有關於鳳凰加入的經驗,看起來像是多表加入,鳳凰表現不好? – user1330526

+0

默認情況下,Phoenix使用散列連接,要求數據適合內存。如果遇到問題(具有非常大的表),可以增加分配給Phoenix的配置(配置設置)或設置查詢「提示」(即「SELECT/* + USE_SORT_MERGE_JOIN */FROM ...」)使用不具有相同要求的排序合併聯接。他們計劃在未來自動檢測理想的連接算法。另外,Phoenix僅支持一部分連接操作。 – kliew