• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Hadoop实战:Hbase分布式集群安装

HBase 彭东稳 8年前 (2017-06-15) 37245次浏览 已收录 0个评论

一、安装Hbase前提条件

1)JDK和HDFS集群已经安装了。

2)打通Mster->Slave的SSH免秘钥登录(安装HDFS时Hadoop用户已经打通)。

3)所有主机的NTP时间要一致(安装HDFS集群时已经设置一致)。

4)ULIMIT和NPROC要调大(安装HDFS集群时已经调整)。

5)安装Zookeeper集群,一个分布式运行的Hbase依赖一个zookeeper集群,所有的节点能够访问zookeeper。

6)修改HDFS的DataNode同时最大处理文件。

一个Hadoop HDFS Datanode有一个同时处理文件的上限,配置conf/hdfs-site.xml里面的xceivers参数,至少要有4096:

对于HDFS修改配置要记得重启。

我这里是是接着:Hadoop实战:Hadoop分布式集群部署开始Hbase的部署操作的。

Hbase测试环境清单

角色 主机名 地址 系统 硬件
HMaster,Zookeeper hadoop-nn 10.10.0.186 CentOS 7.2 8核8G
HRegionServer,Zookeeper hadoop-snn 10.10.0.187 CentOS 7.2 8核8G
HRegionServer,Zookeeper hadoop-dn-01 10.10.0.188 CentOS 7.2 8核8G

二、安装Zookeeper集群

ZooKeeper安装配置详解(二)

运行Zookeeper的独立模式方便评估、开发和测试。但是在生产中,对于可靠的Zookeeper服务,你应该部署Zookeeper在一个集群环境里。只要集群的多数服务可用,集群服务就是可用的。因为Zookeeper要求一个大多数,进群最好使用奇数个机器。例如,4台主机的Zookeeper只可以处理单机的故障;如果两个主机故障,剩下的两个机器不能成为大多数。然而,5台主机的Zookeeper可以处理两个机器的故障。

安装二进制版本的zookeeper

设置Java堆大小。这对于避免swapping非常重要,它将严重降低Zookeeper的性能。确定正确值,使用负载测试,并确定低于引起swap的的限制。保守的 – 对于4GB的机器使用最大堆大小3GB。

所有服务器有相同的配置文件副本,配置文件和使用独立模式相似,但有一点点的区别,如:编辑zookeeper配置文件/usr/local/zookeeper/conf/zoo.cfg

参数解释:

tickTime:Zookeeper使用的基本时间,时间单位为毫秒。它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间

dataDir:保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存到数据库。

dataLogDir:日志保存目录。Zookeeper的日志信息使用log4j。更多详细信息可以在开发人员指南的 Logging 模块获取。你可以根据log4j的配置进入控制台查看日志信息(或日志文件)。

clientPort:监听客户端连接的端口。

initLimit:是Zookeeper用它来限定quorum中的Zookeeper服务器连接到Leader的超时时间。

syncLimit:限制了一个服务器从Leader多长时间超时。使用这两种超时,你指定的时间单位使用tickTime.在这个例子中,initLimit的超时时间是5个标记号,2000毫秒一个标记,就是10秒。

server.x:列出了构成Zookeeper服务的服务器,当服务启动时,它通过查找data目录中的myid文件知道是哪个服务,这个myid个文件包含了服务号,用ASCII。

最后,注意每个服务器名称(用IP或主机名,最好使用主机名,然后再hosts文件中做绑定)后面的两个端口号:”2888″和”3888″。其中2888表示zookeeper程序监听端口,3888表示zookeeper选举通信端口。节点使用前面的端口连接到其他节点。这样的一个连接非常重要,以便于节点之间可以通讯,例如,对更新的顺序取得统一的意见。更具体的说,一个Zookeeper的服务器用这个端口连接follower到leader。当一个新的leader产生时,follower使用这个端口打开一个TCP连接,连接到leader。因为默认的leader选举也使用TCP。我们现在需要另一个端口用来leader选举。这是在服务器条目的第二个端口。

下面需要生成ID,这里需要注意,myid对应的zoo.cfg的server.ID,比如第二台zookeeper主机对应的myid应该是2,以此类推,三个主机分别为:

然后输出环境变量。

然后就可以在集群中的每个主机上启动zookeeper了。

查看各个zookeeper节点的状态(会有一个leader节点,两个follower节点)。

客户端连接,可以查看相关信息。

至此,zookeeper集群模式已经搞定了。

三、安装配置Hbase集群

当条件都满足时,自行去官网下载Hbase的二进制安装包,然后就可以进行解压了。

为了方便,我们这里赋予Hbase属主和属组为Hadoop(因为Hadoop用户的SSH已经打通),后面所有操作都切换到Hadoop用户进行。

配置hbase-env.sh,关闭Hbase自带的Zookeeper。

修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK参数来切换是否使用Hbase自带zookeeper,这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper。我这里改成FALSE了,使用我们自己配置的zookeeper。

配置hbase-site.xml

hbase.rootdir:这个目 录是region server的共享目录,用来持久化Hbase。URL需要是’完全正确’的,还要包含文件系统的scheme。例如,要表示hdfs中的’/hbase’目录,namenode 运行在node1的49002端口。则需要设置为hdfs://node1:49002/hbase。默认情况下Hbase是写到/tmp的。不改这个配 置,数据会在重启的时候丢失。默认: file:///tmp/hbase-${user.name}/hbase

hbase.cluster.distributed:Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。

默认: false

在hbase-site.xml配置zookeeper:

当Hbase管理zookeeper的时候,你可以通过修改zoo.cfg来配置zookeeper,

一个更加简单的方法是在 conf/hbase-site.xml里面修改zookeeper的配置。Zookeeer的配置是作为property写在 hbase-site.xml里面的。

对于zookeepr的配置,你至少要在 hbase-site.xml中列出zookeepr的ensemble servers,具体的字段是 hbase.zookeeper.quorum.该这个字段的默认值是 localhost,这个值对于分布式应用显然是不可以的. (远程连接无法使用)。

hbase.zookeeper.property.clientPort:ZooKeeper的zoo.conf中的配置。 客户端连接的端口。

hbase.zookeeper.quorum:Zookeeper 集群的地址列表,用逗号分割。例 如:”host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”.默认是 localhost,是给伪分布式用的。要修改才能在完全分布式的情况下使用。如果在hbase-env.sh设置了HBASE_MANAGES_ZK, 这些ZooKeeper节点就会和Hbase一起启动。

默认: localhost

运行一个zookeeper也是可以的,但是在生产环境中,你最好部署3,5,7个节点。部署的越多,可靠性就 越高,当然只能部署奇数个,偶数个是不可以的。你需要给每个zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘。 (独立磁盘可以确保zookeeper是高性能的。).如果你的集群负载很重,不要把Zookeeper和RegionServer运行在同一台机器上 面。就像DataNodes 和 TaskTrackers一样

配置regionservers

完全分布式模式的还需要修改conf/regionservers,在这里列出了你希望运行的全部HRegionServer,一行写一个host (就像Hadoop里面的 slaves 一样),列在这里的server会随着集群的启动而启动,集群的停止而停止。

同步配置到regionservers

启动Hbase

通过JPS命令查看一下进程是否启动

看到Hmaster和HRegionServer说明Hbase启动已经好了。

可以到HDFS集群看到/hbase的目录,文件如下:

查看Zookeeper,也可以看到一个Hbase目录:

此时,可以通过Hmaster的16010端口通过Web界面查看相关信息:

Hadoop实战:Hbase分布式集群安装

可以在Hbase Shell停止Hbase

停止操作需要一些时间,你的集群越大,停的时间可能会越长。如果你正在运行一个分布式的操作,要确认在Hbase彻底停止之前,Hadoop不能停。

四、Hbase Shell

一旦 Hbase 启动,就可以进行建表,插入数据,scan 你的表,还有 disable 这个表,最后把它删掉。

shell 连接你的 Hbase

输入 help 然后 <RETURN> 可以看到一列 shell 命令。这里的帮助很详细,要注意的是表名,行和列需要加引号。创建一个名为 hbase_table 的表,这个表只有一个column family 为 cf。可以列出所有的表来检查创建情况,然后插入些值。

以上我们分别插入了 3 行。第一个行 key 为 row1,列为 cf:a,值是 value1。Hbase 中的列是由 column family 前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是 a。

检查插入情况,Scan 这个表,操作如下:

disable 再 drop 这张表,可以清除你刚刚的操作。

最后 exit 退出 shell。

完结。。。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (2)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!