hadoop hdfs:读/写并行性?

gupuwyp2  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(768)

在internet上找不到足够的信息,请在此处询问:
假设我正在将一个巨大的文件写入磁盘,数百TB,这是mapreduce(或spark或其他什么)的结果。mapreduce如何高效地将这样一个文件写入hdfs(可能是并行的?),以后也可以并行地读取这个文件?
我的理解是hdfs只是基于块的(例如128mb)。因此,为了写第二个块,您必须已经写了第一个块(或者至少确定哪些内容将转到块1)。假设它是一个csv文件,文件中的一行很有可能跨越两个块——我们如何在mapreduce中将这样的csv读入不同的Map器?它必须做一些聪明的逻辑来读取两个块,连接它们并读取正确的行吗?

u3r8eeie

u3r8eeie1#

hadoop使用recordreaders和inputformats作为两个接口来读取和理解块中的字节。
默认情况下,在hadoop mapreduce中,每条记录都以textinputformat的新行结束,对于只有一行穿过一个块末尾的情况,必须读取下一个块,即使它只是字面上的 \r\n 人物
写数据是由reduce任务或spark执行器等完成的,因为每个任务只负责写整个输出的一个子集。对于非小型作业,通常不会得到单个文件,这不是问题,因为大多数hadoop处理引擎的输入参数都是用来扫描目录的,而不是指向单个文件

相关问题