HBase 安装教程(基于centos7.x)
1.版本选择
- 官网地址HBase

- 目前选择相对新版本的2.2.5版本,2020年5月份。
在企业开发中,由于整个技术架构中包含各种框架,框架和框架之间往往会有版本依赖问题。所以虽然每个框架的版本都会解决一些历史bug和增强性能或者添加新功能,但企业做版本选择时往往会选择相对稳定和兼容性更佳的版本而不是最新的版本。

2. 环境准备
- linux集群(这里windows10系统上,使用vmware15.x基于centos7.x的linux操作系统版本虚拟出集群,都安装好JDK1.8,配置好SSH免密登录,安装好MySQL MySQL安装)
- hadoop 3.2.1(集群已安装好hdfs和yarn)HDFS、Yarn
- zookeeper 3.4.6(集群已安装好)zookeeper安装
- 如果采用虚拟集群,建议CPU6核、内存16GB以上,硬盘使用固态硬盘更佳,程序运行速度更快
3. 安装步骤
- 确保zookeeper集群启动,没有启动,则使用自定义批量启动脚本或者手动去zookeeper集群节点上启动服务
-- 在zookeeper安装目录下的bin目录下,执行以下命令 注意是在每个zookeeper集群节点服务器上都执行这个操作;
-- 如果配置了环境变量,可以不需要cd到这个目录下来执行指令
./zkServer.sh start
-- 执行完之后,输入jps查看进程
jps
出现QuorumPeerMain说明启动正常

- 启动HDFS
-- 在hadoop安装目录的sbin目录下,输入以下shell 命令
-- 如果配置了环境变量,可以不需要cd到这个目录下来执行指令
./start-dfs.sh
-- 启动后,输入jps指令查看进程信息
jps

如果出现datanode或者namenode或者2者都出现,说明启动hdfs成功。
3. 上传从官网下载的linux安装压缩包
tar -zxf hbase-2.2.5-bin.tar.gz -C /opt/apps/
- 查看安装包下文件夹路径


- 先编辑conf目录下的hbase-env.sh文件; 这里需要设置jdk安装路径以及设置hbase自带的zookeeper失效而使用外部配置的zookeeper
vi hbase-env.sh
export JAVA_HOME=/opt/apps/jdk1.8.0_251
export HBASE_MANAGES_ZK=false
PS:
xml文件过多,使用vi打开时,可以进入命令模式,使用搜索功能 ,输入斜杠后面跟需要搜索的字符串: /需要搜索的字符串
- hbase-site.xml便捷
vi hbase-site.xml
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://linux100:8020/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>linux100:2181,linux101:2181,linux102:2181</value>
</property>
- 编辑regionservers文件
vi regionservers
我的如下,就是配置集群中节点的域名,注意需要配置域名而不是ip地址。域名设置去/etc/hosts编辑,编辑后,重启网络服务 service network restart。如果未生效,重启以下即可。
linux100
linux101
linux102

8. cd到安装HBase的目录下,将修改好配置信息的解压缩后文件夹拷贝给另外几个节点。如果节点数较多,可以使用脚本来执行。这里使用scp指令进行拷贝,拷贝前,注意先配置各个节点间的免密登录。
scp -r hbase-2.2.5 linux101:$PWD
scp -r hbase-2.2.5 linux102:$PWD
- 启动HBase
- 单节点启动(这里和Hdfs一样可以单节点和集群方式启动)
# cd到hbase安装目录的bin目录下,执行以下命令。如果去/etc/profile中配置了HBASE_HOME环境变量(注意配置好之后source一下),不需要cd到这个目录
-- 这是启动主节点服务,后续注意启动第二主节点。这是为了高可用,和hdfs的namenode一样,双节点机制
./hbase-daemon.sh start master
-- 启动存储服务
./hbase-daemon.sh start regionserver
- 集群启动
-- 去安装目录bin目录下,执行以下命令。注意也有一键停止的脚本
./start-hbase.sh
- 启动之后,通过浏览器访问web页面。这个和hdfs一样,通过web页面提供了对外的展示
我的网址如下:
http://linux100:16010/master-status

PS:
这里可以看到,和hdfs的机制类似,不过hbase是从逻辑上对数据进行分区,区的数据存储在regionserver上,负责协调的节点叫master节点,备用master节点叫backup master。
4.常见问题及解决
4.1 时间同步问题
- 在各种集群搭建中,节点之间的时间一般都需要确保是同步的(时间误差在一定范围内)。但由于各种原因,可能会出现各个节点服务器时间不同步问题。这时候就会有异常或者错误抛出,常见的如ClockOutOfSyncException
- 解决办法有2种,一种是手动设置,一种是配置时间同步服务器让系统自动校对时间
手动设置
date -s "2020-01-08 17:12:55"
系统校对时间
-- 安装时间校对软件
yum -y install ntpdate.x86_64
-- 校对时间
ntpdate 0.asia.pool.ntp.org
time.nist.gov
time.nuri.net
0.asia.pool.ntp.org
1.asia.pool.ntp.org
2.asia.pool.ntp.org
3.asia.pool.ntp.org
修改节点间时间匹配误差值
在hbase-site.xml文件中添加以下配置,5h60min60s
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
<description>Time difference of regionserver from master</description>
</property>
4.2日志组件报错问题
报错如下(不影响使用)

去hbase的lib目录的client-facing-thirdparty下,执行以下命令. 就是把hbase中的日志jar包失效掉(也可以rm -rf 删除,不过安全起见,加个.bak后缀失效更稳妥一些,这样出错了还可以改回来)
mv slf4j-log4j12-1.7.25.jar slf4j-log4j12-1.7.25.jar.bak

修改好之后如下图

3006



被折叠的 条评论
为什么被折叠?



