必备条件
在实践中,为了有效利用HDFS,Hbase大多是与Hadoop安装在一起,这样能很大程度减少对网络I/O的需求,同时能加快处理速度。当在同一服务器上运行Hadoop和Hbase,至少会有3个java进程datanode、tasktracker、RegionServer在运行,而且在执行MapReduce作业时,进程数还会激增。要有效运行所有的进程,需要保证一定数量的内存、磁盘和CPU资源。
1服务器
Hbase和Hadoop中有两种类型的机器
master:hdfs的namenode、mapreduce的jobtracker、hbase的master。
slave:hdfs的datanode、mapreduce的tasktracker、hbase的regionserver。
其中master并不需要太大的存储空间,但master的重要性大于slave。
CPU
四核处理器可以满足需求,但六核更好。系统可以通过两个四核CPU,达到八核,这样每一个基本的java进程都可以独立占有一核,而像Java垃圾回收这样的后台任务则可以并行运行。机器规格是这样的:
节点类型 | 推荐 |
---|---|
master | 双四核CPU,2.0GHz~2.5GHz |
slave | 双四核CPU,2.0GHz~2.5GHz |
1 安装与部署
进入hadoop用户
tar -zxvf hbase-1.1.4-bin.tar.gz
ln -s hbase-1.1.4 hbase
hdfs dfs -mkdir hbase
进入root用户,设置环境变量
export HBASE_HOME=/home/hadoop/application/hbase
export PATH=$PATH:$HBASE_HOME/bin
2 集群
hbase分布式模式依赖
1.hadoop分布式文件系统实例hdfs。
2.zookeeper集群
2.1 hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://dashuju174:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
配置完成后,将zookeeper的配置zoo.cfg拷贝到${HASE_HOME}/conf 下面,例如
cp /home/hadoop/application/zookeeper/conf/zoo.cfg ./
2.2 hbase-env.sh
hbase-env.sh此文件是hbase的环境变量,例如Hbase守护进程的JVM启动参数:JAVA堆大小和垃圾回收策略等,在这个文件中还可以设置hbase配置文件的目录、日志目录、SSH选项、进程pid文件的目录等,改变配置需要重启hbase。
文件位于${HBASE_HOME}/conf下
export JAVA_HOME=/usr/java/jdk1.7.0_80
export HBASE_MANAGES_ZK=false,如果使用hbase自身的zookeeper,则置为true。
export HBASE_SSH_OPTS="-p 2222" 这个2222端口根据SSH的端口进行调整,如果使用默认22端口,则不需要加上这句话。
2.3 regionservers
这个文件罗列了所有region服务器的主机名,master在启动的时候都会注册到Zookeeper中。
改文件位于${HBASE_HOME}/conf,添加regionserver的数据,例如master是174,则需要添加
dashuju172
dashuju173
2.4 启动与关闭
启动服务
执行start-hbase.sh
查看174的jps,HMaster运行成功
1373 HMaster
26037 QuorumPeerMain
17894 NameNode
18238 ResourceManager
18084 SecondaryNameNode
查看172和173的jps,HRegionServer运行成功
51771 DataNode
33680 HRegionServer
33889 Jps51885
NodeManager
32821 QuorumPeerMain
停止服务
stop-hbase.sh