了解hadoop文件系统计数器

vaqhlq81  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(461)

我想了解hadoop中的文件系统计数器。
下面是我运行的作业的计数器。
在我运行的每个作业中,我观察到读取的Map文件字节几乎等于读取的hdfs字节。我注意到Map所写的文件字节是Map器读取的文件字节和hdfs字节的总和。请帮忙!本地文件和hdfs是否都在读取相同的数据,并且都在map阶段写入本地文件系统?

Map

文件字节读取5062341139
hdfs\字节\读取4405881342
文件\字节\写入9309466964
hdfs\u字节\u写入0
谢谢!

bq3bfh9z

bq3bfh9z1#

这是作业的hdfs分布、map阶段和reduce阶段的总计数器。
正如您所观察到的,这些计数器是文件字节和hdfs字节的总和。hadoop使用逻辑文件系统hdfs在集群上共享资源。

6ojccjat

6ojccjat2#

所以答案是你所注意到的是特定于工作的。与hdfs相比,Map器/还原器将根据作业向本地文件写入更多或更少的字节。
在mapper中,从本地和hdfs位置读入的数据量相似,没有问题。Map程序代码恰好需要在本地读取与从hdfs读取的数据量相同的数据量。大多数情况下,Map器都被用来分析超过其ram的数据量,因此看到它可能将从hdfs获得的数据写入本地驱动器也就不足为奇了。从hdfs和local读取的字节数并不总是看起来等于local write大小(在您的例子中甚至没有)。
下面是一个使用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

相关问题