mapreduce—hadoop如何读取所有数据,然后分割成块?

iugsix8n  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(527)

我使用hadoop2.6来处理足够的数据,所以我有一个问题,hadoop如何读取所有数据然后分割成块?。我知道首先将数据上传到hdfs,然后根据数据块的大小将数据分成n个数据块。在我有1tb的文本用于DoWordCount算法的情况下,我假设hadoop首先提升文件内存,读取文件,然后以某种方式读取x行,然后复制数据块中的数据。
如果我的假设是错误的,那么正确的方法是什么,因为我认为将数据提升到内存中,这应该是分块完成的。就像你在内部做的那样?
谢谢干杯

z4bn682m

z4bn682m1#

根据块大小上载数据时,数据将被划分为块并存储在不同的节点上。
但是当你启动map reduce jobs时,我们应该知道splits。它不是block no=mapper no
其拆分数=Map器数
分割是逻辑分割,块是物理分割。数据以分段方式读取。默认情况下,split size=block size,但我们可以更改它。

tf7tbtn2

tf7tbtn22#

您的数据上传到hdfs语句是正确的。
当字数 MapReduce 作业将启动,为每个卡盘(块)一个 Mapper 任务得到分配和执行。输出 Mappers 已发送到 Reducers 之后 sort-shuffle 阶段。在排序洗牌期间,Map器输出 partitioned , sorted 以及 received (copied) by the Reducers .
这个 MapReduce 框架不会读取任何数据并复制到任何文件中。当您将文件存储在hdfs中时,这已经完成了。

相关问题