預設情況下,在建立hbase表的時候會自動建立乙個region分割槽,當匯入資料的時候,所有的hbase客戶端都向這乙個region寫資料,直到這個region足夠大了才進行切分。一種可以加快批量寫入速度的方法是通過預先建立一些空的regions,這樣當資料寫入hbase時,會按照region分割槽情況,在集群內做資料的負載均衡。
命令方式:
create 『t1』, 『f1』,
也可以使用api的方式:
bin/hbase org.apache.hadoop.hbase.util.regionsplitter test_table hexstringsplit -c 10 -f info
引數:test_table是表名
hexstringsplit 是split 方式
-c 是分10個region
-f 是family
這樣就可以將表預先分為15個區,減少資料達到storefile 大小的時候自動分割槽的時間消耗,並且還有以乙個優勢,就是合理設計rowkey 能讓各個region 的併發請求平均分配(趨於均勻) 使io 效率達到最高,但是預分割槽需要將filesize 設定乙個較大的值,設定哪個引數呢, hbase.hregion.max.filesize 這個值預設是10g 也就是說單個region 預設大小是10g,
這個引數的預設值在0.90 到0.92到0.94.3各版本的變化:256m–1g–10g
但是如果mapreduce input型別為tableinputformat 使用hbase作為輸入的時候,就要注意了,每個region乙個map,如果資料小於10g 那只會啟用乙個map 造成集群很大的資源沒有利用,這時候可以考慮適當調小該引數的值,或者採用預分配region的方式,並將檢測如果達到這個值,再手動分配region。
alter
使用方法:
如 修改壓縮演算法
disable 'table'
enable 'table'
但是需要執行major_compact 『table』 命令之後 才會做實際的操作。
describe 『table』 這個命令檢視了create table 的各項引數或者是預設值。
HBASE 預分割槽建表
在create乙個表時如果不指定預分配region,則缺省會先分配乙個region,這樣在大資料並行載入時效能比較低,因為所有的資料都往乙個region灌入,容易引起單節點負載公升高,從而影響入庫效能,乙個好的方法時在建立表時預先分配數個region。方法有兩種,主要針對不同版本可供選擇。1.使用r...
HBase 建表API使用
string table table configuration conf hbaseconfiguration.create connection conn connectionfactory.createconnection conf admin admin conn.getadmin 刪除指定...
HBase的高表和寬表
hbase中的寬表是指很多列較少行,即列多行少的表,一行中的資料量較大,行數少 hbase中高表是指很多行較少列,即行多列少,一行中的資料量較少,行數大。hbase的row key是分布式的索引,也是分片的依據。hbase的row key column family column qualifier...