gpt4 book ai didi

java - 了解 Hadoop 文件系统计数器

转载 作者:可可西里 更新时间:2023-11-01 14:20:43 24 4
gpt4 key购买 nike

我想了解 hadoop 中的文件系统计数器。

以下是我运行的作业的计数器。

在我运行的每个作业中,我观察到读取的映射文件字节数几乎等于读取的 HDFS 字节数。而且我观察到map写入的文件字节数是mapper读取的文件字节数和hdfs字节数之和。请帮助!本地文件和 hdfs 是否正在读取相同的数据,并且两者都被映射阶段写入本地文件系统?

                Map                        

FILE_BYTES_READ 5,062,341,139

HDFS_BYTES_READ 4,405,881,342

FILE_BYTES_WRITTEN 9,309,466,964

HDFS_BYTES_WRITTEN 0

谢谢!

最佳答案

所以答案确实是您所注意到的是特定于工作的。与 hdfs 相比,映射器/缩减器将向本地文件写入更多或更少的字节,具体取决于作业。

在您的映射器案例中,您从本地和 HDFS 位置读取的数据量相似,这没有问题。您的 Mapper 代码恰好需要在本地读取与从 HDFS 读取相同数量的数据。大多数时候,Mappers 被用来分析比其 RAM 更大的数据量,因此看到它可能将从 HDFS 获取的数据写入本地驱动器也就不足为奇了。从 HDFS 和本地读取的字节数并不总是看起来像本地写入大小的总和(甚至在您的情况下也不是)。

这是一个使用 TeraSort 的示例,包含 100G 数据和 10 亿个键/值对。

    File System Counters
FILE: Number of bytes read=219712810984
FILE: Number of bytes written=312072614456
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=100000061008
HDFS: Number of bytes written=100000000000
HDFS: Number of read operations=2976
HDFS: Number of large read operations=0

注意事项。从 HDFS 读取和写入的字节数几乎正好是 100G。这是因为需要排序100G,需要写入最终排序好的文件。另请注意,它需要执行大量本地读/写操作来保存和排序数据,是其读取数据量的 2 倍和 3 倍!

最后一点,除非您只想运行一个作业而不关心结果。写入的 HDFS 字节数永远不应该为 0,而你的是 HDFS_BYTES_WRITTEN 0

关于java - 了解 Hadoop 文件系统计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16634294/

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