我正在使用hadoop 2.6来处理足够的数据,所以我有一个关于hadoop如何读取所有数据然后分成块的问题?据我所知,首先将数据上传到hdfs,然后数据在N块中拆分取决于块的大小。如果我有1TB的文本用于做wordcount算法,我想hadoop首先提高内存文件,读取文件,并以某种方式读取x行然后复制数据块。
如果我的假设不好,那么正确的方法是什么,因为我认为将数据提升到内存中,这应该是分段完成的。正如你在内部做的那样?
由于 干杯
答案 0 :(得分:0)
您的数据上传到HDFS语句是正确的。
当 WordCount MapReduce
作业启动时,对于每个chuck(块),将分配并执行一个Mapper
任务。在Mappers
阶段之后,Reducers
的输出会发送到sort-shuffle
。在sort-shuffle期间,Mapper输出为partitioned
,sorted
和received (copied) by the Reducers
。
MapReduce
框架不读取任何数据并复制到任何夹头中。当您将文件存储在HDFS中时,已经完成了。
答案 1 :(得分:0)
根据块大小上传数据时,数据会被分成块并存储在不同的节点上。
但是当你启动map-reduce工作时, 我们应该知道分裂。 它不是块no = mapper no
它的分裂数=映射器的数量
拆分是逻辑划分,块是物理划分。 数据以拆分方式读取。默认情况下,分割大小=块大小,但我们可以更改它。