HBase region server和Hadoop数据节点应该在同一台机器上吗?

Should the HBase region server and Hadoop data node on the same machine?

抱歉,我没有资源来设置集群来测试它,我只是想知道:

  1. 我可以将 hbase 区域服务器部署在 hadoop 数据节点机器以外的单独机器上吗?我想答案是肯定的,但我不确定。

  2. hbase region server和hadoop data node部署在不同机器上好还是不好?

  3. 当把一些数据放入hbase时,这些数据最终存储在什么地方,data node还是region server?我猜是data node,但是region server里面的StoreFile和HFile是什么东西,不就是存放我们数据的物理文件吗?

谢谢!

  1. 如果您想要良好的性能,RegionServers 应该始终 运行 与分布式集群中的 DataNodes 一起。

  2. 非常糟糕,这将违反数据局部性原则(如果您想了解更多关于数据局部性的信息,请查看:http://www.larsgeorge.com/2010/05/hbase-file-locality-in-hdfs.html

  3. 实际数据将存储在HDFS(DataNode)中,RegionServers负责服务和管理区域。

有关 HBase 架构的更多信息,请查看来自 Lars 博客的优秀 post:http://www.larsgeorge.com/2009/10/hbase-architecture-101-storage.html

顺便说一句,只要您的 PC 具有合适的 RAM,您就可以使用虚拟机设置演示集群。切勿在未先在开发环境中正确测试平台的情况下尝试设置生产环境。

要详细了解

  1. RegionServers should always run alongside? DataNodes in distributed clusters if you want decent performance."

我不确定会有人如何将 一词并列,所以让我们尽量 精确:

  1. 使任何物理服务器成为 "XYZ" 服务器的原因在于它 运行 运行一个称为守护程序的程序(想想 "eternally-running background event-handling" 程序);
  2. "file" 服务器之所以成为 运行 文件服务 守护进程
  3. 使 "web" 服务器成为 运行 网络服务 守护进程 的原因; 和
  4. 使 "data node" 服务器成为 运行 HDFS 数据服务 守护进程 的原因;
  5. "region" 服务器之所以成为 运行 服务器,是因为它 运行 连接 HBase 区域服务 守护进程 (程序);

因此,在所有 Hadoop 发行版(例如 Cloudera、MAPR、Hortonworks 等)中,一般最佳实践是,对于 HBase,"RegionServers" 是 "co-located","DataNodeServers" .

这意味着构成 HDFS 集群的实际从属(数据节点)服务器每个 运行ning HDFS 数据服务 守护进程(程序) 他们运行宁HBase区域服务守护进程(程序)还有!

通过这种方式,我们可以确保 局部性 - 在 HDFS 集群中的所有单个节点上并发 处理和存储 数据,其中 没有 "movement" 从 "storage" 个位置到 "processing" 个位置的巨大数据负载。位置对于 Hadoop 集群的成功至关重要,因此 HBase 区域服务器(数据节点 运行 以及 HBase 守护程序)必须 完成所有处理(putting/getting/scanning) on 每个数据节点包含构成 HRegion 的 HFiles,构成 HTables 的 HTables 构成 HBases (Hadoop-dataBases) ... .

因此,服务器(Windows、Linux、.. 上的虚拟机或物理服务器)通常可以 运行 多个 守护进程,他们 运行 经常有几十个。