hadoop - Hbase-hadoop集成中datanode、regionserver的作用

标签 hadoop hbase

根据我的理解,行被插入到 HBase 表中,并作为区域存储在不同的区域服务器中。因此,区域服务器存储数据

与 Hadoop 类似,数据存储在 hadoop 集群中的数据节点中。

假设我在 Hadoop 1.1.1 之上配置了 HBase 0.90.6,如​​下所示

2 个节点 - 主从

  1. 主节点充当,
    • Hadoop - Namenode、Secondary Namenode、作业跟踪器、数据节点、任务跟踪器
    • HBase - Master、RegionServer 和 zookeeper。
  2. 从节点充当,
    • Hadoop 数据节点和任务跟踪器
    • HBase 区域服务器

根据我的说法,如果表数据存储在区域服务器中;那么数据节点和区域服务器的作用是什么?

最佳答案

数据节点存储数据。区域服务器本质上是缓冲 I/O 操作;数据永久存储在HDFS(即数据节点)上。我不认为将区域服务器放在“主”节点上是个好主意。

这是区域管理方式的简化图:

你有一个运行 HDFS(NameNode + DataNodes)的集群,复制因子为 3(每个 HDFS block 被复制到 3 个不同的 DataNodes)。

您在与 DataNode 相同的服务器上运行 RegionServers。当写入请求到达 RegionServer 时,它首先将更改写入内存和提交日志;然后在某个时候它决定是时候将更改写入 HDFS 上的永久存储。这是数据局部性发挥作用的地方:由于您在同一台服务器上运行 RegionServer 和 DataNode,因此文件的第一个 HDFS block 副本将写入同一台服务器。另外两个副本将写入其他 DataNode。因此,为该区域提供服务的 RegionServer 几乎总是可以访问本地数据副本。

如果 RegionServer 崩溃或 RegionMaster 决定将区域重新分配给另一个 RegionServer(以保持集群平衡)怎么办?新的 RegionServer 将被迫首先执行远程读取,但一旦执行压缩(将更改日志合并到数据中) - 新文件将由新的 RegionServer 写入 HDFS,并在 RegionServer 上创建本地副本(同样,因为 DataNode 和 RegionServer 运行在同一台服务器上)。

注意:如果 RegionServer 崩溃,之前分配给它的区域将被重新分配给多个 RegionServer。

好的读物:

  • Tom White,“Hadoop,权威指南”对 HDFS 架构有很好的解释。不幸的是,我没有阅读原始的 Google GFS 论文,所以我不知道它是否容易理解。

  • Google BigTable文章。 HBase 是 Google BigTable 的实现,我发现本文中的架构描述是最容易理解的。

以下是 Google Bigtable 和 HBase 实现之间的命名差异(来自 Lars George,“HBase,权威指南”):

  • HBase - 大表
  • 地区 - 平板电脑
  • RegionServer - 平板服务器
  • Flush - 轻微压实
  • 次要压缩 - 合并压缩
  • 主要压缩 - 主要压缩
  • Write ahead log - 提交日志
  • HDFS - GFS
  • Hadoop MapReduce - MapReduce
  • MemStore - 内存表
  • HFile - SSTable
  • 动物园管理员 - 胖乎乎的

关于hadoop - Hbase-hadoop集成中datanode、regionserver的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13741946/

相关文章:

solr - 在 HBase 之上的 solr 中创建索引

java - 设置多节点集群来运行mapreduce程序

java - 带有openjdk的Hadoop:start-dfs.sh(SSH?)错误

java - MapReduce 作业挂起

hadoop - Hbase 和 apache drill 存储插件

hadoop - 为什么使用 MapReduce 与 HBase shell 过滤器

shell - get "ERROR: Can' t 从 ZooKeeper 获取主地址; znode data == null"使用 Hbase shell 时

hadoop - 在条件未显示Hive的预期输出的情况下很简单

apache-spark - Parquet 表中的TIMESTAMP列CDH5与CDH6

hbase - 在 Hbase 中为大型扫描禁用 block 缓存