Ubuntu安装HBase2.2.4并进行单机/伪分布式配置

Ubuntu安装HBase2.2.4并进行单机/伪分布式配置

前言

Hadoop安装以后,只包含 HDFS和 Mapreduce,并不包含 HBase,因此我们需要在 Hadoop之上继续安装 HBase。

HBase的运行同样有三种模式:单机模式、伪分布式模式、分布式模式。

  • 单机模式:在一台计算机上安装和使用 HBase,使用 Ubuntu本地文件系统保存数据,不涉及数据的分布式存储 HDFS;
  • 伪分布式模式:在一台计算机上模拟一个小的集群,数据使用分布式文件系统 HDFS存储;
  • 分布式模式:使用多台计算机实现物理意义上的分布式存储。

因为个人电脑不具备集群环境,我们仅介绍在个人电脑上进行单机模式和伪分布式模式的配置。

我个人的操作环境是:

  • 操作系统:Ubuntu 16.04
  • JDK 版本:1.8
  • Hadoop 版本:Hadoop 3.1.3

我选择安装的HBase版本是 HBase 2.2.4。

版本兼容性

HBase一般是运行在 HDFS之上,这里我们默认个人电脑上已经安装了 Java环境,安装了 Hadoop并且已经配置好了伪分布式模式。如果还没有安装 Hadoop环境的请参考这篇博客进行安装 Ubuntu系统安装Hadoop3.1.3并进行单机/伪分布式配置

Hadoop对 Java的兼容性要求并不高,只要 Java版本在 JDK1.7以上基本上都可以进行兼容。但是 HBase对 Java、Hadoop的版本要求比较严格,如果版本不对就要安装指定版本才能保证稳定使用。

现在是2020年4月,Apache HBase官网上对 Java、Hadoop的兼容性如下
h1
h2

三种图标的意义如下:

  • 绿色的√:当前版本通过了完整的功能测试,可以稳定使用
  • 红色的×:当前版本没有通过完整的功能测试,部分功能不可用
  • 黄色的 !:当前版本未经过测试,功能可用性未知

从这里我们可以看出,标出红色的和黄色的版本都是不够安全的,我们如果安装这些版本可能会出很多的错误,因此我们应该选择安装绿色安全的版本。

综合比较之后,我们看到,Java版本当然是选择 JDK1.8最好,Hadoop版本可以选择2.7.1+、2.8.5+、3.1.1+等。

这也怪不得现在都版本都发行到 Java14了,大家现在都喜欢用 JDK1.8,毕竟新版本对这些软件不兼容还是得回到旧版本啊。

如果想知道 HBase最新的版本兼容性消息,可以自己去 Apache HBase官网进行查看 Apache HBase官网配置版本要求

详细流程

接下来我们对 HBase的整个安装配置流程进行详细介绍。

简单提一句,关于 HBase需要不要安装外置 Zookeeper的问题。因为我们现在是伪分布式配置,直接使用 HBase中内置的 Zookeeper即可;如果要进行全分布式配置,建议安装外置的 Zookeeper,将Zookeeper和 HBase分开部署,运营起来会方便很多。

安装HBase2.2.4

在 Apache HBase官网上为我们推荐了两个国内的镜像站:北理工和清华。我们使用北理工的镜像站下载 HBase的稳定版本 HBase北理工镜像

镜像站提供了几个 HBase的稳定版本,根据自己的意愿选择即可。这里我们选择 2.2.4。
h3

进入目录后,我们选择下载 hbase-2.2.4-bin.tar.gz,大小是213M。
h4

下载完成后,通过 WinSCP等软件传输到自己的虚拟机或者服务器中,就放在 /usr/local目录下。然后我们进行解压安装,并把 HBase目录权限赋予给 hadoop用户。

cd /usr/local/
sudo tar -zxvf hbase-2.2.4-bin.tar.gz   //解压
sudo mv ./hbase-2.2.4 ./hbase           //文件夹改名为hbase
sudo chown -R hadoop ./hbase      	 	//修改文件权限

h5

hbase-2.2.4已经解压完成,在开始使用之前,我们先测试一下 hbase是否可用。

/usr/local/hbase/bin/hbase version

h6

成功显示 hbase版本信息,hbase可用。

HBase单机配置

在 HBase单机模式下,我们需要配置 Java环境变量,启动内置的 Zookeeper。同时,为了方便访问,我们配置一下 HBase的环境变量。

如果已经忘记了 JAVA_HOME的值,请在修改之前查看一下

echo $JAVA_HOME

第一步,我们去配置 Java环境变量,并启动内置的 Zookeeper。

在 HBase的文件目录下,conf文件夹中放的是配置文件。我们需要更改 hbase-env.sh文件,把 JAVA_HOME环境变量指定到本机的JDK目录。

cd /usr/local/hbase/conf
sudo vim hbase-env.sh

这里要注意的是,hbase-env.sh中本来就存在这些变量的配置,我们只需要耐心找到该配置,删除前面的‘#’并修改配置内容即可。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_241
export HBASE_MANAGES_ZK=true

编辑完成后,使用 source命令使配置生效

source hbase-env.sh

h7

第二步, 编辑配置文件 /etc/profile,添加 hbase环境变量 HBASE_HOME。

cd ~
sudo vim /etc/profile

在配置文件中输入以下代码:

export HBASE_HOME=/usr/local/hbase      
export PATH=$PATH:$HBASE_HOME/sbin:$HBASE_HOME/bin

编辑完成后保存并退出,使用 source命令使配置生效

source /etc/profile

接下来,我们测试环境是否配置成功

hbase version

h8

成功显示 HBase的版本信息,HBase单机模式配置成功。

HBase伪分布式配置

在 HBase伪分布式模式下,我们需要配置 Java环境变量,HBase配置项目录,启动内置的 Zookeeper。以及指定 HBase数据在 HDFS上的存储路径等。

第一步和单机模式下的配置基本一致,打开 hbase-env.sh文件,找到对应配置,去掉前面的‘#’,并修改为对应路径。

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_241
export HBASE_CLASSPATH=/usr/local/hbase/conf
export HBASE_MANAGES_ZK=true

第二步,编辑 hbase-site.xml文件,将需要配置的信息写入 configuration标签内。

cd /usr/local/hbase/conf
sudo vim hbase-site.xml

假设当前 Hadoop集群运行在伪分布式模式下,在本机上运行,且NameNode运行在9000端口的情况下。修改 hbase.rootdir,指定 HBase数据在 HDFS上的存储路径;将属性 hbase.cluter.distributed设置为 true。

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://localhost:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
</configuration>
  • hbase.rootdir指定 HBase的存储目录
  • hbase.cluster.distributed设置集群处于分布式模式

接下来,我们测试伪分布式模式是否配置成功。

  1. 启动 Hadoop伪分布式环境
cd $HADOOP_HOME
./sbin/start-dfs.sh

输入 jps命令,看到 NameNode、DataNode、SecondaryNameNode结点,则 Hadoop启动成功。
h9

  1. 启动 HBase伪分布式环境
cd $HBASE_HOME
./bin/start-hbase.sh

输入 jps命令,看到 HMaster、HRegionServer、HQuorumPeer结点,则 HBase启动成功。
h10

  1. 进入 shell界面
./bin/hbase shell

如果要退出 HBase Shell交互式执行环境,在 HBase Shell的命令提示符后面输入 exit 即可。
h11

  1. 停止 HBase运行
./bin/stop-hbase.sh
  1. 查看 HDFS
cd $HADOOP_HOME
./bin/hdfs dfs -ls /

可以看到,在 HDFS中,自动生成了一个“hbase”目录,用来保存 HBase的数据。
h12

到这一步,HBase伪分布式模式已经配置成功,我们关闭 Hadoop就行了。

注意,操作 Hadoop和 HBase的执行顺序是:启动Hadoop—>启动HBase—>关闭HBase—>关闭Hadoop。

Web访问HBase信息

启动 HBase之后,我们可以通过 Ubuntu的图形界面来查看 HBase的信息,打开 FireFox浏览器,在地址栏输入“localhost:16010”即可查看。

如果是云服务器,请先在云控制台打开修改安全组,开放 16010端口,再通过“localhost : 16010”的形式访问。

注意,在 HBase 0.98.x 以上,,HBase Web UI 的端口已经从主节点的 60010 和 RegionServer 的 60030 变化为 16010 和 16030。
h17

常见问题

1、关闭 HBase和 Hadoop之后,执行 jps命令居然发现 HRegionServer没有关闭。

h13

再次执行关闭 HBase的命令,发现 HRegionServer还是没有关闭。这个原因暂时我也没搞明白。

解决方法有两个:

  1. 单独停止RegionServer
  2. kill进程

因为 HBase中的每个 RegionServer节点可以自由启动或停止,可以不随 HBase整体一起。所以我们可以直接启动或者 RegionServer。

cd $HBASE_HOME
./bin/hbase-daemon.sh stop regionserver RegionServer        //停止regionserver
./bin/hbase-daemon.sh start regionserver RegionServer       //启动regionserver

h14

kill进程的意思很简单,就是直接将进程终结掉。这样 RegionServer也就相当于关掉了。这种方式不是正常的关闭进程的方式,但是简单粗暴效果好。

我们输入 jps命令查看的时候,进程前面的数字就是进程的 pid码。比如上图中 HRegionServer的 pid码是8096。

kill xxxx       //关闭pid为xxxx的进程
kill -9 xxxx    //强制终止并关闭pid为xxxx的进程

2、启动 HBase后,过了十几秒,HMaster自动关闭

在进行 Web访问 HBase时一直显示被拒绝,仔细检查了配置文件也没有任何错误。最后在关闭 HBase时发现找不到 HMaster,重新启动后发现 HMaster过了十几秒就会自动关闭。
h15
对于这种无法找到 HMaster的错误,我们先关闭 HBase,然后在 hbase-site.xml中设置 hbase.unsafe.stream.capability.enforce属性值为 false,这样可以避免启动错误。

接着重新启动 HBase,HMaster就不会自动关闭了。

<property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
</property>

参考文章

Ubuntu系统安装Hadoop3.1.3并进行单机/伪分布式配置

Hbase入门(二)——安装与配置

在ECS实例的Ubuntu系统中安装HBase

Hadoop与HBase的最新版本兼容性

hbase 停止regionserver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值