當前位置:
首頁 > 最新 > HBase 數據導入功能實現方式解釋

HBase 數據導入功能實現方式解釋

預備知識:啟動 HBase

清單 1. 修改 hosts 文件

[root@node1:2 hbase-0.96.1.1-cdh5.0.1]# cat /etc/hosts

10.17.139.186 node1

10.17.139.185 scheduler2

...

向 HBase 導入數據

注意:本文代碼基於 HBase0.94 版本。

數據導入到 HBase,我們必須考慮分散式環境下的數據合併問題,而數據合併問題一直是 HBase 的難題,因為數據合併需要頻繁執行寫操作任務,解決方案是我們可以通過生成 HBase 的內部數據文件,這樣可以做到直接把數據文件載入到 HBase 資料庫對應的數據表。這樣的做法寫入 HBase 的速度確實很快,但是如果合併過程中 HBase 的配置不是很正確,可能會造成寫操作阻塞。目前我們常用的數據導入方法有 HBase Client 調用方式、MapReduce 任務方式、Bulk Load 工具方式、Sqoop 工具方式這四種。下面的文章內容會逐一展開講解。

下面的幾種方式都可以通過 HFile 的幫助做到快速數據導入,我們首先在這裡先給出生成 HFile 的 Java 代碼,後面各個方法內部再按照各自方式插入 HFile 文件到 HBase 資料庫。代碼如清單 4 所示。

Client API 方法

使用 HBase 的 API 中的 Put 方法是最直接的數據導入方式,如清單 3 我們就是採用 HBase 自帶的 Shell 工具,調用 put 命令插入了幾條數據作為演示。該方式的缺點是當需要將海量數據在規定時間內導入 HBase 中時,需要消耗較大的 CPU 和網路資源,所以這個方式適用於數據量較小的應用環境。

使用 Put 方法將數據插入 HBase 中的方式,由於所有的操作均是在一個單獨的客戶端執行,所以不會使用到 MapReduce 的 job 概念,即沒有任務的概念,所有的操作都是逐條插入到資料庫中的。大致的流程可以分解為 HBase Client--->HTable---->Hmastermanager/ZK(獲取-root-,--meta--)------>HregionServer----->Hregion------>Hlog/Hmemstore----->HFile。即 HBase Client 調用 HTable 類訪問到 HMaster 的原數據保存地點,然後通過找到相應的 Region Server,並分配具體的 Region,最後操作到 HFile 這一層級。當連接上 HRegionServer 後,首先獲得鎖,然後調用 HRegion 類對應的 put 命令開始執行數據導入操作,數據插入後還要寫時間戳、寫 Hlog,WAL(Write Ahead Log)、Hmemstore。具體實現代碼如清單 5 所示,在代碼中我們嘗試插入了 10 萬條數據,列印出插入過程消耗的時間。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 麥克叔叔每晚10點說 的精彩文章:

TAG:麥克叔叔每晚10點說 |