默认Hadoop2.X以及Java JDK都已安装好。首先解压文件hbase-0.98.23-hadoop2-bin.tar.gz:
tar -zxvf hbase-0.98.23-hadoop2-bin.tar.gz
mv hbase-0.98.23-hadoop2 ~/
接下来要修改以下四个文件:
/etc/profile
~/hbase-0.98.23-hadoop2/conf/hbase-env.sh
~/hbase-0.98.23-hadoop2/conf/hbase-site.xml
~/hbase-0.98.23-hadoop2/conf/regionservers
step1:
在/etc/profile末尾加上:
#configure HBase
export HBASE_HOME=/home/xu/hbase-0.98.23-hadoop2(根据用户实际情况修改)
export PATH=$PATH:$HBASE_HOME/bin
然后运行source /etc/profile使其生效。
step2:
修改~/hbase-0.98.23-hadoop2/conf/hbase-env.sh (根据用户实际情况修改):
#默认pid存在tmp里,容易丢失发生mater-pid not found等错误
export HBASE_PID_DIR=/var/hbase/pids
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/usr/local/java/jdk1.7.0_51
# Extra Java CLASSPATH elements. Optional.
export HBASE_CLASSPATH=/usr/local/hadoop-2.7.2/etc/hadoop
# Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=true
step3:
修改~/hbase-0.98.23-hadoop2/conf/hbase-site.xml :
在configuration之间加上:
//指定Hbase在HDFS中写数据的路径
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value> (根据用户实际情况修改)
</property>
//指定Hbase以分布式方式运行
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave01,slave02</value> (根据用户实际情况修改)
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper</value>
</property>
step4:
修改~/hbase-0.98.23-hadoop2/conf/regionservers:
删掉localhost,然后加上希望做regionserver节点的hostname或IP address,例如:
master
slave01
slave02
step5:
hbse的lib文件夹中自带hadoop的jar包,是为了standalone模式准备的,在真实分布式环境中最好替换为集群安装hadoop的版本jar包(虽然原先我没替换的时候也没有发生bug,不过官网都说了要换就换呗),下面是自己写的一个shell脚本,自学一天,班门弄斧,出事故了别砍我:
#!/bin/bash
#param1是hbase的lib目录路径(一般是/hbase/lib) param2是hadoop的lib目录路径(一般是/hadoop/share/hadoop)
hbaseLib=$1
hadoopLib=$2
if [ -d $hbaseLib -a -d $hadoopLib ]
then
num=0
for path in `find $hbaseLib -type f -name "hadoop*.jar"`
do
hbaseJars[$num]=${path##*/}
hbaseJarPath[$num]=$path
num=`expr $num + 1`
done
num=0
for path in `find $hadoopLib -type f -name "hadoop*.jar"`
do
hadoopJars[$num]=${path##*/}
hadoopJarPath[$num]=$path
num=`expr $num + 1`
done
hbaseIndex=0
hadoopIndex=0
for hbaseJar in ${hbaseJars[*]}
do
hbaseJarPrefix=${hbaseJar%-*}
for hadoopJar in ${hadoopJars[*]}
do
if [ "$hbaseJarPrefix" = "${hadoopJar%-*}" ]
then
rm ${hbaseJarPath[$hbaseIndex]}
cp -i ${hadoopJarPath[$hadoopIndex]} $hbaseLib
break 1
fi
hadoopIndex=`expr $hadoopIndex + 1`
done
hbaseIndex=`expr $hbaseIndex + 1`
hadoopIndex=0
done
fi
以上步骤结束后通过scp命令将hbase-0.98.23-hadoop2目录拷贝到其他节点,例如:
scp -r ~/hbase-0.98.23-hadoop2 username@slave01:~/
scp -r ~/hbase-0.98.23-hadoop2 username@slave02:~/
另外别忘了同样修改其他节点上的/etc/profile文件,并使其生效。
最后,大功告成,运行start-hbase.sh:
用jps查看是否正常:
master:
其中Hmaster、HRegionServer、HQuorumPeer均为Hbase进程
slave:
其中HRegionServer、HQuorumPeer为Hbase进程。
新司机上路,不吝赐教。