gpt4 book ai didi

hadoop - 在内部,在安装的 hadoop 和 hive 集群中,发生了什么?

转载 作者:可可西里 更新时间:2023-11-01 16:17:31 26 4
gpt4 key购买 nike

我有一个 4 节点集群,我在所有节点中安装了 Hive(1 个名称节点和 3 个数据节点)。

我正在访问名称节点。当我想放一个文件时会发生什么。在内部名称节点和数据节点之间发生了什么?

同样,当我想通过数据节点放置一个文件时会发生什么?

我们在 Hive 中创建的表存储在哪里?

最佳答案

我建议看一下 this excellent comic on how HDFS works .总结发生的事情:

  • 客户端知道 block 大小(默认 64Mb),因此它首先将您的文件拆分为由该 block 大小定义的 block 。
  • 然后对于每个 block ,它将向 NameNode 发送一个查询,询问它可以将这个 block 写入哪些数据节点以及它想要写入多少数据节点(复制因子)。
  • Namenode 回复一个数据节点地址列表,按照与客户端的距离递增排序。
  • 客户端将 block 数据连同其他数据节点的地址一起发送到最近的数据节点。
  • 第一个数据节点还将传入的数据流式传输到提供给客户端的列表中最近的数据节点,并将列表传递给第二个数据节点。
  • 第二个数据节点做同样的事情,如果需要也会将数据流式传输到另一个数据节点。
  • 当输入文件的给定 block 的所有数据都写入数据节点时,它们都会通知名称节点它们已完成存储该 block 。
  • 完成数据节点后,客户端将要求对输入文件的其他 block 执行相同的操作。
  • 当所有 block 都像这样存储后,客户端将告诉 Namenode 它已完成,以便 Namenode 可以将有关此文件的元数据保存到磁盘。

有点复杂,但这就是协议(protocol)的样子。

当您在 Hive 中创建表时,关于该表的元数据(列、SerDe、位置等)会进入 Hive Metastore,它是所有 Hive 表的中央存储库。这个 Metastore 有几个后端,最常见的是 Derby 或 MySQL,这是通过属性 javax.jdo.option.ConnectionURLjavax.jdo.option.ConnectionDriverName< 控制的 在您的 Hive 配置中。最终,数据最终位于 HDFS 中由 hive.metastore.warehouse.dir 控制的目录中,默认为 /user/hive/warehouse

关于hadoop - 在内部,在安装的 hadoop 和 hive 集群中,发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16890438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com