Hbase插入事項

2021-06-07 00:48:08 字數 980 閱讀 9965

人生的第一篇部落格,寫這些,主要是為了以後看自己曾今的影子。

作為一名hbase的初學者,我就是乙個菜鳥,十成十的菜鳥,好了,說下hbase插入時注意的事項。

hbase的插入非常的簡單,獲取htable,建立put,使用htable.put(put),完事,api就是這麼簡單,但插入時要提公升效率,需要注意的事項有:

1.建立hbase的表時注意使用pre-creating,在類hbaseadmin上,這些在apache的官網上有詳細的例子,使用的原因?就是預先建立一些region,當資料插入時,分散到預先建立的region上,避免一直寫入乙個region,導致split和compact的高觸發,降低效率。

2.如果是文字資料,記得使用htable.setautoflus(false),然後呼叫htable.setwritebuffersize()設定在客戶端快取資料的大小。這麼做的好處就是如果單條就上傳到hbase伺服器,io流增多匯出效率變慢,而快取到幾m或幾十m的時候再一次提交,效率提公升非常明顯。當然,這有個風險,當你的客戶端在插入時忽然間蕩掉了,你快取在客戶端的資料也就丟失了。

3.可以使用put.setwritetowal(false)使habse寫入時不寫入日誌,可以稍微提公升效率 ,但導致的結果就是沒有日誌,hbase服務蕩掉後尚未寫入的資料會丟失。

4.最後,我想說的是,即便這些都配置對了,但硬體條件不行的話,寫入還是非常慢的。作為乙個菜鳥,我就碰到了這樣乙個問題,原先我是用的api插入方式都是對啊,但資料插入奇慢無比,對比網上的那個測試資料,動輒1w/s的插入效率,100/s的插入效率實在是不能見人,由於效能相差太多,我只是考慮**api方面有沒有不恰當的地方,根本沒忘硬體方面考慮。原先我是在自己的開發機器上網hbase裡插入資料的,由於網路頻寬和其他種種原因,導致寫入100/s都無法達到,後來我將插入的服務移到自己的hadoop集群上進行插入,可以達到1k/s的效率,最後,到現場開發環境中測試,我可以達到1w/s的插入效率,我是同時插入1張主表和3張索引表的,總體效果滿意。所有說,對於插入方面的,除了**,還有硬體

Hbase 建立,插入,查詢

1.gang建立表 create user info 表名為user 有乙個列族為 info 2.檢視表 describe user 3.插入資料 put user 1 info age 20 put user 1 info name zhangsan 4.瀏覽表 scan user 5.檢視所有表...

HBase插入資料程式設計

0 概述 1 資料通過put物件進行傳送,每put一次傳送一次,傳送時以mutator形式,2 每次傳送都將物件封裝成linkedlist,再進行一次flush,即一次rpc通訊 1 每次put一條資料 public void putdata1 throws exception 關閉資源 table...

HBase表百萬資料插入

寫前日誌個人理解是一種安全回滾機制,若機器在執行操作過程中機器宕機需要回滾的話,需要讀取寫前編輯日誌進行資料回滾,防止資料的丟失,此處關閉的話為了提公升效率,看業務場景,不是很重要的話可以選擇關閉來提高插入效率。put物件呼叫setwritetowal false 緩衝區入開啟,緩衝區存在資料,資料...