hadoop - HDFS 节点之间的数据如何拆分?
问题描述
在这里,我假设我有一个由 4 个节点组成的集群,并且我有 500GB 的数据量。然后在具有默认块大小(64Mb)的 Hadoop1 中,数据块将如何分配给节点,我也假设复制因子为 3。
我的理解:如果我有 200Mb 数据,那么在默认块大小(64Mb)的 Hadoop1 中,数据被分成 4 个块 64+64+64+8 并且在四个节点中,所有四个块都将存在并且是副本。
我添加了一张图片以显示我的理解。如果我的理解是正确的,那么如果不能帮助我理解,它将如何处理 500Mb 数据。 我对HDFS的理解
解决方案
是的,你的理解是正确的。HDFS 中的默认块大小对于 1.x 版本是 64Mb,对于 2.x 是 128Mb。如果块没有完成,它就像是孢子一样。但如果需要,您可以配置大小。
默认复制因子为 3,但也可以更改配置,因此如果您有机架感知配置块被复制:
- 一个块放置在某个节点上
- 第二块与第一块放在同一个机架上
- 第三块放置在不同的机架上
有关更多详细信息,您可以查看这篇文章
推荐阅读
- java - Java 类设计 - 最佳方法的建议。类扩展抽象类并实现接口
- c - 函数内的 Realloc - 损坏的大小与 prev_size
- python - 使用 **kwds 时避免 pandas 改变绘图颜色
- java - Lombok 和 Spock:@RequiredArgsConstructor 不会隐藏具有接口类型的字段的默认无参数构造函数
- sql - 如何解决 System.Data.DataRowView' 不包含名称为 'date' 的属性错误?
- postgresql - 如何每 5 分钟将 PostgreSQL 流复制文件复制到某个 HDD 驱动器
- c# - SimpleInjector 在使用泛型接口时注入一个空集合
- javascript - 导致组件中未定义行为的路由
- java - 垃圾回收期间何时调用 finalize()?
- laravel - 哪个文件处理 Laravel 中的重定向代码