Hadoop 分布式下安装和配置 HBase(CentOS 7系统)
软件版本
电脑系统:macOS 10.14.6
虚拟机软件:Parallels Desktop15
Hadoop各节点节点操作系统:CentOS-7-x86_64-Minimal-1908.iso
CentOS 7 JDK版本:jdk1.8.0_162
Hadoop版本:hadoop-2.7.7
ZooKeeper版本:zookeeper-3.4.13
HBase版本:hbase-1.3.1
环境配置说明
电脑配置:MacBook Pro 13(8G + 256G)
三台 CentOS 7 配置:内存1G、硬盘13G(与Mac完全隔离的虚拟机)
三台 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)
三台虚拟机的用户名:lyh
node为主结点、node2、node3为次节点
一定要注意:标注是操作哪台node主机,默认是node1
安装前提
安装好JDK、Hadoop
安装好ZooKeeper
下载并上传HBase安装包
-
下载HBase安装包:https://archive.apache.org/dist/hbase/1.3.1/hbase-1.3.1-bin.tar.gz
-
将下载好的HBase安装包上传到node1
复制
scp -r ~/Desktop/hbase-1.3.1-bin.tar.gz lyh@10.211.55.18:/app -
进入node1,解压压缩包
复制
cd /app 复制
tar -zxvf hbase-1.3.1-bin.tar.gz -
将hbase-1.3.1-bin 名字修改为 hbase-1.3.1
复制
mv hbase-1.3.1-bin hbase-1.3.1 -
创建 hbase 软链接
复制
ln -s hbase-1.3.1 hbase
安装并配置 HBase
配置Linux环境变量
复制vim /etc/profile
添加环境变量:
复制# HBASE export HBASE_HOME=/app/hbase export PATH=$HBASE_HOME/bin:$PATH
保存并退出,使环境变量生效:
复制source /etc/profile
集群配置
HBase 资源配置
配置 hbase-env.sh 文件
复制cd /app/hbase/conf vim hbase-env.sh
修改如下:
-
配置文件中的JAVA_HOME路径
复制
export JAVA_HOME=/app/jdk -
注释掉对jdk7的优化,因为这里使用的jdk是8版本
复制
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m" # export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m" -
开启 manages zookeeper(不使用hbase自带的zk)
复制
export HBASE_MANAGES_ZK=false -
指定PID路径
复制
# 自定义HBase PID位置 export HBASE_PID_DIR=/app/pids
HBase 集群配置
向 hbase-site.xml 文件中添加配置
复制cd /app/hbase/conf
复制vim hbase-site.xml
添加如下内容:
复制<configuration> <!-- Hbase的数据保存在HDFS对应的目录下:注意端口,与HDFS的一样 --> <property> <name>hbase.rootdir</name> <value>hdfs://node1:8020/hbase</value> </property> <!-- 是否是分布式环境 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 配置ZK的地址,3个节点都启用ZooKeeper --> <property> <name>hbase.zookeeper.quorum</name> <value>node1,node2,node3</value> </property> <!-- 冗余度 --> <property> <name>dfs.replication</name> <value>2</value> </property> <!-- 主节点和从节点允许的最大时间误差 --> <property> <name>hbase.master.maxclockskew</name> <value>180000</value> </property> <!-- zookeeper数据目录 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/app/hbase/zookeeperData</value> </property> <!-- 手动配置管理web端口,默认是 16010 --> <property> <name>hbase.master.info.port</name> <value>60010</value> </property> </configuration>
列出所有运行hbase的机器:修改regionservers文件
复制cd /app/hbase/conf
复制vim regionservers
删除原有内容,添加如下内容:
复制node1 node2 node3
指明备用的 master 节点:backup-masters(这个文件是不存在的,需要新建)
复制cd /app/hbase/conf
复制vim backup-masters
以这里为例,配置如下:
复制node2
HDFS 客户端配置
进入 /app/hadoop/etc/hadoop 文件夹,修改 hadoop-env.sh 中的配置(修改PID生成的位置,node1、node2、node3都要修改)
复制cd /app/hadoop/etc/hadoop
复制vim hadoop-env.sh
要被修改的内容是:
复制export HADOOP_PID_DIR=${HADOOP_PID_DIR} export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
将其路径修改为上面创建的 pids 文件夹
复制export HADOOP_PID_DIR=/app/pids export HADOOP_SECURE_DN_PID_DIR=/app/pids
修改yarn-env.sh (自定义PID生成位置,node1、node2、node3都要修改)
复制cd /app/hadoop/etc/hadoop
复制vim yarn-env.sh
添加如下内容:
复制export YARN_PID_DIR=/app/pids
如果您在 Hadoop 集群上进行了 HDFS 客户端配置的更改,比如将副本系数 dfs.replication
设置成 5,则必须使用以下方法之一来使 HBase 知道,否则 HBase 将依旧使用默认的副本系数 3 来创建文件。
解决方式有三种,如下面:
将 Hadoop 配置文件的位置信息添加到
hbase-env.sh
的HBASE_CLASSPATH
属性
复制cd /app/hbase/conf vim hbase-env.sh
配置信息如下
复制export HBASE_CLASSPATH=/app/hadoop/etc/hadoop
将 Hadoop 的
hdfs-site.xml
和core-site.xml
拷贝到${HBASE_HOME}/conf
目录下
复制cd /app/hadoop/etc/hadoop cp core-site.xml /app/hbase-1.3.1/conf/ cp hdfs-site.xml /app/hbase-1.3.1/conf/
在
${HBASE_HOME}/conf
目录下,创建hdfs-site.xml
和core-site.xml
的软链接
复制cd /app/hadoop/etc/hadoop ln -s core-site.xml /app/hbase/conf/core-site.xml ln -s core-site.xml /app/hbase/conf/hdfs-site.xml
按照前面配置,创建对应目录
进入 hbase-1.3.1 文件夹,创建 zookeeperData 文件夹
进入 app 文件夹,创建pids文件夹,赋予权限,node1、node2、node3都需要创建pids文件
复制cd /app/hbase mkdir zookeeperData
复制cd /app mkdir pids chown -R root:root pids
安装包分发
将 hbase-1.3.1 分发到到 node2、node3
复制cd /app
复制scp -r hbase-1.3.1 node2:/app scp -r hbase-1.3.1 node3:/app
分别到 node2、node3 创建 hbase-1.3.1 的软链接
复制cd /app ln -s hbase-1.3.1 hbsae
启动和关闭 HBase
HBase 的启动前需要先启动Hadoop和ZooKeeper
-
启动Hadoop
node1 中输入:
start-dfs.sh
和start-yarn.sh
-
启动ZooKeeper
node1、node2、node3中都要输入:
zkServer.sh start
为了避免没启动ZooKeeper,可以查看zookeeper的启动状态:
zkServer.sh status
-
启动HBase
node1 中输入:start-hbase.sh
进入和退出 HBase Shell
- 进入HBase Shell:
hbase shell
- 退出HBase Shell:
exit
Web 端访问 HBase 页面:http://10.211.55.18:60010
访问的时候,可能会有如下提示(HBase
集群中Master
服务挂掉了):
The load balancer is not enabled which will eventually cause performance degradation in hbase as regions will not be distributed across all regionservers.The balancer is only expected to be disabled during rolling upgrade scenarios.
解决办法:进入HBase Shell,输入并执行 balance_switch true
,这个时候再访问 HBase Web端,就不会有该提示了。
关闭 HBase,在关闭 HBase之前,一定不要先关闭Hadoop和ZooKeeper
-
关闭HBase
node1 中输入:
stop-hbase.sh
-
关闭ZooKeeper
node1、node2、node3中都要输入:
zkServer.sh stop
-
关闭Hadoop
node1 中输入:
stop-all.sh
参考文献
本文来自博客园,作者:LeeHua,转载请注明原文链接:https://www.cnblogs.com/liyihua/p/14482431.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)