我使用hadoop 2.6来处理足够的数据,所以我有一个关于hadoop如何读取所有数据然后在块中分割的问题?我明白,首先将数据上传到hdfs,然后根据块的大小将数据分成N块。在这种情况下,我有1TB的文本做wordcount算法,我认为hadoop首先提高内存文件,读取文件,并以某种方式读取x行,然后复制数据块。
如果我的假设是坏的,如何是正确的方式,因为我认为提高数据到内存,这应该在碎片完成。就像你在内部做的那样?
谢谢欢呼声
您的data upload to HDFS语句是正确的。
当WordCount MapReduce
作业启动时,对于每个夹头(块),分配并执行一个Mapper
任务。Mappers
的输出经过sort-shuffle
相后送至Reducers
。在排序-洗牌期间,Mapper输出是partitioned
、sorted
和received (copied) by the Reducers
。
MapReduce
框架不读取任何数据并复制到任何夹头中。当您将文件存储在HDFS中时,已经完成了。
当您根据块大小上传数据时,您的数据将被划分为块并存储在不同的节点上。
但是当你启动map-reduce作业时,我们应该知道什么是分裂。不是block no = mapper no
它的分割数=映射器的数目
split是逻辑划分,block是物理划分。数据被分割读取。在默认情况下,split size =块大小,但我们可以改变它