我在我的Ubuntu机器上安装了Hadoop单节点集群,并且能够运行NameNode,datanode等。现在我需要安装HBase和Zookeeper。但我真的不知道它们是什么。伙计们可以让我简要介绍一下这些工具。
由于
答案 0 :(得分:23)
首先,我强烈建议您浏览这些项目的官方页面。对于HBase,请转到here,对于Zookeeper,请转到here。
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
答案 1 :(得分:7)
概述:
Zookeeper :简而言之,zookeeper是一个分布式应用程序(集群)配置和管理工具,它独立于HBase退出。来自文档:
ZooKeeper是用于维护配置的集中服务 信息,命名,提供分布式同步,以及 提供团体服务。所有这些服务都用于 某种形式或分布式应用程序。他们每次都是 实施了很多修复bug的工作 竞争条件是不可避免的。因为困难 通常最初实现这些类型的服务 吝啬它们,使它们在变化和变化的情况下变脆 难以管理。即使做得正确,也不同 这些服务的实现会导致管理复杂性 应用程序已部署。
HBase :HDFS之上的NoSQL数据存储区(可以使用简单的文件系统,但它保证没有数据持久性)。 HBase包含两个主要服务:
HBase 与 Zookeeper 之间的关联:
分布式HBase完全依赖Zookeeper(用于群集配置和管理)。在Apache HBase中,ZooKeeper在Masters和RegionServers之间协调,通信和共享状态。 HBase的设计策略是仅将ZooKeeper用于瞬态数据(即用于协调和状态通信)。因此,如果删除HBase的ZooKeeper数据,只会影响瞬态操作 - 可以继续写入数据并从HBase读取数据。
启动HBase后 - 您可以使用jps
命令验证它已启动的进程:
$ jps
该命令将列出机器上的所有java进程(HBase本身是一个Java应用程序) - 可能的输出(如果是简单的独立HBase设置)必须是:
62019 Jps
61098 HMaster
61233 HRegionServer
61003 HQuorumPeer
从技术上讲:
默认情况下,HBase管理zookeeper本身,即当我们启动和停止HBase时启动和停止zookeeper仲裁(zookeeper节点集群) - 验证设置查看文件conf/hbase-evn.sh
(在你的hbase目录中)必须有一个行:
export HBASE_MANAGES_ZK=true
设置完毕后,我们需要做的就是在conf/hbase-site.xml
- from docs中设置以下指令:
<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>