HBase——完全分布
实际上,在真实环境中你需要使用完全分布配置完整测试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-b
和node-c
写日志。最简单的方法是所有的主机使用相同的用户名,并在node-a
配置无密码访问SSH它们。
- 在
node-a
,生成一个密钥对。
使用运行HBase的用户登录,生成一个SSH密钥对,用下列命令:
$ ssh-keygen -t rsa
如果命令成功,密钥对的地址会打印在标准输出。默认的公钥名称是id_rsa.pub
。
2. 在其他节点服务器创建保存共享密钥的文件夹。
在node-b
和node-c
,用运行HBase的用户登录用户根目录创建一个.ssh/
的文件夹。如果已存在,注意可能包含其他的密钥。
3. 把公钥复制到其他的节点上
安全的把node-a
中的公钥复制到其他的节点上,使用scp
或者其他的安全措施。在其他每个节点服务器上,创建一个名为.ssh/authorized_keys
的文件,把id_rsa.pub
文件追加在它后面。注意,你也需要在node-a
中这么做。
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
- 测试无密码登录
如果你操作过程正确的话,那么你在node-a
中使用同样的用户名SSH登录其他节点,将不会提示输入密码。 - 由于
node-b
会运行一个备份Master,重复以上步骤。把node-a
换成node-b
。注意,不要覆盖.ssh/authorized_keys
,而是把新的密钥使用>>
操作连接在文件的后面。
步骤:准备 node-a
node-a
将运行你的主master和Zookeeper进程,但是没有RegionServers。在node-a
中停止已运行的RegionServer
。
- 编辑
conf/regionservers
,删除包含localhost的行。在node-b
和node-c
中添加 hostname 或IP地址。
即使你想在node-a
中运行RegionServer,你也要参考其他服务器上的交互方式使用hostname和IP。在此例中,是node-a.example.com
。 - 配置
node-b
为备份master
在conf/
中创建一个文件backup-masters
,添加一行node-b
hostname,此例中的hostname是node-b.example.com
。 - 配置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>
- 在你的任何配置中,
node-a
的localhost
都需要改成其他主机需要引用的node-a
主机名。在此例中,主机名是node-a.example.com
。
步骤:准备node-b
和node-c
node-b
将要运行一个备份master服务和一个Zookeeper实例。
- 下载和解压HBase。
在node-b
中,下载和解压HBase,正如快速指南中的独立和为分布模式。 - 把
node-a
中的配置文件复制到node-b
和node-c
。
你集群的每个节点都需要有同样的配置信息。把node-a
中的conf/
目录复制到node-b
和node-c
中。
步骤:启动和测试集群
- 确认所有节点都没有运行HBase
如果你忘了停止之前测试的HBase,将会出错。用jps命令检查看所有服务器上是否还有HBase在运行。查看进程HMaster
,HRegionServer
和HQuorumPeer
。如果存在这些进程,干掉它们。 - 启动集群。
在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。
浏览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点击他们的链接。当节点或服务消失时检查发生了生么。
在你配置的三个节点的集群中,事情不会很复杂。你甚至可以在主Master或者一个RegionServer消失时通过杀死进程观察日志查看发生什么。
HBase——完全分布的更多相关文章
- Zookeeper,Hbase 伪分布,集群搭建
工作中一般使用的都是zookeeper和Hbase的分布式集群. more /etc/profile cd /usr/local zookeeper-3.4.5.tar.gz zookeeper在安装 ...
- HDFS之HBase伪分布安装
1.HBase简介 HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据 存储文件 ...
- hbase伪分布
1.编辑 conf/hbase-env.sh来告知HBase java的安装路径.在这个文件里你还可以设置HBase的运行环境,诸如 heapsize和其他 JVM有关的选项, 还有Log文件地址,等 ...
- HBase全分布安装配置
分布式的hbase依赖于Zookeeper集群所有正常工作节点都必须能够访问zookeeper:用户可以通过启动和关闭脚本就可以把zookeeper当做hbase的一部分来启动和关闭进程:当然,用户也 ...
- HBase伪分布安装
1把hbase-0.94.2-security.tar.gz复制到/usr/local 2 解压缩.重命名.设置环境变量 cd /usr/local tar -zxvf hbase--security ...
- hadoop学习笔记之-hbase完全分布模…
安装环境: OS: Oracle linux 5.6 JDK: jdk1.6.0_18 Hadoop: hadoop-0.20.2 Hbase: hbase-0.90.5 安装准备: 1. Jdk环境 ...
- hbase伪分布安装配置
hbase1.2.4 伪分布式安装 注意:在安装hbase或者hadoop的时候,要注意hadoop和hbase的对应关系.如果版本不对应可能造成系统的不稳定和一些其他的问题.在hbase的lib ...
- Zookeeper、HBase的伪分布
1.Zookeeper伪分布的部署(3个节点) 所谓的“伪分布式集群”就是在一台服务器中,启动多个Zookeeper实例.“完全分布式集群”是每台服务器,启动一个Zookeeper实例. 1.1.解压 ...
- HBase如何选取split point
hbase region split操作的一些细节,具体split步骤很多文档都有说明,本文主要关注regionserver如何选取split point 首先推荐web ui查看hbase regi ...
随机推荐
- Java EE 学习(3):IDEA + maven 搭建 web(1)
摘要: 主要讲解使用 IDEA 开发 Spring MVC 的环境搭建,Maven的简单教学. 参考1:https://my.oschina.net/gaussik/blog/385697 参考2:h ...
- 使用mapMutations扩展写法后参数传递的办法
在没使用扩展办法的时候,在组件当中通过下面方式进行传参 testMethods(data) { this.$store.commit("add",data) } 而使用了扩展函数了 ...
- 2017-2018-2 20179204《网络攻防实践》第十三周学习总结 python实现国密算法
国密商用算法是指国密SM系列算法,包括基于椭圆曲线的非对称公钥密码SM2算法.密码杂凑SM3算法.分组密码SM4算法,还有只以IP核形式提供的非公开算法流程的对称密码SM1算法等. 第1节 SM2非对 ...
- [AGC016B] Colorful Hats (结论)
Description 有n个人,每个人都戴着一顶帽子.当然,帽子有不同的颜色. 现在,每个人都告诉你,他看到的所有其他人的帽子共有多少种颜色,请问你有没有符合所有人的描述的情况. Input 第一行 ...
- 【BZOJ4504&&Hihocoder1046】K个串(主席树,堆)
题意:一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次)询问第k大的和是多少 1 <= n <= 100000, 1 < ...
- 8个学习.net的博客链接 (以前收藏过更多的,被百度新版搞没了,恨死了)
原文发布时间为:2012-09-18 -- 来源于本人的百度文章 [由搬家工具导入] Simone Chiaretta’s CodeClimber http://www.haacked.com/ ( ...
- Scrapy学习-24-集成elasticsearch
elasticsearch简单集成到scrapy中 使用elasticsearch的python接口处理数据 https://github.com/elastic/elasticsearch-dsl ...
- python名词解释(生成器,匿名函数)
1.生成器:能够保持状态的迭代器,下次进去还是之前出来的状态 http://www.oschina.net/translate/improve-your-python-yield-and-genera ...
- 启动tomcat服务器自动执行一个方法
第一步:配置web.xml文件 添加如下代码 <servlet> <servlet-name>Timer</servlet-name> <servlet-cl ...
- fprintf与fscanf
#include <stdio.h> int main() { //printf("Please input the value a:\n"); 等于下一句 fprin ...