简练的Hbase Fully-distributed 分布式测试环境部署记录

时间:2019-08-21
本文章向大家介绍简练的Hbase Fully-distributed 分布式测试环境部署记录,主要包括简练的Hbase Fully-distributed 分布式测试环境部署记录使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

由于Hbase的非结构化特性,把她看成是一个存储系统比看成是数据库更加容易让人接受。

Hbase 是一个存储系统,不需要预定义很严格的矩阵结构,提供松散的组织数据的能力。而作为存储,她其实需要借助其他的文件系统支持,实际上并不一定限定于HDFS(在官方文档教程中,Hbase standalone 就是基于本地文件系统作为存储,也有厂商支持的较为稳定的Hbase + GPFS 的方案),只是因为来源于google 的Bigtable也是apache项目,因此两者结合有天然优势,支援也十分丰富。

这个测试环境采用一种完全分布式 fully-distributed 部署方法(区别于 standalone 和 伪分布式部署),采用外部zookeeper,也就是和原来的hadoop 共用一套zookeeper。

(hbase程序包中实际上包含了zookeeper进程,可以启动一个独立的zookeeper去管理hbase,这里不采用这个方式)

(1)创建系统用户并配置在集群之间的免密互访

为了管理的便利性,通过一个脚本start-hbase.sh 就启动其他几台机的进程,那么就需要配置免密码rsh于host007, host003, host001,host002 上。

创建hbase用户:useradd -d /usr/local/hbase -m -s /bin/bash -G sudo,hadoop,java,zookeeper,yarn,hive hbase

“-G sudo,hadoop,java,zookeeper,yarn,hive”:是否需要配置用户组的权限,就看原有系统的需要,并不是必须步骤,只是测试环境下,便于登陆、修改其他系统的文件和检查他们的进程,这里是顺便把权限授了。

针对hbase用户配置免密码。(这里就不展开了,相关说明文档很多,简单来说就是把私钥放在~hbase/.ssh目录下,然后把共钥写入到所有访问这台机的其他机器上的authorized_key文件中。另外必须要把.ssh目录和文件权限配置为700)

(2)配置regionservers

所有的hbase配置文件都在~hbase/conf目录下,找到regionservers文件,改成这次集群作为region server的几台机。改成

host004
host005
host006

一个hostname一行,也能够写ip。写hostname一定不要忘记编辑/etc/hosts定义hostname 和ip 的映射关系。

(3)配置master backup

在$HBASE_HOME 中创建 backup-masters 文件。(环境变量不是必须的,不过如果配置了$HBASE_HOME 会带来很多方便,特别是很多其他的hadoop组建配置都是默认针对$HBASE_HOME,如果没有配置,那么就无法找到默认文件,导致配置失效,所以强烈建议在 /etc/profile.d/ 创建一个启动环境变量的脚步,并且采用这种全局的方式执行。)

写入:

host003

 (4)配置zookeeper

使用外部的独立zookeeper,则需要如下设置:

1. 在文件hbase-site.xml中,修改 HBASE_MANAGES_ZK = false。

2. 在hbase-site.xml中,对应地修改如下设置,指向外部zookeeper地址和端口:

<property>
  <name>hbase.zookeeper.quorum</name>
  <value>host004,host005,host006</value>
</property>

<property>
   <name>hbase.zookeeper.property.clientPort</name>
   <value>2181</value>
</property>

 这样就指定了原来配置在host004,host005,host006上的zookeeper集群了,无非就是定义每个客户端的端口。

(4)hbase 的一些变量和参数

主要是针对hbase-env.sh 文件进行配置。

 JAVA_HOME: export JAVA_HOME=/usr/local/java/jdk1.8.0_211

Heapsize: export HBASE_HEAPSIZE=600M

主要目录路径:一个是日志,一个是运行时的临时文件

export HBASE_LOG_DIR=/usr/local/hbase/hbase-1.4.10/Logs

export HBASE_PID_DIR=/usr/local/hbase/hbase-1.4.10/Pids

是否启用hbase自带的zookeeper:export HBASE_MANAGES_ZK=false

(5)分布式Hbase的定义

实际上只有一个参数,hbase-site.xml

<property>

 <name>hbase.cluster.distributed</name>

 <value>true</value>

</property>

(6)定义HDFS的配置

如开篇说的,Hbase实际上需要结合一个文件系统提供给她用于组织她的数据,因此,需要定义一个文件系统访问路径给到Hbase。

Hbase 是可以简单地利用所支持的文件系统去进行数据的存储的,包括普通FS(配置为file://usr/local/habase/data),或者采用HDFS。甚至是支持其他自己开发的文件系统,当然如果要这么做,需要大量的定制。

如果采用了HDFS 文件系统,需要告诉hbase hdfs的配置信息,她才能够去正确访问对应的nameservice 。(注意:如果hbase不通过nameservice去访问HDFS,那就不需要了解HDFS 的配置情况,不需要core-site.xml ,hdfs-site.xml里面的配置信息,只需要配置为hdfs://host001:9000 就可以了)

<property>
  <name>hbase.rootdir</name>
  <value>hdfs://HadoopCluster1/hbase</value>
</property>

 接上面说的,由于利用了HDFS 集群的nameservice作为访问路径 ,需要由core-site.xml和hdfs-site.xml里面的配置描述提供,因此需要把hadoop集群的这两个文件复制到$HBASE_HOME/conf/ 目录里面。 Hbase 是会默认读取这两个文件中的信息,从而获得nameservice 对应的主机和端口。

(6)最后的检查

$HBASE_HOME/conf 中修改过的文件应该包括: regionserver, backup-master, hbase-env.sh , hbase-site.sh

最基本的配置如下:
Hbase-env.sh:

export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export HBASE_HEAPSIZE=600M
export HBASE_LOG_DIR=/usr/local/hbase/hbase-1.4.10/Logs
export HBASE_PID_DIR=/usr/local/hbase/hbase-1.4.10/Pids
export HBASE_MANAGES_ZK=false

 hbase-site.sh

<configuration>
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
<property>
  <name>hbase.rootdir</name>
  <value>hdfs://HadoopCluster1/hbase</value>
</property>
<property>
  <name>hbase.zookeeper.quorum</name>
  <value>host004,host005,host006</value>
</property>
<property>
   <name>hbase.zookeeper.property.clientPort</name>
   <value>2181</value>
</property>
</configuration>

Regionservers:

host004
host005
host006

backup-masters:

host003

 如果使用hdfs ,nameservice 方式,还需要有core-stie.xml, hdfs-site.xml在这个目录下。

(7)配置文件分发到集群内所有机器

把配置文件(conf 下面全部)复制到hbase 集群所有机器。那么,在那台机器上启动,那台就成为了Master,因为Master这台机器是没有指定的。其他的regionserver, backup-master 都是有指定的,脚步会根据指定的这些机器hostname rsh 过去,然后启动相应的daemons,这样整个集群就启动了。

在master上:

hbase@host007:~/hbase-1.4.10/bin$ ./start-hbase.sh 

就可以按照配置启动。

原文地址:https://www.cnblogs.com/ZhouAlex/p/11387920.html