Day9.HBase學習筆記2
阿新 • • 發佈:2018-12-27
一、
[[email protected] ~]# /usr/zookeeper-3.4.6/bin/zkServer.sh start zoo.cfg
JMX enabled by default
Using config: /usr/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] ~]# start-dfs.sh
Starting namenodes on [CentOS]
CentOS: starting namenode, logging to /usr/hadoop-2.6.0/logs/hadoop-root-namenode-CentOS.out
CentOS: starting datanode, logging to /usr/hadoop-2.6.0/logs/hadoop-root-datanode-CentOS.out
Starting secondary namenodes [ 0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/hadoop-2.6.0/logs/hadoop-root-secondarynamenode-CentOS.out
[[email protected] ~]# start-hbase.sh
starting master, logging to /usr/hbase-1.2.4/logs/hbase-root-master-CentOS.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
CentOS: starting regionserver, logging to /usr/hbase-1.2.4/logs/hbase-root-regionserver-CentOS.out
[[email protected] ~]# start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /usr/hadoop-2.6.0/logs/yarn-root-resourcemanager-CentOS.out
CentOS: starting nodemanager, logging to /usr/hadoop-2.6.0/logs/yarn-root-nodemanager-CentOS.out
[ [email protected] ~]# jps
2288 NodeManager
2321 Jps
1987 HRegionServer
1860 HMaster
2133 ResourceManager
1365 NameNode
1255 QuorumPeerMain
1449 DataNode
1629 SecondaryNameNode
二、Hbase叢集搭建(與之前的HA叢集整合)
- 時鐘同步,務必所有節點時間大致一致
date #如不一致,可用之前的方法
- 按序啟動zookeeper、hdfs
[[email protected] ~]# /usr/zookeeper-3.4.6/bin/zkServer.sh start zoo.cfg #三臺機器啟動
[[email protected] ~]# start-dfs.sh #任意一臺啟動即可
#可以jps檢視下,確保啟動成功
- 在三臺機器上傳,並解壓
[[email protected] ~]# tar -zxf hbase-1.2.4-bin.tar.gz -C /usr/
- 配置檔案
- hbase-site.xml
[[email protected] ~]# vi /usr/hbase-1.2.4/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://mycluster/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>CentOSA,CentOSB,CentOSC</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
- regionservers
[[email protected] ~]# vi /usr/hbase-1.2.4/conf/regionservers
#分別將localhost改成
CentOSA
CentOSB
CentOSC
- 環境變數
[[email protected] ~]# vi .bashrc
HBASE_MANAGES_ZK=false
HBASE_HOME=/usr/hbase-1.2.4
HADOOP_HOME=/usr/hadoop-2.6.0
JAVA_HOME=/usr/java/latest
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin
CLASSPATH=.
export JAVA_HOME
export PATH
export CLASSPATH
export HADOOP_HOME
export HBASE_HOME
export HBASE_MANAGES_ZK
[[email protected] ~]# source .bashrc
- 啟動(先啟動master、再啟動)
[[email protected] ~]# hbase-daemon.sh start master
[[email protected] ~]# hbase-daemon.sh start regionserver
- 停止服務
[[email protected] ~]# hbase-daemon.sh stop regionserver
[[email protected] ~]# hbase-daemon.sh stop master
[[email protected] ~]# stop-yarn.sh
[[email protected] ~]# stop-dfs.sh #任意
[ro[email protected] ~]# /usr/zookeeper-3.4.6/bin/zkServer.sh stop zoo.cfg
三、Hbase架構圖【面試點】
-
HBase巨集觀架構
- HMaster節點
管理RegionServer、管理和分配Region - HRegionServer
存放和管理本地Region - Zookeeper叢集
存放整個HBase叢集元資料、實現HMaster的failover(故障轉移)
- HMaster節點
-
RegionServer架構
當MemoryStore內容flush到HDFS。該WAL日誌檔案,會將flush的內容移除,
WAL同步了memStore內的資料,作用是:實現RegionServer的故障轉移。
BlockCache是一個讀快取,即“引用區域性性”原理(也應用於CPU,分空間區域性性和時間區域性性,空間區域性性是指CPU在某一時刻需要某個資料,那麼有很大的概率在一下時刻它需要的資料在其附近;時間區域性性是指某個資料在被訪問過一次後,它有很大的概率在不久的將來會被再次的訪問),將資料預讀取到記憶體中,以提升讀的效能。HBase中提供兩種BlockCache的實現:預設on-heap LruBlockCache和BucketCache(通常是off-heap)。通常BucketCache的效能要差於LruBlockCache,然而由於GC的影響,LruBlockCache的延遲會變的不穩定,而BucketCache由於是自己管理BlockCache,而不需要GC,因而它的延遲通常比較穩定,這也是有些時候需要選用BucketCache的原因。這篇文章BlockCache101對on-heap和off-heap的BlockCache做了詳細的比較。
- Region架構
- HRegion是一個Table中的一個Region在一個HRegionServer中的表達。一個Table可以有一個或多個Region,他們可以在一個相同的HRegionServer上,也可以分佈在不同的HRegionServer上,一個HRegionServer可以有多個HRegion,他們分別屬於不同的Table。HRegion由多個Store(HStore)構成,每個HStore對應了一個Table在這個HRegion中的一個Column Family,即每個Column Family就是一個集中的儲存單元,因而最好將具有相近IO特性的Column儲存在一個Column Family,以實現高效讀取(資料區域性性原理,可以提高快取的命中率)。HStore是HBase中儲存的核心,它實現了讀寫HDFS功能,一個HStore由一個MemStore 和0個或多個StoreFile組成。
- MemStore是一個寫快取(In Memory Sorted Buffer),所有資料的寫在完成WAL日誌寫後,會 寫入MemStore中,由MemStore根據一定的演算法將資料Flush到地層HDFS檔案中(HFile),通常每個HRegion中的每個 Column Family有一個自己的MemStore。
- HFile(StoreFile) 用於儲存HBase的資料(Cell/KeyValue)。在HFile中的資料是按RowKey、Column Family、Column排序,對相同的Cell(即這三個值都一樣),則按timestamp倒序排列。
- 學習更詳細相關概念,可以檢視部落格:https://blog.csdn.net/ldds_520/article/details/51648833