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

参考文献:Hadoop分布式集群搭建Hadoop 分布式下安装和配置 ZooKeeper(CentOS 7系统)


下载并上传HBase安装包

  1. 下载HBase安装包:https://archive.apache.org/dist/hbase/1.3.1/hbase-1.3.1-bin.tar.gz

  2. 将下载好的HBase安装包上传到node1

    复制
    scp -r ~/Desktop/hbase-1.3.1-bin.tar.gz lyh@10.211.55.18:/app
  3. 进入node1,解压压缩包

    复制
    cd /app
    复制
    tar -zxvf hbase-1.3.1-bin.tar.gz
  4. 将hbase-1.3.1-bin 名字修改为 hbase-1.3.1

    复制
    mv hbase-1.3.1-bin hbase-1.3.1
  5. 创建 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

修改如下:

  1. 配置文件中的JAVA_HOME路径

    复制
    export JAVA_HOME=/app/jdk
  2. 注释掉对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"
  3. 开启 manages zookeeper(不使用hbase自带的zk)

    复制
    export HBASE_MANAGES_ZK=false
  4. 指定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.shHBASE_CLASSPATH 属性

复制
cd /app/hbase/conf
vim hbase-env.sh

配置信息如下

复制
export HBASE_CLASSPATH=/app/hadoop/etc/hadoop

将 Hadoop 的 hdfs-site.xmlcore-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.xmlcore-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

  1. 启动Hadoop

    node1 中输入:start-dfs.shstart-yarn.sh

  2. 启动ZooKeeper

    node1、node2、node3中都要输入:zkServer.sh start

    为了避免没启动ZooKeeper,可以查看zookeeper的启动状态:zkServer.sh status

  3. 启动HBase

    node1 中输入:start-hbase.sh


进入和退出 HBase Shell

  1. 进入HBase Shell:hbase shell
  2. 退出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

  1. 关闭HBase

    node1 中输入:stop-hbase.sh

  2. 关闭ZooKeeper

    node1、node2、node3中都要输入:zkServer.sh stop

  3. 关闭Hadoop

    node1 中输入:stop-all.sh

参考文献

  1. HBase 系列(四)—— HBase 集群环境配置
  2. HBase运维系列:Regions In Transition
posted @   LeeHua  阅读(583)  评论(0编辑  收藏  举报
编辑推荐:
· 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)
点击右上角即可分享
微信分享提示

目录导航