Hadoop系列六:Hadoop之HBase篇
HBase安裝和運行
1)HBase理解
HBase是一個開源的、分布式的、多版本的、面向列的存儲模型。可以直接使用本地文件系統也可使用Hadoop的HDFS文件存儲系統。HBase存儲的數據介于映射(key/value)和關系型數據之間。
Hadoop整體生態系統示意圖:
HBase位于結構化存儲層,圍繞HBase,各部件對HBase的支持情況:
Hadoop部件 作用
HDFS 高可靠的底層存儲支持
MapReduce ??高性能的計算能力
Zookeeper 穩定服務和failover機制
Pig&Hive 高層語言支持,便于數據統計
Sqoop ?提供RDBMS數據導入,便于傳統數據庫向HBase遷移
HBase 數據模型
組成部件說明:
Row Key: Table主鍵行鍵 Table中記錄按照Row Key排序
Timestamp:??? 每次對數據操作對應的時間戳,也即數據的version number
Column Family: 列簇,一個table在水平方向有一個或者多個列簇,列簇可由任意多個Colum
組成,列簇支持動態擴展,無須預定義數量及類型,二進制存儲,用戶需自行進行類型轉換
HBase 系統架構圖
組成部件說明
Client:
使用HBase RPC機制與HMaster和HRegionServer進行通信
Client與HMaster進行通信進行管理類操作
Client與HRegionServer進行數據讀寫類操作
Zookeeper:
Zookeeper Quorum存儲-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式注冊到Zookeeper中,HMaster隨時感知各HRegionServer的健康狀況
Zookeeper避免HMaster單點問題
HMaster:
HMaster沒有單點問題,HBase中可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master在運行
主要負責Table和Region的管理工作:管理用戶對表的增刪改查操作;管理HRegionServer的負載均衡,調整Region分布; Region Split后,負責新Region的分布;在HRegionServer停機后,負責失效HRegionServer上Region遷移。
HRegionServer:HBase中最核心的模塊,主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據
HRegionServer管理一些列HRegion對象;
每個HRegion對應Table中一個Region,HRegion由多個HStore組成;
每個HStore對應Table中一個Column Family的存儲;
Column Family就是一個集中的存儲單元,故將具有相同IO特性的Column放在一個ColumnFamily會更高效
HLog
引入HLog原因:在分布式系統環境中,無法避免系統出錯或者宕機,一旦HRegionServer以外退出,MemStore中的內存數據就會丟失,引入HLog就是防止這種情況。工作機制:每個HRegionServer中都會有一個HLog對象,HLog是一個實現WriteAhead Log的類,每次用戶操作寫入Memstore的同時,也會寫一份數據到HLog文件,HLog文件定期會滾動出新,并刪除舊的文件(已持久化到StoreFile中的數據)。當HRegionServer意外終止后,HMaster會通過Zookeeper感知,HMaster首先處理遺留的HLog文件,將不同region的log數據拆分,分別放到相應region目錄下,然后再將失效的region重新分配,領取到這些region的HRegionServer在Load Region的過程中,會發現有歷史HLog需要處理,因此會Replay HLog中的數據到MemStore中,然后flush到StoreFiles,完成數據恢復。
2)安裝和配置
Ubuntu操作系統,主機名hp,已安裝文件存儲系統HDFS、海量數據處理MapReduce和協同服務管理Zookeeper。
官網https://hbase.apache.org/ 下載hbase-1.2.0-bin.tar.gz并解壓。HBase的安裝有三種模式:單機模式、偽分布模式和完全分布式模式。
配置conf/hbase-env.sh文件
export?JAVA_HOME=/home/hp/jdk/????#JDK安裝路徑
export?HBASE_CLASSPATH=/home/hp/hadoop/conf????#Hadoop配置文件路徑
export?HBASE_MANAGES_ZK=true????#使用hbase 默認自帶的 Zookeeper?
配置conf/hbase-site.xml文件(在hbase目錄下增加tmp和zookeeper兩個新目錄)
<property>
<name>hbase.rootdir</name>
<value>hdfs://hp:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/hp/hbase/tmp</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hp</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hp/hbase/zookeeper</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>30000</value>
</property>
<property>
???????<name>hbase.master.info.port</name>
??????? <value>60010</value>
?</property>
其中,hbase.master是指定運行HMaster的服務器及端口號;hbase.master.maxclockskew是用來防止HBase節點之間時間不一致造成regionserver啟動失敗,默認值是30000;hbase.rootdir指定HBase的存儲目錄;hbase.cluster.distributed設置集群處于分布式模式;hbase.zookeeper.quorum設置Zookeeper節點的主機名,它的值個數必須是奇數;hbase.zookeeper.property.dataDir設置Zookeeper的目錄,默認為/tmp,dfs.replication設置數據備份數,集群節點小于3時需要修改。
設置/etc/profile文件的HBase環境變量:
$sudo gedit/etc/profile
export?HBASE_HOME=/home/hp/hbase
export?PATH=$PATH:${HBASE_HOME}/bin
$source /etc/profile
3)啟動運行
啟動Hadoop:$sbin/start-dfs.sh和 ¥sbin/start-yarn.sh
啟動HBase:$bin/start-hbase.sh
關閉HBase:$bin/stop-hbase.sh
啟動后jps查看HQuromPeer、HRegionServer、HMaster三個進程。
查看hbase管理界面http://127.0.0.1: 60010
$hbase shell進入hbase操作
hbase>status
開始hbase的DDL和DML操作。
hbase>create ‘t1’,’id’,’addr’,’info’
hbase>list 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Hadoop系列六:Hadoop之HBase篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop系列五:Hadoop之Zoo
- 下一篇: Hadoop系列七:Hadoop之sqo