我在我的Ubuntu VM上安装了hadoop 2.5.2单模式,即4核,每核3GHz; 4G内存。此VM不用于制作,仅用于演示和学习。
然后,我使用python编写了一个简单的map-reduce应用程序,并使用此应用程序处理49 xmls。所有这些xml文件都是小型的,每个文件都有数百行。所以,我期待一个快速的过程。但是,对我来说很惊讶,完成这项工作需要20多分钟(工作的输出是正确的。)。以下是输出指标:
14/12/15 19:37:55 INFO client.RMProxy:在/0.0.0.0:8032连接到ResourceManager 14/12/15 19:37:57 INFO client.RMProxy:在/0.0.0.0:8032连接到ResourceManager 14/12/15 19:38:03 INFO mapred.FileInputFormat:要处理的总输入路径:49
14/12/15 19:38:06 INFO mapreduce.JobSubmitter:分裂数:49
14/12/15 19:38:08 INFO mapreduce.JobSubmitter:提交工作代币:job_1418368500264_0005
14/12/15 19:38:10 INFO impl.YarnClientImpl:提交的申请表application_1418368500264_0005
14/12/15 19:38:10 INFO mapreduce.Job:正在运行的工作:job_1418368500264_0005
14/12/15 19:38:59 INFO mapreduce.Job:作业job_1418368500264_0005在超级模式下运行:false
14/12/15 19:38:59 INFO mapreduce.Job:地图0%减少0%
14/12/15 19:39:42 INFO mapreduce.Job:地图2%减少0%
14/12/15 19:40:05 INFO mapreduce.Job:地图4%减少0%
14/12/15 19:40:28 INFO mapreduce.Job:地图6%减少0%
14/12/15 19:40:49 INFO mapreduce.Job:地图8%减少0%
14/12/15 19:41:10 INFO mapreduce.Job:地图10%减少0%
14/12/15 19:41:29 INFO mapreduce.Job:地图12%减少0%
14/12/15 19:41:50 INFO mapreduce.Job:地图14%减少0%
14/12/15 19:42:08 INFO mapreduce.Job:地图16%减少0%
14/12/15 19:42:28 INFO mapreduce.Job:地图18%减少0%
14/12/15 19:42:49 INFO mapreduce.Job:地图20%减少0%
14/12/15 19:43:08 INFO mapreduce.Job:地图22%减少0%
14/12/15 19:43:28 INFO mapreduce.Job:地图24%减少0%
14/12/15 19:43:48 INFO mapreduce.Job:地图27%减少0%
14/12/15 19:44:09 INFO mapreduce.Job:地图29%减少0%
14/12/15 19:44:29 INFO mapreduce.Job:地图31%减少0%
14/12/15 19:44:49 INFO mapreduce.Job:map 33%减少0%
14/12/15 19:45:09 INFO mapreduce.Job:地图35%减少0%
14/12/15 19:45:28 INFO mapreduce.Job:地图37%减少0%
14/12/15 19:45:49 INFO mapreduce.Job:地图39%减少0%
14/12/15 19:46:09 INFO mapreduce.Job:地图41%减少0%
14/12/15 19:46:29 INFO mapreduce.Job:地图43%减少0%
14/12/15 19:46:49 INFO mapreduce.Job:地图45%减少0%
14/12/15 19:47:09 INFO mapreduce.Job:地图47%减少0%
14/12/15 19:47:29 INFO mapreduce.Job:地图49%减少0%
14/12/15 19:47:49 INFO mapreduce.Job:地图51%减少0%
14/12/15 19:48:08 INFO mapreduce.Job:地图53%减少0%
14/12/15 19:48:28 INFO mapreduce.Job:地图55%减少0%
14/12/15 19:48:48 INFO mapreduce.Job:地图57%减少0%
14/12/15 19:49:09 INFO mapreduce.Job:地图59%减少0%
14/12/15 19:49:29 INFO mapreduce.Job:地图61%减少0%
14/12/15 19:49:55 INFO mapreduce.Job:地图63%减少0%
14/12/15 19:50:23 INFO mapreduce.Job:地图65%减少0%
14/12/15 19:50:53 INFO mapreduce.Job:地图67%减少0%
14/12/15 19:51:22 INFO mapreduce.Job:地图69%减少0%
14/12/15 19:51:50 INFO mapreduce.Job:地图71%减少0%
14/12/15 19:52:18 INFO mapreduce.Job:地图73%减少0%
14/12/15 19:52:48 INFO mapreduce.Job:地图76%减少0%
14/12/15 19:53:18 INFO mapreduce.Job:地图78%减少0%
14/12/15 19:53:48 INFO mapreduce.Job:地图80%减少0%
14/12/15 19:54:18 INFO mapreduce.Job:地图82%减少0%
14/12/15 19:54:48 INFO mapreduce.Job:地图84%减少0%
14/12/15 19:55:19 INFO mapreduce.Job:地图86%减少0%
14/12/15 19:55:48 INFO mapreduce.Job:地图88%减少0%
14/12/15 19:56:16 INFO mapreduce.Job:地图90%减少0%
14/12/15 19:56:44 INFO mapreduce.Job:地图92%减少0%
14/12/15 19:57:14 INFO mapreduce.Job:地图94%减少0%
14/12/15 19:57:45 INFO mapreduce.Job:地图96%减少0%
14/12/15 19:58:15 INFO mapreduce.Job:地图98%减少0%
14/12/15 19:58:46 INFO mapreduce.Job:地图100%减少0%
14/12/15 19:59:20 INFO mapreduce.Job:地图100%减少100%
14/12/15 19:59:28 INFO mapreduce.Job:工作职位_1418368500264_0005顺利完成
14/12/15 19:59:30 INFO mapreduce.Job:专柜:49
文件系统计数器
FILE:读取的字节数= 17856
FILE:写入的字节数= 5086434
文件:读取操作数= 0
FILE:大读操作次数= 0
FILE:写操作次数= 0
HDFS:读取的字节数= 499030
HDFS:写入的字节数= 10049
HDFS:读取操作次数= 150
HDFS:大读操作次数= 0
HDFS:写操作次数= 2
工作计数器
启动地图任务= 49
推出减少任务= 1
数据本地地图任务= 49
占用时隙中所有地图花费的总时间(毫秒)= 8854232
所有花费的总时间减少占用的时隙(ms)= 284672
所有地图任务花费的总时间(毫秒)= 1106779
所有减少任务花费的总时间(毫秒)= 35584
所有地图任务占用的总核心秒数= 1106779
所有减少任务所花费的总核心秒数= 35584
所有地图任务占用的总兆字节数= 1133341696
所有减少任务所用的总兆字节数= 36438016
Map-Reduce框架
地图输入记录= 9352
地图输出记录= 296
映射输出字节= 17258
映射输出物化字节= 18144
输入拆分字节= 6772
合并输入记录= 0
合并输出记录= 0
减少输入组= 53
减少随机字节= 18144
减少输入记录= 296
减少输出记录= 52
溢出记录= 592
随机地图= 49
失败的Shuffles = 0
合并的地图输出= 49
GC时间已过(ms)= 33590
CPU花费的时间(毫秒)= 191390
物理内存(字节)snapshot = 13738057728
虚拟内存(字节)快照= 66425016320
承诺堆总使用量(字节)= 10799808512
随机错误
BAD_ID = 0
CONNECTION = 0
IO_ERROR = 0
WRONG_LENGTH = 0
WRONG_MAP = 0
WRONG_REDUCE = 0
文件输入格式计数器
字节读取= 492258
文件输出格式计数器
写的字节数= 10049
14/12/15 19:59:30 INFO streaming.StreamJob:输出目录:/ data_output / sb50projs_1_output
作为hadoop的新手,对于这种疯狂的不合理表现,我有几个问题:
我知道hadoop是专为大数据和大文件而设计的。但对于试用环境,我的文件很小,我的数据非常有限,我应该更改哪些默认配置项?我已经改变了#34; dfs.blocksize"将hdfs-site.xml改为较小的值以匹配我的小文件,但似乎没有大的增强。我知道在yarn-site.xml和mapred-site.xml中有一些JVM配置项,但我不确定如何调整它们。
在logs文件夹下,nodemanager / resourcemanager / namenode / datanode有单独的日志文件。我尝试阅读这些文件以了解在此过程中如何花费20分钟,但对于像我这样的新手来说这并不容易。所以我想知道是否有任何工具/ UI可以帮助我分析日志。
实际上我已经搜索了这个问题,我得到了一些像Ganglia / Nagios / Vaidya / Ambari这样的名字。我想知道,哪个工具最能分析问题,"为什么花20分钟做这么简单的工作?"。
即使我的hadoop上没有运行作业,我在我的VM上发现了大约100个hadoop进程,如下所示(我正在使用htop,并按内存对结果进行排序)。这是正常的hadoop?或者我对某些环境配置不正确?
答案 0 :(得分:2)
默认配置适用于小型环境。如果你养成了环境,你可以改变它。 Ant有很多参数和很多时间进行微调。
但我承认你的配置比通常的测试要小。
如果您想更好地查看您的MR,请使用http://127.0.0.1:8088/
上的网络界面。您将实时看到您的工作进展。
IMO,Basic tuning =使用hadoop web界面。本地有很多可供选择。
我认为你找到了问题。这可能是正常的,也可能不是。
但很快,YARN启动MR以使用所有可用内存:
所以:
我希望这会对你有所帮助。