1. 程式人生 > >HBase(09)——HBase 建表高階屬性

HBase(09)——HBase 建表高階屬性

hbase 表預分割槽----手動分割槽

 預設情況下,在建立HBase表的時候會自動建立一個region分割槽,當匯入資料的時候,所有的HBase客戶端都向這一個region寫資料,直到這個region足夠大了才進行切分。一種可以加快批量寫入速度的方法是通過預先建立一些空的regions,這樣當資料寫入HBase時,會按照region分割槽情況,在叢集內做資料的負載均衡。

命令方式: create ‘t1’, ‘f1’, {NUMREGIONS => 15, SPLITALGO => ‘HexStringSplit’} 也可以使用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。

壓縮演算法

COMPRESSION 預設值是NONE 即不使用壓縮 這個引數意思是該列族是否採用壓縮,採用什麼壓縮演算法 使用方法: create ‘table’,{NAME=>‘info’,COMPRESSION=>‘SNAPPY’} 建議採用SNAPPY壓縮演算法 。 如果建表之初沒有壓縮,後來想要加入壓縮演算法,可以通過alter修改schema

alter

使用方法: 如 修改壓縮演算法

  disable 'table'
  alter 'table',{NAME=>'info',COMPRESSION=>'snappy'} 
  enable 'table'

但是需要執行major_compact ‘table’ 命令之後 才會做實際的操作。

describe ‘table’

describe ‘table’ 這個命令查看了create table 的各項引數或者是預設值。