我目前正在运行一项工作,我将地图任务的数量修改为20,但获得更高的数字.我还将reduce任务设置为零,但我仍然得到一个非零的数字.MapReduce作业完成的总时间也不会显示.有人能告诉我我做错了什么.我正在使用此命令
hadoop jar Test_Parallel_for.jar Test_Parallel_for Matrix/test4.txt Result 3 \ -D mapred.map.tasks = 20 \ -D mapred.reduce.tasks =0
Run Code Online (Sandbox Code Playgroud)
输出:
11/07/30 19:48:56 INFO mapred.JobClient: Job complete: job_201107291018_0164
11/07/30 19:48:56 INFO mapred.JobClient: Counters: 18
11/07/30 19:48:56 INFO mapred.JobClient: Job Counters
11/07/30 19:48:56 INFO mapred.JobClient: Launched reduce tasks=13
11/07/30 19:48:56 INFO mapred.JobClient: Rack-local map tasks=12
11/07/30 19:48:56 INFO mapred.JobClient: Launched map tasks=24
11/07/30 19:48:56 INFO mapred.JobClient: Data-local map tasks=12
11/07/30 19:48:56 INFO mapred.JobClient: FileSystemCounters
11/07/30 19:48:56 INFO mapred.JobClient: FILE_BYTES_READ=4020792636
11/07/30 19:48:56 INFO mapred.JobClient: HDFS_BYTES_READ=1556534680 …Run Code Online (Sandbox Code Playgroud) 我正在通过hadoop权威指南,它清楚地解释了输入分裂.它就像
输入拆分不包含实际数据,而是具有HDFS数据的存储位置
和
通常,输入分割的大小与块大小相同
1)假设一个64MB的块在节点A上并在其他2个节点(B,C)之间复制,map-reduce程序的输入分割大小是64MB,这个分割只有节点A的位置吗?或者它是否具有所有三个节点A,b,C的位置?
2)由于数据是所有三个节点的本地数据,框架如何决定(选择)在特定节点上运行的maptask?
3)如果输入分割大小大于或小于块大小,如何处理?
如果我们有数百万个大小从几 KB 到几 MB 不等的小文本文件,那么 HDFS 和 HBASE 中的哪一个需要更少的处理时间?而且内存消耗更少?