往hbase插入數據,你會選擇哪種?


   好久,好久沒有寫個博客了,自從上次封閉開始,到“自閉”,有了一段時間了,哈哈^_^ 、 

   多虧了雲桌面的歇菜, 一下午啥都干不了, 突然想到,好久沒有寫點啥了,就寫的,讓時間流走有點痕跡吧 _(:з」∠)_

    之前,做過一個小工具,就是將一個文件中的數據,插入的hbase中, 將其簡單闡述一番,多少記一點吧,要不在過一段時間都忘了。

    

  插入到hbase中,有很多中選擇,java的方式是可以的,但是做一個腳本,沒有必要,操作起來不方便,還得編譯,.... ,  

   選擇shell或python的方式,是個方便的選擇,反正是個小工具,有可能會隨時調整 ,而且linux是自帶的Python環境

   要用Python腳步的方式插入到hbase,參考hbase的官方文檔。

   查看hbase Reference Guide, 里面介紹內容很多,包括很多入門操作說明等。
   本次,主要是查看了如何更好的利用Python腳步插入到hbase中。
   由於hbase是java寫的,要用Python去執行查詢插入數據到hbase中,是有兩種方式走,

  • 一種是利用thrift的方式,作為python和java中間翻譯層,進行操作hbase的方式;
  • 還有個方法,就是用Python包裝一層linux shell方式, 用hbase shell的方式操作hbae。

     由於要用thrift方式,是需要開啟服務,需要往Python安裝其他第三方類庫,增加運維人員負擔,最后嘗試后采用第二中方法。

 

   用hbase shell 的方式,

  1. 使用Hbase Put API
  2. 使用Hbase批量加載工具
  3. 自定義的MapReduce job

   這幾種HBase數據導入方式(不推薦使用)
   理由:

  • 這三種方式都涉及到Put內置,大多數數據遷移到hbase場景,目前只是簡單直接獲取表結構和插入數據,使用單線程,這種效果非常慢,還得自己去寫多線程完成,這樣還是增加工作量和復雜度。

   最后,查詢官方文檔后,得知ImportTsv是HBase官方提供的基於Mapreduce的批量數據導入工具。
   同時ImportTsv是Hbase提供的一個命令行工具,可以將存儲在HDFS上的自定義分隔符(默認\t)的數據文件,通過一條命令方便的導入到HBase表中,對於大數據量導入非常實用。
   這種方式,是將要插入數據寫放到HDFS上,這樣保證數據不丟失,多份數據,然后開啟MapReduce的方式,插入到hbase。當執行10w條數據插入沒有問題,但100w的數據插入就會出現丟失情況。
解決方案是先用ImportTsv生成HFile,然后在用bulkload 的方式將HFIle導入到hbase的里面。

 

總結:
多看hbase的官方文檔,但也要多搜索一下國內大牛寫的博客,畢竟有人實際過,少嘗試一些方法。

   

若您看到后,會用什么方式,可以留言討論。

O(∩_∩)O哈哈~ 剛看了一下,雲桌面好了,干活了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM