HBase的安装和部署(3)_完全分布模式

说明:

平台基于CentOS 7.x操作系统。用户名及软件安装目录如下:

环境 设置或路径
用户名 hduser
用户主目录 /home/hduser
软件安装包位于 /home/hduser/software
软件安装位置 /home/hduser/bigdata/

HBase具有多种部署模式。

  • 独立模式:使用本地文件系统作为存储,它在同一个JVM中运行所有HBase守护进程和本地ZooKeeper。
  • 伪分布模式:使用HDFS系统或者本地作为存储,守护进程都在单个节点上运行。
  • 完全分布式:只能使用HDFS存储系统,HBase守护程序的多个实例在群集中的多个服务器上运行。

接下来我们学习HBase完全分布模式安装,使用三个节点构成的集群,三个节点的机器名分别为:master、worker01和worker02。

对于生产环境,建议使用完全分布式HBase集群。在完全分布式模式下,HBase守护程序的多个实例在群集中的多个服务器上运行。

一、预备操作

1、设置CentOS最大进程数和最大文件打开数(修改ulimit和nproc)

查看操作系统可以打开最大文件描述符的数量(默认是1024):

$ ulimit -n   

查看操作系统允许用户最大可用的进程数量(默认是4096)。

$ ulimit -u    

怎么在Linux中设置ulimit?

编辑/etc/security/limits.conf,这是一个以空格分隔的文件,有4列。设置内容如下:

 	hduser	soft	nofile	10240  
	hduser	hard	nofile	10240 
	hduser	soft	nproc	10240  
	hduser	hard	nproc	10240

其中:

  • noproc: 是代表最大进程数
  • nofile: 是代表最大文件打开数

2、设置NTP(三台都设)

使用NTP(Network Time Protocol)同步系统时钟和外部时间服务器。要求有root权限,保持连网。

$ sudo yum install ntp		# 安装一个NTP Service
$ sudo /sbin/chkconfig ntpd on	# 开机启用 

注:不同机器间的时间误差不得超过30秒。

3、HDFS DataNode对它将在任何时间服务的文件数量有一个上限。

打开Hadoop的conf/hdfs-site.xml文件,设置dfs.datanode.max.transfer.threads参数:

<property>
    <name>dfs.datanode.max.transfer.threads</name>
    <value>4096</value>
</property>

这个参数用来指定用于在DataNode内外传输数据的最大线程数。

完成上述配置后,请确保重新启动HDFS(如果已经启动了HDFS的话)。

二、安装HBase

请按以下步骤下载和安装HBase。

1、从以下地址下载HBase压缩包到本地文件系统:下载HBase安装包

注意,选择合适的版本。这里我们选择长期稳定版2.3.5(您下载时也许版本有所变化),如下图所示:

将下载的.tar.gz结尾的文件,放在/home/hduser/software/目录下。

2、解压缩下载的压缩包到用户主目录:

$ cd ~/bigdata
$ tar -zxvf ~/software/hbase-2.3.5-bin.tar.gz

3、配置hbase环境变量(三个节点都做):

$ sudo nano /etc/profile

在文件的最后,加上如下内容:

export HBASE_HOME=/home/hduser/bigdata/hbase-2.3.5
export PATH=$PATH:$HBASE_HOME/bin

4、执行/etc/profile文件,使环境变量生效:

$ source /etc/profile

5、测试环境变量配置:

$ hbase version

出现hbase版本信息,就说明hbase环境变量配置正确。

三、配置HBase

配置$HBASE_HOME/conf/中的文件,包括:

  • hbase-env.sh
  • hbase-site.xml
  • regionservers

1、打开$HBASE_HOME/conf/hbase-env.sh文件,将下面配置项前的注释取消,并修改JAVA_HOME变量值为你自己的jdk安装主目录:

export JAVA_HOME=/usr/local/jdk1.8.0_251
export HBASE_MANAGES_ZK=true

上面第二个配置项的含义是,使用HBase自带的Zookeeper。

2、打开$HBASE_HOME/conf/hbase-site.xml文件配置如下属性:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration> 
    <property> 
        <name>hbase.rootdir</name>
        <value>hdfs://master:8020/hbase</value> 
    </property> 
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master:2181,worker01:2181,worker02:2181</value>
    </property>
    <property> 
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/home/hduser/bigdata/hbase-2.3.5/zoodata</value> 
    </property> 
    <property>
        <name>hbase.tmp.dir</name>
        <value>/home/hduser/bigdata/hbase-2.3.5/tmp</value>
    </property>
    <property>
        <name>hbase.wal.provider</name>
        <value>filesystem</value>
    </property>
</configuration>

3、打开$HBASE_HOME/conf/regionservers:

它列出了所有运行HRegionServer守护进程的主机名。每行一个主机名(类似于Hadoop的slaves文件)。

在这个文件中列出的所有服务器在HBase集群启动或停止脚本运行时,都将被启动或停止。

默认该文件只包含localhost项。删除包含localhost的这一行,添加worker01和worker02的主机名或IP地址。

$ nano regionservers

在打开的文件中,填写每个节点的机器名或IP地址,一个节点一行:

master
slave1
slave2

4、替换掉HBase绑定的Hadoop

因为HBase需要依赖Hadoop,它在其lib目录下绑定了Hadoop jar的一个实例。这个绑定的jar包仅用在独立(standalone)模式。在分布式模式下,严格要求集群上的Hadoop版本与HBase上的Hadoop版本保持一致。如果两者不一致,则需要使用Hadoop集群的hadoop jar包替换掉HBase lib目录下的hadoop jar包,以避免版本冲突问题。

首先,执行以下命令,删除掉 HBase 下的所有 Hadoop 相关的 jar 包:

$ rm -rf /home/hduser/bigdata/hbase-2.3.5/lib/hadoop*.jar

再执行以下命令,拷贝所有 Hadoop(例如,Hadoop 3.1.2 版本) 下的 jar 包到 HBase的lib目录下进行版本统一:

$ find /home/hduser/bigdata/hadoop-3.1.3/share/hadoop/ -name "hadoop*jar" | xargs -i cp {} /home/hduser/bigdata/hbase-2.3.5/lib/


5、从master拷贝配置好的hbase到节点worker01和worker02。

集群中的每个节点都需要有相同的配置信息。

$ cd
$ scp -r ~/bigdata/hbase-2.3.5 hduser@worker01:~/bigdata/
$ scp -r ~/bigdata/hbase-2.3.5 hduser@worker02:~/bigdata/

四、启动和测试HBase

1、启动HDFS集群:

$ start-dfs.sh

2、启动HBase:

$ start-hbase.sh

3、查看进程:

$ jps

如果系统配置正确,jps命令应该显示HMaster和HRegionServer进程正在运行。

4、检查HDFS上的hbase数据目录。如果一切正常,HBase会创建该目录。

在上面的配置中,它存储在HDFS之上的/hbase/中。可以使用hadoop fs命令或hdfs dfs命令列出这个目录。

$ hdfs dfs -ls /hbase

5、浏览Web UI。

HBase Web UI所使用的HTTP端口,Master为16010,RegionServer为16030。

如果一切正确,可以使用web浏览器连接Master UI - http://localhost:16010

可以在每个RegionServers的IP地址和16030端口上查看用于每个RegionServers的Web UI。

6、停止HBase。使用如下命令:

$ stop-hbase.sh

《Flink原理深入与编程实战》