安装配置过程
安装的是HBase-1.4.10。下面是配置命令(后面的命令默认在$HBASE_HOME下):
tar -zxf /root/packages/hbase-1.4.10-bin.tar.gz -C /usr/local/hadoop/ # 解压文件
# 编辑环境变量HBASE_HOME和添加PATH
cd /usr/local/hadoop/hbase-1.4.10
vim conf/hbase-env.sh # 参照下面文件修改详情
vim conf/hbase-site.xml # 参照下面文件修改详情
vim conf/regionservers # 参照下面文件修改详情,master也启动RegionServer
# HBase需要使用Hadoop集群配置,所以需要读取其配置文件,这里使用软链接到Hadoop和HDFS的core-site.xml和hdfs-site.xml文件
ln -s /usr/local/hadoop/hadoop-2.7.6/etc/hadoop/core-site.xml /usr/local/hadoop/hbase-1.4.10/conf/core-site.xml
ln -s /usr/local/hadoop/hadoop-2.7.6/etc/hadoop/hdfs-site.xml /usr/local/hadoop/hbase-1.4.10/conf/hdfs-site.xml
# 启动方式,启动的master是本机的,启动RegionServer是配置文件对应的机器上的
bin/hbase-daemon.sh start master # master换成regionserver启动RegionServer
bin/start-hbase.sh # 启动Master和所有RegionServer,关闭使用stop-hbase.sh
# 16010是默认Web服务端口
# HBase各个节点之间的时间差异不能超过30秒(可通过hbase.master.maxclockskew设置),否则启动失败。
conf/hbase-env.sh文件修改处的内容如下:
# 修改:Java目录
export JAVA_HOME="/usr/java/default"
# 修改:注释掉下面两行,JDK1.7及之前版才使用,JDK1.8+不再使用:
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
# 修改:默认为true使用内置的Zookeeper(因HBase依赖Zookeeper,怕没有外部的)。设为false使用外部的。
export HBASE_MANAGES_ZK=false
conf/hbase-site.xml文件修改处的内容如下:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
<description>文件根目录(对应HDFS的地址和端口号)</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>是否集群</description>
</property>
<property>
<name>hbase.master.port</name>
<value>16000</value>
<description>端口号(默认16000,可以不加这个属性)</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181,slave3:2181,slave4:2181</value>
<description>Zookeeper服务列表</description>
</property>
</configuration>
conf/regionservers文件内容如下:
master
slave1
slave2
slave3
slave4
配置说明
HBase的lib目录下的hbase-common-1.4.10.jar里的hbase-default.xml文件是默认配置数据,conf/hbase-site.xml配置了会覆盖默认的,该文件中关于MemStore的Flush操作的配置项如下:
- “hbase.regionserver.global.memstore.size”,默认空表示heapsize的40%,一个RegionServer上MemStore的总大小(有多个Region,每个Region的每个列族都有一个MemStore)超过该值写入到StoreFile。
- “hbase.regionserver.optionalcacheflushinterval”,默认是3600000毫秒,也就是超过一小时也会进行flush(不管有没有超过大小)。
- “hbase.hregion.memstore.size”,默认是134217728(128MB),一个region的大小超过该值也会执行flush(RegionServer级别的flush,所有Region都flush)。
- “hbase.hregion.majorcompaction”,默认值是60480000(7天),以上过程会产生很多小文件(HDFS不适合太多小文件),HBase会定期合并(是同列族的合并,合并时才对执行过删除的数据真正的删除),这是时间间隔。
- “hbase.hstore.compactionThreshold”,默认值是3,HStoreFiles超过3个就开始进行合并。
- HLog据说超过1GB会做清理,具体配置未找到。