1.解压软件
tarzxvfhbase-1.1.5-bin.tar.gz
---chown-Rhadoop:hadoophbase-1.1.5
2.配置Hbase
① 修改hbase-env.sh
viconf/hbase-env.sh,出掉JAVA_HOME的注释,并修改为本地的
exportJAVA_HOME=/usr/java/jdk1.7.0_79
exportHBASE_LOG_DIR=/opt/hadoop/hbase-1.1.5/logs
exportHBASE_MANAGES_ZK=false
exportHBASE_PID_DIR=/opt/hadoop/hadoop-2.7.2/pids
exportHBASE_CLASSPATH=/opt/hadoop/hbase-1.1.5/conf
修改HBASE_MANAGES_ZK为false,默认为true,表示HBase托管zookeeper实例,如果是HBase独占的zookeeper,可以设定为true。
这里需要注意的是,在搭建HBase集群的时候需要保证Hadoop平台运行正常,各个节点的时间差不能相差太大,最后时间能够同步。否则会导致HBase的启动失败。另外,如果在启动HBase集群时,提示不能解析HDFS路径,这里将Hadoop的core-site.xml和hdfs-site.xml文件复制到HBase的conf文件目录下即可。
② cp/opt/hadoop/hadoop-2.7.2/etc/hadoop/hdfs-site.xml.
cp/opt/hadoop/hadoop-2.7.2/etc/hadoop/core-site.xml.
③ 创建临时目录
[hadoop@masternode1conf]$mkdir/opt/hadoop/hbase-1.1.5/tmp
[hadoop@masternode1conf]$mkdir/opt/hadoop/hbase-1.1.5/logs
[hadoop@masternode1conf]$chmod756/opt/hadoop/hbase-1.1.5/logs
[hadoop@masternode1conf]$chmod756/opt/hadoop/hbase-1.1.5/tmp/
④ 配置hbase-site.xml文件
vihbase-site.xml
<configuration>
<!--hbase存储在HADOOPHDFS上文件根目录路径-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://cluster-ha/hbase</value>
</property>
<!--采用分布式模式-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--zookeeper地址,端口不指定的话就默认为2181-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>slavenode1,slavenode2,slavenode3,slavenode4,slavenode5,slavenode6,slavenode7</value>
</property>
<!--指定ZooKeeper集群端口-->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<!--hbase临时文件存储目录,比如一些数据表的预分区信息等等-->
<property>
<name>hbase.tmp.dir</name>
<value>/opt/hadoop/hbase-1.1.5/tmp</value>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://cluster-ha:16000</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<!--zookeeper存储数据位置-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/hadoop/zookeeper/data</value>
</property>
<property>
<name>hbase.client.write.buffer</name>
<value>5242880</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>300</value>
<description>CountofRPCListenerinstancesspunupon
RegionServers.SamepropertyisusedbytheMasterforcountofmaster
handlers.</description>
</property>
<property>
<name>hbase.table.sanity.checks</name>
<value>false</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>30000</value>
</property>
<property>
<name>hbase.hregion.max.filesize</name>
<value>32212254720</value>
</property>
</configuration>
hbase.rootdir:RegionServers共享的HBase持久化数据的存储地址。需要使用包含文件系统scheme的完全限定地址。
hbase.cluster.distributed:指定Hbase集群是否以分布式方式运行。
hbase.master.port:Master绑定的端口,包括backup-master.
hbase.zookeeper.property.dataDir:这个是ZooKeeper配置文件zoo.cfg中的dataDir。zookeeper存储数据库快照的位置。
hbase.zookeeper.quorum:ZooKeeper的所有成员服务器列表,服务器名之间用逗号分隔。
hbase.zookeeper.property.clientPort:这个是ZooKeeper配置文件zoo.cfg中的clientPort。ZooKeeper提供给客户端连接的端口,默认是2181。
⑤ 配置[hadoop@masternode1conf]#vilog4j.properties
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
⑥ 修改regionservers,将RegionServers写入。
vimconf/regionservers
slavenode1
slavenode2
slavenode3
slavenode4
⑦ 添加环境变量方便调用HBase
vim/etc/profile
exportHBASE_HOME=/opt/hadoop/hbase-1.1.5
exportPATH=$PATH:$HBASE_HOME/bin
⑧ 创建两个目录.zookeeper单独配置就不用这步骤
[hadoop@masternode1hbase-1.1.5]#mkdirlogs
[hadoop@masternode1hbase-1.1.5]#mkdirdata
[hadoop@masternode1data]#echo‘1’>myid
[hadoop@masternode1data]#echo‘2’>myid
[hadoop@slavenode2data]#echo‘3’>myid
[hadoop@slavenode3data]#echo‘4’>myid
⑨ 将修改好的安装目录分发到所有节点,一并修改环境变量。
[hadoop@masternode1hadoop]$foriin{31,32,33,34,35,36,37,38,39};doscp-rhbase-1.1.5hadoop@192.168.237.2$i:/opt/hadoop/;done
[hadoop@masternode1hadoop]$foriin{31,32,33,34,35,36,37,38,39};doscp~/.bash_profilehadoop@192.168.237.2$i:~/.bash_profile;done
把/etc/profile~/.bash_profile分发各级节点
防止内存溢出(主从节点都要配置)
[hadoop@masternode1~]#vi/etc/security/limits.d/90-nproc.conf
#Defaultlimitfornumberofuser'sprocessestoprevent
#accidentalforkbombs.
#Seerhbz#432903forreasoning.
*softnproc1024
rootsoftnprocunlimited
hadoopsoftnproc10240(更改后的值)
⑩ 启动HBase
这步要现看下hbase下的包是否全才执行,若全就不用执行此部find/opt/hadoop/hadoop-2.7.2/share/hadoop-name"hadoop*.jar"|xargs-icp{}/opt/hadoop/hbase-1.1.5/lib/
[hadoop@masternode1bin]$#pwd
/opt/hadoop/hbase-1.1.5/bin
[hadoop@masternode1bin]$shstart-hbase.sh
在masternode2上调用hbase-daemon.shstartmaster
即可。
11 通过jps查看进程。
Masternode1上有HMaster,Masternode2上有HMaster和HRegionServer,slavenode1和slavenode3上是HRegionServer。
http://192.168.237.230:16010/master-status
http://192.168.237.231:16010/master-status
12 验证完毕
[hadoop@masternode1bin]#./hbaseshell
SLF4J:ClasspathcontainsmultipleSLF4Jbindings.
SLF4J:Foundbindingin[jar:file:/opt/hadoop/hbase-1.1.5/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J:Foundbindingin[jar:file:/opt/hadoop/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J:Seehttp://www.slf4j.org/codes.html#multiple_bindingsforanexplanation.
SLF4J:Actualbindingisoftype[org.slf4j.impl.Log4jLoggerFactory]
2016-09-0803:45:45,878WARN[main]util.NativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswhereapplicable上面第三步配置是为了解决该报错的
HBaseShell;enter'help<RETURN>'forlistofsupportedcommands.
Type"exit<RETURN>"toleavetheHBaseShell
Version1.1.5,r239b80456118175b340b2e562a5568b5c744252e,SunMay820:29:26PDT2016
hbase(main):001:0>create'test','cf'
ERROR:Can'tgetmasteraddressfromZooKeeper;znodedata==null
现在是hbase和zookeeper链接不上,请核查原有
原因是四台机器的zookeeper必须要全部启动完毕之后才可以启动hbase。
[hadoop@slavenode1bin]#hbaseshell
HBaseShell;enter'help<RETURN>'forlistofsupportedcommands.
Type"exit<RETURN>"toleavetheHBaseShell
Version1.1.5,r239b80456118175b340b2e562a5568b5c744252e,SunMay820:29:26PDT2016
hbase(main):001:0>create't1',{NAME=>'f1',VERSIONS=>2},{NAME=>'f2',VERSIONS=>2}
0row(s)in2.5320seconds
=>Hbase::Table-t1
解决slf4问题
[hadoop@masternode1bin]#hbaseclasspath|tr":""\n"|grep-islf4
/opt/hadoop/hbase-1.1.5/lib/slf4j-api-1.7.7.jar
/opt/hadoop/hbase-1.1.5/lib/slf4j-log4j12-1.7.5.jar
[hadoop@masternode1bin]#rm/opt/hadoop/hbase-1.1.5/lib/slf4j-api-1.7.7.jar
rm/opt/hadoop/hbase-1.1.5/lib/slf4j-log4j12-1.7.5.jar
到相应的目录删掉找出来的文件
总结:
1.hbase.master.port需要指定,不然启动backup-master时会报Alreadyinuse的错误。
2.HMaster(包括backup-master)需要能够passwordlessssh到其它服务器
3.ZooKeeper应该用奇数个节点。