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

   很久,很久沒有寫個博客了,自從上次封閉開始,到「自閉」,有了一段時間了,哈哈^_^ 、 java

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

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

    

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

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

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

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

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

     因爲要用thrift方式,是須要開啓服務,須要往Python安裝其餘第三方類庫,增長運維人員負擔,最後嘗試後採用第二中方法。工具

 

   用hbase shell 的方式,大數據

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

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

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

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

 

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

   

若您看到後,會用什麼方式,能夠留言討論。

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

相關文章
相關標籤/搜索