5

现在我正在学习 HBase。我像这样设置了我的 HBase 集群和 Hadoop 集群:

server1: Namenode HMaster
server2: datanode1 RegionServer1 HQuorumPeer
Server3: datanode2 RegionServer2 HQuorumPeer
Server4: datanode3 RegionServer3 HQuorumPeer

我有几个关于 HBase 集群的问题:

1: All RegionServers must be in the Hadoop Cluster so it can use HDFS to store 
   data, even though it will store data into local file system, right?
2: What does RegionServer do? Does the HMaster give the job to all RegionServeres 
   and let them running parallel, like tasktracker in datanode? 
3: What does zookeeper do? Do I need to setup zookeeper in all RegionServers 
   nodes and the master node? 
4: It is related to #3. I know HBase uses zookeeper to recovery once regionServer 
   is down. How does it specific work?   
4

1 回答 1

17

所有 RegionServer 都必须在 Hadoop 集群中,这样它才能使用 HDFS 来存储数据,即使它会将数据存储到本地文件系统中,对吧?

是的。RegionServers 是负责在 HBase 集群中存储数据的守护进程。您将数据存储在 HBase 表中,这些表分布在集群中多个 RegionServer 上的许多区域中。虽然数据进入 RegionServers,但它实际上存储在 HDFS 中。但是,如果您在独立设置上,则不使用 HDFS。数据直接存储在本地 FS 中。它类似于任何 DB 和 FS。以 MSQL 和 ext3 为例。是的,所有 HDFS 数据实际上都存储在您的磁盘上。但是,您无法直接看到它。

RegionServer 是做什么的?HMaster 是否将工作交给所有 RegionServeres 并让它们并行运行,就像 datanode 中的 tasktracker 一样?

正如上面评论中所指定的,RegionServer 是实际将数据存储在 HBase 集群中的守护进程。很抱歉,我没有完全理解这个问题的第二部分。像 datanode 中的 tasktracker是什么意思?在 HBase 集群中,HMaster 是负责监控集群中所有 RegionServer 实例的守护进程,是所有元数据更改的接口。它的工作是监控和管理。Regionservers 不会像 TaskTrackers 那样运行任何工作。他们只存储数据并负责服务和管理区域等工作。

动物园管理员是做什么的?我需要在所有 RegionServers 节点和主节点中设置 zookeeper 吗?

Zookeeper 是负责协调幕后一切的人。它是用于维护配置信息、命名、提供分布式同步和提供组服务的集中式服务。分布式 HBase 设置依赖于正在运行的 ZooKeeper 集群。所有参与的节点和客户端都需要能够访问正在运行的 ZooKeeper 集合。HBase 默认管理一个 ZooKeeper 集群。它作为 HBase 启动/停止过程的一部分启动和停止。但是,您也可以独立于 HBase 管理 ZooKeeper 集成,只需将 HBase 指向它应该使用的集群。您不必在所有节点上都运行 Zookeeper。只需确定一些适合您的集群的数字即可。这里要注意的一件事是,您应该始终使用奇数个 Zookeeper。

它与#3有关。我知道一旦 regionServer 关闭,HBase 就会使用 zookeeper 进行恢复。它具体是如何工作的?

每个 RegionServer 都连接到 ZooKeeper,master 监视这些连接。ZooKeeper 管理带有超时的心跳。因此,在超时时,HMaster 将区域服务器声明为已死,并开始恢复过程。在恢复过程中会发生以下事情:

  • 识别节点宕机:节点可以仅仅因为它超载或者因为它死了而停止响应。
  • 恢复正在进行的写入:即读取提交日志并恢复未刷新的编辑。
  • 重新分配区域:区域服务器之前正在处理一组区域。这个集合必须重新分配给其他区域服务器,具体取决于它们各自的工作负载。

该过程实际上涉及更多。您可以在此处找到更多相关信息。我还建议您阅读 Lars 的《HBase The Definitive Guide》一书,以了解 HBase。

高温高压

于 2013-09-10T23:15:04.913 回答