大数据实验踩坑指南_No.4——HBase的安装配置.md

大数据实验踩坑指南_No.4——HBase的安装配置

前置准备

按照之前的内容配置好Hadoop和Zookeeper[1]

HBase基础安装

HBase官网下载hbase-2.5.8-hadoop3-bin.tar.gz

解压文件到/usr/local目录

1
2
3
4
sudo tar -zxvf /home/hadoop/Downloads/hbase-2.5.8-hadoop3-bin.tar.gz -C /usr/local/
cd /usr/local # 进入安装目录
sudo mv hbase-2.5.8-hadoop3 hbase # 将文件明改为hadoop
sudo chown -R hadoop:hadoop ./hbase # 将目录以及目录内的所有子目录、文件的拥有者改为hadoop用户组的hadoop用户

配置hbase的环境变量

/home/hadoop/.bashrc
1
2
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin
$HBASE_HOME/conf/hbase-env.sh
1
2
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HBASE_MANAGES_ZK=false # 因为我们使用自己安装的ZooKeeper,就禁用自带的ZooKeeper

HBase配置

参考$HADOOP_HOME/etc/hadoop/core-site.xml修改hbase-site.xml

$HADOOP_HOME/etc/hadoop/core-site.xml
1
2
3
4
5
6
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
$HBASE_HOME/conf/hbase-site.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/usr/local/hbase/tmp</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
</configuration>

注意hbase.rootdir的端口号要与$HADOOP_HOME/etc/hadoop/core-site.xml文件中fs.defaultFS的端口号要一致,这里是9000,HBase给出的端口号是8020,是不正确的

启动HBase

启动HBase之前先启动HDFS和ZooKeeper

1
2
start-dfs.sh
zkServer.sh start

然后启动HBase

1
start-hbase.sh

输入jps可以看到HRegionServerHMaster、进程已经启动

1
2
3
4
5
6
7
56532 HRegionServer
56328 HMaster
43529 NameNode
43692 DataNode
51900 QuorumPeerMain
43901 SecondaryNameNode
57310 Jps

进入HBase Shell:

1
hbase shell

输出如下:

1
2
3
4
5
6
7
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.5.8-hadoop3, r37444de6531b1bdabf2e445c83d0268ab1a6f919, Thu Feb 29 15:55:21 PST 2024
Took 0.0017 seconds
hbase:001:0>

输入exit退出HBase Shell

停止HBase的运行:

1
stop-hbase.sh

如果无法停止,先通过hbase-daemon.shmasterreligionserver停止

1
2
3
hbase-daemon.sh stop religionserver
hbase-daemon.sh stop master
stop-hbase.sh

输入jps可以看到HMasterHRegionServer已经不见了

重要
HBase和Hadoop的启动顺序一定是【启动HDFS\rightarrow启动HBase】
关闭顺序一定是【关闭HBase\rightarrow关闭HDFS】
ZooKeeper一定要在HBase之前启动

HBase试用和排错

启动Hbase Shell

1
hbase shell

尝试创建并列出表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.5.8-hadoop3, r37444de6531b1bdabf2e445c83d0268ab1a6f919, Thu Feb 29 15:55:21 PST 2024
Took 0.0017 seconds
hbase:001:0> create "test","cf"
Created table test
Took 1.0771 seconds
=> Hbase::Table - test
hbase:002:0> list
TABLE
test
1 row(s)
Took 0.0303 seconds
=> ["test"]

可以看到创建成功了

其他HBase的操作请查看林老师的文档

如果没有创建成功并报错[2]

1
ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet

有两种原因

原因一:可能是因为hadoop还处于安全模式,输入以下命令查看

1
hdfs dfsadmin -safemode get

如果输出如下,等待一段时间,Hadoop会自动退出安全模式,ON会变为OFF

1
Safe mode is ON

原因二:jar包冲突

在Hadoop和HBase中的jar包冲突了

首先停止HBase

1
stop-hbase.sh

如果无法停止,先通过hbase-daemon.shmasterreligionserver停止

1
2
3
hbase-daemon.sh stop religionserver
hbase-daemon.sh stop master
stop-hbase.sh

修改HBase的以下配置,将注释符号#去掉,然后重启HBase

$HBASE_HOME/conf/hbase-env.sh
1
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"

  1. ↩︎
  2. Hbase正常启动,执行命令报错 Server is not running yet ↩︎