Hadoop中的HBase和ZooKeeper角色?

Rad*_*hna 18 hadoop

我已经在我的Ubuntu机器上安装了Hadoop单节点集群,并且能够运行NameNode,datanode等.现在我需要安装HBase和Zookeeper.但我真的不知道它们是什么.伙计们可以任何人给我简要说明这些工具.

谢谢

Tar*_*riq 23

首先,我强烈建议您浏览这些项目的官方页面.走在这里的HBase的和这里的动物园管理员.

HBase是一个NoSQL数据存储区,运行在现有Hadoop集群(HDFS)之上.它为您提供随机,实时读/写等功能,这是FS缺乏的HDFS.由于它是NoSQL数据存储区,因此它不遵循SQL约定和术语.HBase提供了一组很好的API(包括JAVA和Thrift).除此之外,HBase还提供与MapReduce框架的无缝集成.但是,除了HBase的所有这些优点之外,您应该记住,随机读写很快但总是有额外的开销.所以在做出任何决定之前要好好思考.

ZooKeeper是分布式应用程序(如HBase)的高性能协调服务.它在一个简单的界面中公开了命名,配置管理,同步和组服务等常用服务,因此您无需从头开始编写它们.您可以使用现成的方法来实现共识,组管理,领导者选举和在线协议.您可以根据自己的特定需求进行构建.

HBase完全依赖于Zookeeper.HBase为您提供了使用其内置Zookeeper的选项,它将在您启动HBAse时启动.但是,如果您正在生产集群,那就不好了.在这种情况下,拥有专用的Zookeeper集群并将其与HBase集群集成始终是件好事.

注意:您的ZK仲裁中应始终有奇数个节点.

HTH


Nab*_*med 8

概述:

Zookeeper:简而言之,zookeeper是一个分布式应用程序(集群)配置和管理工具,它独立于HBase退出.来自文档:

ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务.所有这些类型的服务都以分布式应用程序的某种形式使用.每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件.由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理.即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性.

HBase:HDFS之上的NoSQL数据存储区(可以使用简单的文件系统,但它保证没有数据持久性).HBase包含两个主要服务:

  • 主服务器 - 主服务器(HMaster)协调集群并执行管理操作,例如分配区域和平衡负载.
  • 区域服务器 - 区域服务器完成实际工作.每个表的数据的子集由每个区域服务器处理.客户端与区域服务器通信以访问HBase中的数据.

HBaseZookeeper之间的连接:

分布式HBase完全依赖Zookeeper(用于集群配置和管理).在Apache HBase中,ZooKeeper在Masters和RegionServers之间协调,通信和共享状态.HBase的设计策略是仅将ZooKeeper用于瞬态数据(即用于协调和状态通信).因此,如果删除了HBase的ZooKeeper数据,则只会影响瞬态操作 - 可以继续写入数据并从HBase读取数据.

一旦启动了HBase - 您可以使用jps命令验证它已启动的进程:

$ jps
Run Code Online (Sandbox Code Playgroud)

该命令将列出机器上的所有java进程(HBase本身是一个Java应用程序) - 可能的输出(在简单的独立HBase设置的情况下)必须是:

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer
Run Code Online (Sandbox Code Playgroud)

从技术上讲:默认情况下,HBase管理zookeeper本身,即当我们启动和停止HBase时启动和停止zookeeper仲裁(zookeeper节点集群) - 验证设置查看文件conf/hbase-evn.sh(在你的hbase目录中)必须有一行:

export HBASE_MANAGES_ZK=true
Run Code Online (Sandbox Code Playgroud)

一旦设置我们需要做的是设置在下面的指令conf/hbase-site.xml- 从文档:

 <configuration>
    ...
    <property>
      <name>hbase.zookeeper.property.clientPort</name>
      <value>2181</value>
      <description> The port at which the clients will connect.
      </description>
    </property>
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>rs1.example.com,rs2.example.com,rs3.example.com,rs4.example.com,rs5.example.com</value>
      <description>Comma separated list of servers in the ZooKeeper Quorum.
      For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
      By default this is set to localhost for local and pseudo-distributed modes
      of operation. For a fully-distributed setup, this should be set to a full
      list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh
      this is the list of servers which we will start/stop ZooKeeper on.
      </description>
    </property>
    <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/usr/local/zookeeper</value>
      <description>Property from ZooKeeper's config zoo.cfg.
      The directory where the snapshot is stored.
      </description>
    </property>
    ...
  </configuration>
Run Code Online (Sandbox Code Playgroud)