Hbase安装的详细流程
- 安装配置HBase,请解压好hbase安装包到指定目录下
- 配置环境变量
编辑vim /etc/profile
加入
export HBASE_HOME=/home/hadoop/hbase
export PATH=$PATH:$HBASE_HOME/bin
export HBASE_CONF_DIR=$HBASE_HOME/conf
export HBASE_CLASS_PATH=$HBASE_CONF_DIR
刷新环境变量
完成后可以用hbase version
来验证是否配置正确
2) 配置/conf/hbase-env.sh
添加JAVA变量和HBASE_CLASSPATH变量,这两个变量其实在文件中都被注释掉了,只需找到并删除注释符即可,并将路径设置为本机Hadoop安装目录下的conf目录(即{HADOOP_HOME}/conf)。路径请按照实际情况填写。修改后,hbase-env.sh的配置如下:
export JAVA_HOME=/home/hadoop/java
export HBASE_CLASSPATH=/home/hadoop/hbase/conf
export HBASE_MANAGES_ZK=true
注意:这里HBASE_MANAGES_ZK 配置为false,那么hbase在启动的时候就不会启动自带的zookeeper,不会应用自带zookeeper进行协调管理,配置为true则会应用自带zookeeper。
3) 配置/conf/hbase-site.xml
修改hbase.rootdir,将其指向master(与hdfs的端口保持一致),并指定HBase在HDFS上的存储路径。将属性hbase.cluter.distributed设置为true。假设当前Hadoop集群运行在伪分布式模式下,且NameNode运行在9000端口;
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://操得:9000/hbase</value>
<description>HDFS中存储hbase数据的目录,注意主机名和端口号要与hadoop的core-site.xml中fs.default.name的对应</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>hbase采用集群分布式将 hbase.cluster.distributed 属性值设置为 true, 指定 HBase 运行于分布式模式, 即一个 JVM 运行一个守护进程.</description>
</property>
</configuration>
- 启动HBase
完成以上操作后启动HBase,启动顺序:先启动Hadoop–>再启动HBase,关闭顺序:先关闭HBase–>再关闭Hadoop。
第一步:启动hadoop集群
#启动hadoop
start-all.sh
#查看进程
jps
7542 ResourceManager
6823 NameNode
7047 DataNode
7337 SecondaryNameNode
7770 NodeManager
12973 Jps
特别注意:可先通过jps命令查看Hadoop集群是否启动,如果Hadoop集群已经启动,则不需要执行Hadoop集群启动操作。
第二步:启动HBase 该启动命令在bin文件夹下
#启动Hbase
start-hbase.sh
#查看进程
jps
一般会出现:
7542 ResourceManager
6823 NameNode
7047 DataNode
7337 SecondaryNameNode
7770 NodeManager
12973 Jps
18818 HQuorumPeer
18889 HMaster
则证明服务启动成功,然后我们验证一下,是否可以正常运行:
第三步:启动shell
执行hbase shell
打开命令操作界面
输入list
,查看当前数据库列表
执行create 'tb','mycf'
命令来创建一个数据库
2. 可能出现的问题及应对策略
- 如果在启动hbase后报错:
stopping hbasecat: /tmp/hbase-root-master.pid: No such file or directory
造成hadoop出现上述这个错误的原因很多,如果系统运行一切正常并且运行了很长时间,现在出现了上述错误需要停止集群,一个很可能的原因是hadoop的pid文件丢失,hadoop的pid文件默认保存在/tmp目录下,/tmp目录下的文件很容易丢失,所以造成停止集群的时候出现上述错误。解决方式是在/etc/hadoop/hadoop-env.conf文件中找到pid的配置项,修改其配置路径即可
即在hadoop的hadoop-env.sh文件中,添加两条变量(第一句在文件中都有,只需要去掉注释即可,第二句需要手动书写)
export HADOOP_PID_DIR=/var/hadoop/pids
export HADOOP_SECURE_DN_PID_DIR=/var/hadoop/pids
另外不要忘了添加上述路径的文件夹
2) 如果在启动shell时出现以下内容:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/hbase/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
证明在home/hadoop/hbase/lib/slf4j-log4j12-1.7.5.jar!/
org/slf4j/impl/中的相关文件兼容性出现了问题,找到该文件,给其修改一个名称即可(我的做法是在后面加上.bak即可)
3) 注意看报错提示内容,可能是hbase-env.sh或者hbase-site.xml文件出了问题