HBase集群搭建部分配置
Hbase集群基本组件说明
Client:
包含访问Hbase的接口,并维护cache来加快对Hbase的访问,比如region的位置信息。
HMaster:
是hbase集群的主节点,可以配置多个,用来实现HA
为RegionServer分配region
负责RegionServer的负载均衡
发现失效的RegionServer并重新分配其上的region
RegionServer:
Regionserver维护region,处理对这些region的IO请求
Regionserver负责切分在运行过程中变得过大的region
Region:
分布式存储的最小单元。
Zookeeper:
Zookeeper作用:
通过选举,保证任何时候,集群中只有一个活着的HMaster,HMaster与RegionServers 启动时会向ZooKeeper注册
存贮所有Region的寻址入口
实时监控Region server的上线和下线信息。并实时通知给HMaster
存储HBase的schema和table元数据
Zookeeper的引入使得HMaster不再是单点故障。
前期准备:hadoop HA环境已搭建成功,zookeeper能正常运行。
安装流程:
1.解压tar -zxvf hbase-1.2.6-bin.tar.gz (当前1.2.*版本最为稳定,1.3.*还在优化中)
vi /etc/profile 环境变量
- export HBASE_HOME=/hadoop/hbase-1.2.6
- export PATH=$PATH:$HBASE_HOME/bin
2.vi /hadoop/hbase-1.2.6/conf/hbase-site.xml
- <property>
- <name>hbase.rootdir</name>
- <value>hdfs://cluster_name/hbase</value>
- <description>一定要把hadoop中的core-site.xml和hdf-site.xml复制到hbase的conf目录下,才能成功解析该集群名称;如果是hadoop单namenode集群,配置写成hdfs://master:9000/hbase (master是namenode主机名)</description>
- </property>
- <property>
- <name>hbase.cluster.distributed</name>
- <value>true</value>
- </property>
- <property>
- <name>hbase.zookeeper.quorum</name>
- <value>master,node1,node2</value>
- </property>
- <property>
- <name>hbase.zookeeper.property.dataDir</name>#需要与zookeeper集群上配置一样
- <value>/hadoop/zookeeper</value>
- </property>
3.vi /hadoop/hbase-1.2.6/conf/hbase-env.sh
- export JAVA_HOME=/usr/java/jdk1.8.0_65
- export HBASE_MANAGES_ZK=false
4.vi /hadoop/hbase-1.2.6/conf/regionservers
- node1
- node2
提醒:由于hadoop做了HA,namenode可能进行切换,为了解析集群名称,必须把hadoop的core-site.xml和hdfs-site.xml拷贝到hbase的conf下,然后启动hbase。
5.启动
cd /hadoop/hbase-1.2.6/bin
./start-hbase.sh
Web UI: 稳定版hbase1.2.*系列默认的web UI端口为16010,在网址内输入hmaster主机 ip:16010 即可访问(如hbase版本不同导致无法打开web UI,可去官网文档查看对应版本的默认端口号)。
几个命令:
启动所有节点:start-hbase.sh
关闭所有节点:stop-hbase.sh
启动单台节点:hbase-daemon.sh start master/regionserver
关闭单台节点:hbase-daemon.sh stop master/regionserver
hbase-site.xml其他相关配置
<!-- hbase客户端rpc扫描一次获取的行数,默认是2147483647, -->
<property>
<name>hbase.client.scanner.caching</name>
<value>2000</value>
</property>
<!-- HRegion分裂前最大的文件大小(默认1.25G)-->
<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value>
</property>
<!-- HRegionServer中最大的region数量 -->
<property>
<name>hbase.regionserver.reginoSplitLimit</name>
<value>2000</value>
</property>
<!-- StoreFile开始合并的阀值 -->
<property>
<name>hbase.hstore.compactionThreshold</name>
<value>6</value>
</property>
<!-- 当某一个region的storefile个数达到该值则block写入,等待compact-->
<property>
<name>hbase.hstore.blockingStoreFiles</name>
<value>14</value>
</property>
<!--当MemStore占用内存大小超过hbase.hregion.memstore.flush.size
MemStore刷新缓存的大小的4倍,开始中block该HRegion的请求,进行flush
释放内存,后台会有服务线程在周期内hbase.server.thread.wakefrequency
定时检查-->
<property>
<name>hbase.hregion.memstore.block.multiplier</name>
<value>4</value>
</property>
<!-- service工作的sleep间隔 -->
<property>
<name>hbase.server.thread.wakefrequency</name>
<value>500</value>
</property>
<!--ZK并发连接的限制-->
<property>
<name>hbase.zookeeper.property.maxClientCnxns</name>
<value>300</value>
</property>
<!--RegionServer进程block进行flush触发条件:该节点上所有region的memstore之和达到upperLimit*heapsize-->
<property>
<name>hbase.regionserver.global.memstore.size</name>
<value>0.4</value>
</property>
<!--RegionServer进程触发flush的一个条件:该节点上所有region的memstore之和达到lowerLimit*heapsize-->
<property>
<name>hbase.regionserver.global.memstore.size.lower.limit</name>
<value>0.3</value>
</property>
<property>
<name>hfile.block.cache.size</name>
<value>0.4</value>
</property>
<!--HRegionserver处理IO请求的线程数-->
<property>
<name>hbase.regionserver.handler.count</name>
<value>100</value>
</property>
<!-- 客户端最大重试次数 -->
<property>
<name>hbase.client.retries.number</name>
<value>5</value>
</property>
<!-- 客户端重试的休眠时间 -->
<property>
<name>hbase.client.pause</name>
<value>100</value>
</property>