1. 程式人生 > >Day9.HBase學習筆記2

Day9.HBase學習筆記2

一、

[[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叢集整合)

圖001

  1. 時鐘同步,務必所有節點時間大致一致
date	#如不一致,可用之前的方法
  1. 按序啟動zookeeper、hdfs
[[email protected] ~]# /usr/zookeeper-3.4.6/bin/zkServer.sh start zoo.cfg	#三臺機器啟動
[[email protected] ~]# start-dfs.sh	#任意一臺啟動即可
#可以jps檢視下,確保啟動成功
  1. 在三臺機器上傳,並解壓
[[email protected] ~]# tar -zxf hbase-1.2.4-bin.tar.gz -C /usr/
  1. 配置檔案
  • 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
  1. 環境變數
[[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
  1. 啟動(先啟動master、再啟動)
[[email protected] ~]# hbase-daemon.sh start master
[[email protected] ~]# hbase-daemon.sh start regionserver

圖002
圖003

  1. 停止服務
[[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巨集觀架構
    架構圖

    1. HMaster節點
      管理RegionServer、管理和分配Region
    2. HRegionServer
      存放和管理本地Region
    3. Zookeeper叢集
      存放整個HBase叢集元資料、實現HMaster的failover(故障轉移)
  • 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架構
    架構圖
    在這裡插入圖片描述
  1. 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組成。
  2. MemStore是一個寫快取(In Memory Sorted Buffer),所有資料的寫在完成WAL日誌寫後,會 寫入MemStore中,由MemStore根據一定的演算法將資料Flush到地層HDFS檔案中(HFile),通常每個HRegion中的每個 Column Family有一個自己的MemStore。
  3. HFile(StoreFile) 用於儲存HBase的資料(Cell/KeyValue)。在HFile中的資料是按RowKey、Column Family、Column排序,對相同的Cell(即這三個值都一樣),則按timestamp倒序排列。