实际上,在真实环境中你需要使用完全分布配置完整测试HBase。在一个分布式配置中,集群有多个节点,每个节点运行一个或多个HBase守护进程。其中包括主Master和备份Master实例,多个Zookeeper节点,多个RegionServer节点。

这个进阶教程将在你的集群上另加两个节点。架构如下:

表1. 分布式集群示例架构

Node Name Master ZooKeeper RegionServer
node-a.example.com
node-b.example.com 备份
node-c.example.com

确认所有节点都可以通信,且没有添加防火墙规则岛主通信失败。如果你看到任何类似no route to host错误,检查你的防火墙

步骤:配置无密码访问SSH

为了可以启动守护进程,node-a需要能够往node-bnode-c写日志。最简单的方法是所有的主机使用相同的用户名,并在node-a配置无密码访问SSH它们。

  1. node-a,生成一个密钥对。

    使用运行HBase的用户登录,生成一个SSH密钥对,用下列命令:
$ ssh-keygen -t rsa

如果命令成功,密钥对的地址会打印在标准输出。默认的公钥名称是id_rsa.pub

2. 在其他节点服务器创建保存共享密钥的文件夹。

node-bnode-c,用运行HBase的用户登录用户根目录创建一个.ssh/的文件夹。如果已存在,注意可能包含其他的密钥。

3. 把公钥复制到其他的节点上

安全的把node-a中的公钥复制到其他的节点上,使用scp或者其他的安全措施。在其他每个节点服务器上,创建一个名为.ssh/authorized_keys的文件,把id_rsa.pub文件追加在它后面。注意,你也需要在node-a中这么做。

$ cat id_rsa.pub >> ~/.ssh/authorized_keys
  1. 测试无密码登录

    如果你操作过程正确的话,那么你在node-a中使用同样的用户名SSH登录其他节点,将不会提示输入密码。
  2. 由于node-b会运行一个备份Master,重复以上步骤。把node-a换成node-b。注意,不要覆盖.ssh/authorized_keys,而是把新的密钥使用>>操作连接在文件的后面。

步骤:准备 node-a

node-a将运行你的主master和Zookeeper进程,但是没有RegionServers。在node-a中停止已运行的RegionServer

  1. 编辑conf/regionservers,删除包含localhost的行。在node-bnode-c中添加 hostname 或IP地址。

    即使你想在node-a中运行RegionServer,你也要参考其他服务器上的交互方式使用hostname和IP。在此例中,是node-a.example.com
  2. 配置node-b为备份master

    conf/中创建一个文件backup-masters,添加一行node-b hostname,此例中的hostname是node-b.example.com
  3. 配置Zookeeper

    事实上,你应该仔细考虑你的Zookeeper配置。在 zookeeper 文档中你会找到更多细节。这份配置指导集群中的一个HBase启动和管理一个Zookeeper示例。

    node-a上,编辑conf/hbase-site.xml并添加下列属性。
<property>
<name>hbase.zookeeper.quorum</name>
<value>node-a.example.com,node-b.example.com,node-c.example.com</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/zookeeper</value>
</property>
  1. 在你的任何配置中,node-alocalhost都需要改成其他主机需要引用的node-a主机名。在此例中,主机名是node-a.example.com

步骤:准备node-bnode-c

node-b将要运行一个备份master服务和一个Zookeeper实例。

  1. 下载和解压HBase。

    node-b中,下载和解压HBase,正如快速指南中的独立和为分布模式。
  2. node-a中的配置文件复制到node-bnode-c

    你集群的每个节点都需要有同样的配置信息。把node-a中的conf/目录复制到node-bnode-c中。

步骤:启动和测试集群

  1. 确认所有节点都没有运行HBase

    如果你忘了停止之前测试的HBase,将会出错。用jps命令检查看所有服务器上是否还有HBase在运行。查看进程HMasterHRegionServerHQuorumPeer。如果存在这些进程,干掉它们。
  2. 启动集群。

    node-a中,运行start-hbase.sh 命令。你的输出会类似下面:
$ bin/start-hbase.sh
node-c.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-c.example.com.out
node-a.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-a.example.com.out
node-b.example.com: starting zookeeper, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-zookeeper-node-b.example.com.out
starting master, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-node-a.example.com.out
node-c.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-c.example.com.out
node-b.example.com: starting regionserver, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-regionserver-node-b.example.com.out
node-b.example.com: starting master, logging to /home/hbuser/hbase-0.98.3-hadoop2/bin/../logs/hbase-hbuser-master-nodeb.example.com.out

Zookeeper首先启动,然后是master和RegionServers最后启动备份 master。

3. 检查进程运行。

在集群每个节点上运行jps命令,检查每个服务器都正确运行了进程。你也可能看到一些其他的Java进程运行在服务器上,它们有其他的用途。

*例2. node-a jps输出 *

$ jps

20355 Jps

20071 HQuorumPeer

20137 HMaster

例3. node-b jps输出

$ jps

15930 HRegionServer

16194 Jps

15838 HQuorumPeer

16010 HMaster

例4. node-a jps输出

$ jps

13901 Jps

13639 HQuorumPeer

13737 HRegionServer

ZooKeeper 程序名

HQuorumPeer 进程是一个ZooKeeper实例,由HBase控制和启动。如果你如此使用ZooKeeper,那么每个节点限制一个实例,适合测试使用。如果ZooKeeper不由HBase控制,进程叫QuorumPeer。对于更多的ZooKeeper配置,包括HBase之外的ZooKeeper实例,请看zookeeper

  1. 浏览Web UI

    在0.98x版本以后,HTTP端口由Master的60010端口和RegionServer的60030的端口改为16010和16030。

    如果所有都正确的话,你可以在浏览器中http://node-a.example.com:16010/看到Master的UI,http://node-b.example.com:16010/看到备份Master的UI。如果你可以通过localhost连接而host不能,检查下你的防火墙策略。你可以看使用各自RegionServer服务器的IP和16030端口查看Region Web UI,或者通过Master点击他们的链接。

  2. 当节点或服务消失时检查发生了生么。

    在你配置的三个节点的集群中,事情不会很复杂。你甚至可以在主Master或者一个RegionServer消失时通过杀死进程观察日志查看发生什么。

HBase——完全分布的更多相关文章

  1. Zookeeper,Hbase 伪分布,集群搭建

    工作中一般使用的都是zookeeper和Hbase的分布式集群. more /etc/profile cd /usr/local zookeeper-3.4.5.tar.gz zookeeper在安装 ...

  2. HDFS之HBase伪分布安装

    1.HBase简介 HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据 存储文件 ...

  3. hbase伪分布

    1.编辑 conf/hbase-env.sh来告知HBase java的安装路径.在这个文件里你还可以设置HBase的运行环境,诸如 heapsize和其他 JVM有关的选项, 还有Log文件地址,等 ...

  4. HBase全分布安装配置

    分布式的hbase依赖于Zookeeper集群所有正常工作节点都必须能够访问zookeeper:用户可以通过启动和关闭脚本就可以把zookeeper当做hbase的一部分来启动和关闭进程:当然,用户也 ...

  5. HBase伪分布安装

    1把hbase-0.94.2-security.tar.gz复制到/usr/local 2 解压缩.重命名.设置环境变量 cd /usr/local tar -zxvf hbase--security ...

  6. hadoop学习笔记之-hbase完全分布模…

    安装环境: OS: Oracle linux 5.6 JDK: jdk1.6.0_18 Hadoop: hadoop-0.20.2 Hbase: hbase-0.90.5 安装准备: 1. Jdk环境 ...

  7. hbase伪分布安装配置

    hbase1.2.4 伪分布式安装   注意:在安装hbase或者hadoop的时候,要注意hadoop和hbase的对应关系.如果版本不对应可能造成系统的不稳定和一些其他的问题.在hbase的lib ...

  8. Zookeeper、HBase的伪分布

    1.Zookeeper伪分布的部署(3个节点) 所谓的“伪分布式集群”就是在一台服务器中,启动多个Zookeeper实例.“完全分布式集群”是每台服务器,启动一个Zookeeper实例. 1.1.解压 ...

  9. HBase如何选取split point

    hbase region split操作的一些细节,具体split步骤很多文档都有说明,本文主要关注regionserver如何选取split point 首先推荐web ui查看hbase regi ...

随机推荐

  1. gradle ofbiz 16 开发环境搭建

    原 gradle ofbiz 16 开发环境搭建 2017年02月13日 10:59:19 阅读数:2702 1.安装jdk 2.配置jdk环境变量 3.eclipse 安装svn 插件 4.svn下 ...

  2. [AGC06D] Median Pyramid Hard (玄学)

    Description 现在有一个N层的方块金字塔,从最顶层到最底层分别标号为1...N. 第i层恰好有2i−1个方块,且每一层的中心都是对齐的. 这是一个N=4的方块金字塔 现在,我们首先在最底层填 ...

  3. SQLite-FMDatabase用法

    FMDatabase用法 转载 http://blog.sina.com.cn/s/blog_94d94f1a01015gcr.html 以下是FMDB的一些基本使用,FMDB框架其实只是一层很薄的封 ...

  4. 使用T4模板创建一个例子

    1.创建项目,添加新项,名称处填写Messages.tt,如下图: 添加后,Messages.tt文件内容如下: <#@ template debug="false" hos ...

  5. Berkeley DB Java Edition 简介

    一.             简介        Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据. l         能够高效率的 ...

  6. 【eclipse】导入/导出开发环境(包括编辑器字体颜色大小等)

    Eclipse的 File -> Export(导出),在窗口中展开 General(常规) -> Perferences(首选项)-->Export all(全部导出)然后点击 N ...

  7. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---45

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. arduino ide的串口权限解决

    刚刚到手一个Arduino uno R3的板子,windows下arduino IDE的串口正常使用,linux下却出现权限问题,解决方案如下:(以下操作使用超级用户) 1.查看设备所在的组ls -l ...

  9. webpack 2.6.1配置笔记

    2017-09-11更新:更新到webpack 2.6.1所对应的配置,完善部分代码注释. 由于最近在vue-cli生成的webpack模板项目的基础上写一个小东西,开发过程中需要改动到build和c ...

  10. poj 2100(尺取法)

    Graveyard Design Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 6107   Accepted: 1444 ...