HBase
环境配置
- hadoop-2.7.4
- zookeeper-3.4.10
- hbase-1.3.1
部署Hadoop集群
jdk版本兼容问题
查询官方文档:
https://hbase.apache.org/book.html#configuration
1 | [ushbase@nosql01 bin]$ jps |
现象
配置完成后 ResourceManager
过一段时间会消失
检查安装目录下日志文件,如”…/hadoop-2.7.4/logs/yarn-ushbase-resourcemanager-nosql01.out”
1 | 2024-12-06 15:29:56,794 FATAL |
解决
此时我使用的是JDK17,于是尝试更换为jdk8
解压安装jdk8
打开 Hadoop 的配置文件
(如 .../hadoop-2.7.4/etc/hadoop/hadoop-env.sh
)
1 | vim hadoop-env.sh |
- 将里面
JAVA_HOME
设置为新的Java
安装路径
找到后自行改为解压安装的jdk8路径
1 | export JAVA_HOME= |
- 生效配置更改
自行改为相应文件
1 | source hadoop-env.sh |
部署Zookeeper
目前良好
HBase完全分布式安装
启动流程
原启动流程
- 启动Zookeeper集群
(分别在nosql01,nosql02,nosql03)上 执行.
1 | [ushbase@nosql01 zookeeper-3.4.10]$ cd bin/ |
此命令分别在nosql01,nosql02,nosql03节点上启动了QuorumPeerMain
- 启动hdfs服务
在nosql01中运行命令:
1 | [ushbase@nosql01 bin]$ start-dfs.sh |
- 启动yarn服务
在nosql01中运行命令:
1 | [ushbase@nosql01 bin]$ start-yarn.sh |
- 启动HBase
在nosql01中输入启动命令并查看进程:
1 | [ushbase@nosql01 bin]$ start-hbase.sh |
- 校验
在网页地址输入nosql01的ip + 端口16010
192.168.10.134:16010
如果能进入网页,说明配置成功.
问题
现象
一直做到第五步都成功
直到进入hbase终端进行数据库操作报错
建表报错
1 | [ushbase@nosql01 bin]$ hbase shell |
解决1
听说有伙伴使用以下方案重启即可
或
本人尝试后仍然失败
解决2
- 检查修改配置文件
通过修改hbase配置文件”…/hbase-1.3.1/conf/hbase-site.xml”,
hbase.rootdir改成了hbase.root.dir
1 | <property> |
- 在”…/hbase-1.3.1/conf/hbase-env.sh”文件中加入下面的命令
1 | export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true |
尝试后仍然没有成功
解决3
在接着上面的修改下
尝试解决方案3
使用不同的启动hbase方式
将4. 启动HBase
流程修改加入一步
- 先启动regionserver
1 | [ushbase@nosql01 bin]$ hbase-daemon.sh start regionserver |
- 再启动Hbase
1 | [ushbase@nosql01 bin]$ start-hbase.sh |
出现新的报错
1 | ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet |
解决4
在”…/hbase-1.3.1/conf/hbase-site.xml”文件中添加以下配置
1 | <property> |
重新启动后成功
1 | hbase(main):001:0> create 'User','address','info','member_id' |
HBase Shell
删除表中的一个列族前要先disable这张表
hbase(main):029:0> disable ‘User’
0 row(s) in 2.2790 seconds
完全解决
上面方法表面能成功,实际上是只运行了nosql01一台RegionServer,并没有符合原来的设计方案初衷
且后面使用JAVA API仍然不断报错
于是恢复快照到刚安装完HBase时
发现最后真正的问题是
1 用户环境变量
另外两台虚拟机没有写全
注意是在用户ushbase里,
因为root有自己的~/.bash_profile
,ushbase也有自己的~/.bash_profile
1 | vi ~/.bash_profile |
1 | # .bash_profile |
2 防火墙端口
通过查看日志文件hbase-ushbase-master-nosql01.log
偶然发现nosql02:16020和nosql03:16020出现很频繁报错
1 | org.apache.hadoop.hbase.ipc.FailedServerException: This server is in the failed servers list: nosql02/192.168.10.135:16020 |
于是在另外两台虚拟机添加端口
1 | [root@nosql02 ~]# systemctl start firewalld |
1 | [root@nosql03 ~]# systemctl start firewalld |
用jps命令查看在运行的进程,若没有关机过,那就重启hbase完事
1 | [ushbase@nosql01 bin]$ stop-hbase.sh |
继续尝试终端
1 | [ushbase@nosql01 bin]$ hbase shell |
成功
1 | hbase(main):001:0> list |