1 配置环境变量
1.1 编辑.bashrc文件
sudo vim ~/.bashrc
1.2 在文件末尾添加
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin
2 在master节点启动hbase,在任意路径下执行:
start-hbase.sh
即可启动hbase。
2.1 如果启动日志中出现如下信息:
Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J:
Found binding in [jar:file:/usr/local/hbase/lib/client-facing-thirdparty/log4j-slf4j-impl-2.17.2.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.Reload4jLoggerFactory]
则说明hadoop和Hbase的log4j的jar包冲突了。
从日志信息中,可以看到两个不同的SLF4J绑定:
- slf4j-reload4j-1.7.36.jar 提供的 org.slf4j.impl.Reload4jLoggerFactory
- log4j-slf4j-impl-2.17.2.jar 提供的 org.slf4j.impl.StaticLoggerBinder
SLF4J的设计允许你更换日志框架而无需更改你的代码,但是如果存在多个这样的实现,它就不能确定应该使用哪一个。为了解决这个问题,需要移除一个冲突的实现。可以选择移除 slf4j-reload4j 或者 log4j-slf4j-impl,或者修改它们的名称。
例如,如果你想移除 slf4j-reload4j,你可以这样操作:
- 打开 /usr/local/hadoop/share/hadoop/common/lib/ 目录
- 删除 slf4j-reload4j-1.7.36.jar 文件ccc
- 重新启动hadoop和hbase
同样的,如果你想移除 log4j-slf4j-impl,你可以这样操作:
- 打开
/usr/local/hbase/lib/client-facing-thirdparty/目录 - 删除
log4j-slf4j-impl-2.17.2.jar文件(或者重命名为log4j-slf4j-impl-2.17.2.jar.copy) - 重新启动hadoop和hbase
3 通过jps查看主节点Hmaster是否启动成功;通过jps查看从节点HRegionServer是否启动成功。
通过浏览器访问
可以通过web页面查看hbase集群信息,如下图所示。其中,192.168.10.128是hbase集群中master节点的ip地址,60010端口号在hbase-site.xml文件配置。
4 关闭Hbase
stop-hbase.sh
4.1 如果关闭太慢,则可以先关闭主节点,通过下列命令:
hbase-daemon.sh stop master
再通过下列命令关闭Hbase:
stop-hbase.sh
4.2 如果此时通过jps查看slaver节点发现HRegionServer没有关闭,则通过
kill “HRegionServer进程id”
关闭HRegionServer即可。
***也有一个说法是zookeeper没有关闭,可以先关闭zookeeper在关闭hbase试试。
4.3 如果关闭时出现
no hbase master found
这种信息,一般是因为HBase 的 pid 文件默认存放路径为 /tmp 路径,因为可能被操作系统删除,系统找不到 HBase 的进程号。
解决方案:
4.3.1 通过kill命令杀死HMaster进程和HRegionServer进程
4.3.2 编辑hbase-env.sh(所有节点)
cd /usr/local/hbase/conf/
sudo vim hbase-env.sh
然后在文件中添加如下信息(所有节点)
export HBASE\_PID\_DIR=/usr/local/hbase/pids
#需要换成自己的路径
保存退出。
4.3.3 再次启动Hbase,然后关闭,应该就能正确关闭了。
5 使用hbase shell时遇到报错信息:
org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
该信息表示hbase服务器未运行,一般有两种解决方案。先试第一种(5.1),第一种解决不了再试第二种(5.2)。
5.1 第一张解决方案说明当前集群是处于安全模式下的,下面是检测集群状态的方法:
5.1.1 进入到hadoop的bin目录下,执行
hdfs dfsadmin -safemode get
#如果返回Safe mode is OFF 就说明没问题 Safe mode is ON 就说明集群正处于安全模式
5.1.2 如果显示集群处于安全模式,执行以下命令强制退出即可:
hdfs dfsadmin -safemode leave
//如果返回其他就说明集群出问题了 例如 返回如下内容
safemode: Call From hadoop01/192.168.100.100 to hadoop01:8020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: <http://wiki.apache.org/hadoop/ConnectionRefused>
可以重启一下集群试试.或者查看日志排查具体原因。
5.2 这种情况一般是因为hadoop的版本跟Hbase不兼容。
这时只需要在Hbase的hbase.site.xml的配置文件添加以下内容(所有节点都要此操作):
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
然后重新启动Hbase即可。