美文网首页我爱编程
HBase——完全分布

HBase——完全分布

作者: ximengchj | 来源:发表于2017-02-15 14:49 被阅读0次

    实际上,在真实环境中你需要使用完全分布配置完整测试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

    1. 在其他节点服务器创建保存共享密钥的文件夹。
      node-bnode-c,用运行HBase的用户登录用户根目录创建一个.ssh/的文件夹。如果已存在,注意可能包含其他的密钥。
    2. 把公钥复制到其他的节点上
      安全的把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。

    1. 检查进程运行。
      在集群每个节点上运行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——完全分布

        本文链接:https://www.haomeiwen.com/subject/uelqwttx.html