18

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

谢谢

4

2 回答 2

24

首先,我强烈建议您浏览这些项目的官方页面。去这里查看 HBase 和这里​​查看 Zookeeper。

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

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

HBase 完全依赖 Zookeeper。HBase 为您提供了使用其内置 Zookeeper 的选项,该选项将在您启动 HBAse 时启动。但是,如果您在生产集群上工作,那就不好了。在这种情况下,拥有一个专用的 Zookeeper 集群并将其与您的 HBase 集群集成总是好的。

注意:你的 ZK Quorum 中应该总是有奇数个节点。

高温高压

于 2013-07-29T10:09:26.377 回答
9

概述

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

ZooKeeper是一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。所有这些类型的服务都以某种形式被分布式应用程序使用。每次实施它们时,都会进行大量工作来修复不可避免的错误和竞争条件。由于实现这些服务的难度,应用程序最初通常会忽略它们,这使得它们在发生变化时变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。

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

  • 主服务器 - 主服务器 (HMaster) 协调集群并执行管理操作,例如分配区域和平衡负载。
  • 区域服务器 - 区域服务器做真正的工作。每个表的数据子集由每个区域服务器处理。客户端与区域服务器对话以访问 HBase 中的数据。

HBaseZookeeper之间的连接:

分布式 HBase 完全依赖 Zookeeper(用于集群配置和管理)。在 Apache HBase 中,ZooKeeper 在 Master 和 RegionServer 之间协调、通信和共享状态。HBase 的设计策略是仅将 ZooKeeper 用于瞬态数据(即用于协调和状态通信)。因此,如果 HBase 的 ZooKeeper 数据被删除,只有临时操作会受到影响——数据可以继续写入 HBase 或从 HBase 读取数据。

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

$ jps

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

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer

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

export HBASE_MANAGES_ZK=true

一旦设置完毕,我们需要做的就是在文档中设置以下指令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>
于 2016-04-14T05:24:20.003 回答