Day9.HBase学习笔记2

一、

[root@CentOS ~]# /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
[root@CentOS ~]# 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
[root@CentOS ~]# 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
[root@CentOS ~]# 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
[root@CentOS ~]# 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
[root@CentOSX ~]# /usr/zookeeper-3.4.6/bin/zkServer.sh start zoo.cfg	#三台机器启动
[root@CentOSA ~]# start-dfs.sh	#任意一台启动即可
#可以jps查看下,确保启动成功
  1. 在三台机器上传,并解压
[root@CentOSX ~]# tar -zxf hbase-1.2.4-bin.tar.gz -C /usr/
  1. 配置文件
  • hbase-site.xml
[root@CentOSX ~]# 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
[root@CentOSC ~]# vi /usr/hbase-1.2.4/conf/regionservers
#分别将localhost改成
CentOSA
CentOSB
CentOSC
  1. 环境变量
[root@CentOSX ~]# 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

[root@CentOSX ~]# source .bashrc
  1. 启动(先启动master、再启动)
[root@CentOSX ~]# hbase-daemon.sh start master
[root@CentOSX ~]# hbase-daemon.sh start regionserver

图002
图003

  1. 停止服务
[root@CentOSX ~]# hbase-daemon.sh stop regionserver
[root@CentOSX ~]# hbase-daemon.sh stop master
[root@CentOSX ~]# stop-yarn.sh
[root@CentOSA ~]# stop-dfs.sh	#任意
[root@CentOSX ~]# /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倒序排列。

猜你喜欢

转载自blog.csdn.net/weixin_42838993/article/details/84981323