我使用hadoop2.6来处理足够的数据,所以我有一个问题,hadoop如何读取所有数据然后分割成块?。我知道首先将数据上传到hdfs,然后根据数据块的大小将数据分成n个数据块。在我有1tb的文本用于DoWordCount算法的情况下,我假设hadoop首先提升文件内存,读取文件,然后以某种方式读取x行,然后复制数据块中的数据。如果我的假设是错误的,那么正确的方法是什么,因为我认为将数据提升到内存中,这应该是分块完成的。就像你在内部做的那样?谢谢干杯
z4bn682m1#
根据块大小上载数据时,数据将被划分为块并存储在不同的节点上。但是当你启动map reduce jobs时,我们应该知道splits。它不是block no=mapper no其拆分数=Map器数分割是逻辑分割,块是物理分割。数据以分段方式读取。默认情况下,split size=block size,但我们可以更改它。
tf7tbtn22#
您的数据上传到hdfs语句是正确的。当字数 MapReduce 作业将启动,为每个卡盘(块)一个 Mapper 任务得到分配和执行。输出 Mappers 已发送到 Reducers 之后 sort-shuffle 阶段。在排序洗牌期间,Map器输出 partitioned , sorted 以及 received (copied) by the Reducers .这个 MapReduce 框架不会读取任何数据并复制到任何文件中。当您将文件存储在hdfs中时,这已经完成了。
MapReduce
Mapper
Mappers
Reducers
sort-shuffle
partitioned
sorted
received (copied) by the Reducers
2条答案
按热度按时间z4bn682m1#
根据块大小上载数据时,数据将被划分为块并存储在不同的节点上。
但是当你启动map reduce jobs时,我们应该知道splits。它不是block no=mapper no
其拆分数=Map器数
分割是逻辑分割,块是物理分割。数据以分段方式读取。默认情况下,split size=block size,但我们可以更改它。
tf7tbtn22#
您的数据上传到hdfs语句是正确的。
当字数
MapReduce
作业将启动,为每个卡盘(块)一个Mapper
任务得到分配和执行。输出Mappers
已发送到Reducers
之后sort-shuffle
阶段。在排序洗牌期间,Map器输出partitioned
,sorted
以及received (copied) by the Reducers
.这个
MapReduce
框架不会读取任何数据并复制到任何文件中。当您将文件存储在hdfs中时,这已经完成了。