首页 文章

hadoop纱线单节点性能调整

提问于
浏览
1

我在我的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 14/12/15 19:37:57连接到ResourceManager客户端.RMProxy:在/0.0.0.0连接到ResourceManager: 8032 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:提交的申请app_1418368500264_0005 14/12/15 19:38:10 INFO mapreduce.Job:正在运行的工作: job_1418368500264_0005 14/12/15 19:38:59 INFO mapreduce.Job:工作职位_1418368500264_0005以超级模式运行:false 14/12/15 19:38:59 INFO mapreduce.Job:map 0%reduce 0%14/12/15 19:39:42 INFO mapreduce.Job: Map 2%减少0%14/12/15 19:40:05 INFO mapreduce.Job: Map 4%减少0%14/12/15 19:40:28 INFO mapreduce . 工作: Map 6%减少0%14/12/15 19:40:49 INFO mapreduce.Job: Map 8%减少0%14/12/15 19:41:10 INFO mapreduce.Job: Map 10%减少0%14/12/15 19:41:29 INFO mapreduce.Job: Map 12%减少0%14/12/15 19:41:50 INFO mapreduce.Job: Map 14%减少0%14/12 / 15 19:42:08 INFO mapreduce.Job: Map 16%减少0%14/12/15 19:42:28 INFO mapreduce.Job: Map 18%减少0%14/12/15 19:42:49 INFO mapreduce.Job: Map 20%减少0%14/12/15 19:43:08 INFO mapreduce.Job: Map 22%减少0%14/12/15 19:43:28 INFO mapreduce.Job: Map 减少24% 0%14/12/15 19:43:48 INFO mapreduce.Job: Map 27%减少0%14/12/15 19:44:09 INFO mapreduce.Job: Map 29%减少0%14/12/15 19 :44:29 INFO mapreduce.Job: Map 31%减少0%14/12/15 19:44:49 INFO mapreduce.Job: Map 33%减少0%14/12/15 19:45:09 INFO mapreduce.Job : Map 35%减少0%14/12/15 19:45:28 INFO mapreduce.Job: Map 37%减少0%14/12/15 19:45:49 INFO mapreduce.Job: Map 39%减少0%14 / 12/15 19:46:09 INFO mapreduce.Job: Map 41%减少0%14/12/15 19:46:29 INFO mapreduce.Job: Map 43%减少0%14/12/15 19:46: 49 INFO mapreduce.Job: Map 45%减少0%14/12/15 19:47:09 INFO mapreduce . 工作: Map 47%减少0%14/12/15 19:47:29 INFO mapreduce.Job: Map 49%减少0%14/12/15 19:47:49 INFO mapreduce.Job: Map 51%减少0% 14/12/15 19:48:08 INFO mapreduce.Job: Map 53%减少0%14/12/15 19:48:28 INFO mapreduce.Job: Map 55%减少0%14/12/15 19:48 :48 INFO mapreduce.Job: Map 57%减少0%14/12/15 19:49:09 INFO mapreduce.Job: Map 59%减少0%14/12/15 19:49:29 INFO mapreduce.Job: Map 61%减少0%14/12/15 19:49:55 INFO mapreduce.Job: Map 63%减少0%14/12/15 19:50:23 INFO mapreduce.Job: Map 65%减少0%14/12 / 15 19:50:53 INFO mapreduce.Job: Map 67%减少0%14/12/15 19:51:22 INFO mapreduce.Job: Map 69%减少0%14/12/15 19:51:50 INFO mapreduce.Job: Map 71%减少0%14/12/15 19:52:18 INFO mapreduce.Job: Map 73%减少0%14/12/15 19:52:48 INFO mapreduce.Job: Map 减少76% 0%14/12/15 19:53:18 INFO mapreduce.Job: Map 78%减少0%14/12/15 19:53:48 INFO mapreduce.Job: Map 80%减少0%14/12/15 19 :54:18 INFO mapreduce.Job: Map 82%减少0%14/12/15 19:54:48 INFO ma preduce.Job: Map 84%减少0%14/12/15 19:55:19 INFO mapreduce.Job: Map 86%减少0%14/12/15 19:55:48 INFO mapreduce.Job: Map 减少88% 0%14/12/15 19:56:16 INFO mapreduce.Job: Map 90%减少0%14/12/15 19:56:44 INFO mapreduce.Job: Map 92%减少0%14/12/15 19 :57:14 INFO mapreduce.Job: Map 94%减少0%14/12/15 19:57:45 INFO mapreduce.Job: Map 96%减少0%14/12/15 19:58:15 INFO mapreduce.Job : Map 98%减少0%14/12/15 19:58:46 INFO mapreduce.Job: Map 100%减少0%14/12/15 19:59:20 INFO mapreduce.Job: Map 100%减少100%14 / 12/15 19:59:28 INFO mapreduce.Job:工作job_1418368500264_0005已成功完成14/12/15 19:59:30 INFO mapreduce.Job:计数器:49文件系统计数器FILE:读取的字节数= 17856文件:数字写入的字节数= 5086434 FILE:读取操作数= 0 FILE:大读操作数= 0 FILE:写操作数= 0 HDFS:读取的字节数= 499030 HDFS:写入的字节数= 10049 HDFS:Number of Number读取操作= 150 HDFS:数量大读操作= 0 HDFS:写操作数= 2作业计数器启动映射任务= 49启动reduce tasks = 1数据本地映射任务= 49占用插槽中所有映射所花费的总时间(ms)= 8854232所有 Map 任务花费的总时间(毫秒)= 284672所有 Map 任务花费的总时间(毫秒)= 1106779所有减少任务花费的总时间(毫秒)= 35584所有 Map 任务所花费的总核心秒数= 1106779所采取的总核心秒数by all reduce tasks = 35584所有map任务占用的总兆字节数= 1133341696所有reduce任务占用的总兆字节数= 36438016 Map-Reduce Framework Map输入记录= 9352 Map输出记录= 296 Map output bytes = 17258 Map output output materialized bytes = 18144输入分割字节= 6772组合输入记录= 0组合输出记录= 0减少输入组= 53减少随机字节= 18144减少输入记录= 296减少输出记录= 52溢出记录= 592混洗映射= 49失败随机数= 0合并映射输出= 49 GC耗用时间(ms)= 33590 CPU花费的时间(ms)= 191390物理内存(字节)snapshot = 13738057728虚拟内存(字节)snapshot = 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 / yarn / mapreduce以使整个环境更方便试用?

我知道hadoop是为大数据和大文件而设计的 . 但对于试用环境,我的文件很小,我的数据非常有限,我应该更改哪些默认配置项?我已将hdfs-site.xml的“dfs.blocksize”更改为较小的值以匹配我的小文件,但似乎没有大的改进 . 我知道在yarn-site.xml和mapred-site.xml中有一些JVM配置项,但我不确定如何调整它们 .

  • 如何阅读hadoop日志

在logs文件夹下,nodemanager / resourcemanager / namenode / datanode有单独的日志文件 . 我尝试阅读这些文件以了解在此过程中如何花费20分钟,但对于像我这样的新手来说并不容易 . 所以我想知道是否有任何工具/ UI可以帮助我分析日志 .

  • 基本性能调优工具

实际上我已经搜索了这个问题,我得到了一些像Ganglia / Nagios / Vaidya / Ambari这样的名字 . 我想知道,哪个工具最能分析问题,“为什么花20分钟做这么简单的工作?” .

  • 大量的hadoop进程

即使我的hadoop上没有运行作业,我在我的VM上发现了大约100个hadoop进程,如下所示(我正在使用htop,并按内存对结果进行排序) . 这是正常的hadoop?或者我对某些环境配置不正确?

enter image description here

1 回答

  • 2
    • 您无需进行任何更改 .

    默认配置是针对小环境完成的 . 如果你发展环境,你可以改变它 . Ant有很多参数和很多时间进行微调 .

    但我承认你的配置比通常的测试要小 .

    • 您必须阅读的日志不是服务日志,而是作业日志 . 在/ var / log / hadoop-yarn / containers /中找到它们

    如果您想更好地查看MR,请使用 http://127.0.0.1:8088/ 上的Web界面 . 您将实时看到您的工作进展 .

    • IMO,Basic tuning =使用hadoop web界面 . 本地有很多可用的 .

    • 我想你找到了问题所在 . 这可能是正常的,也可能不是 .

    但很快,YARN启动MR以使用所有可用内存:

    • 可用内存在yarn-site.xml中设置:yarn.nodemanager.resource.memory-mb(默认为8 Gio) .

    • 任务的内存在mapred-site.xml中或在任务本身中由属性定义:mapreduce.map.memory.mb(默认为1536 Mio)

    所以:

    • 更改nodemanager的可用内存(至3Gio,以便为系统提供1 Gio)

    • 更改hadoop服务可用的内存(hadoop-env.sh,yarn-env.sh中的-Xmx)(系统每个hadoop服务(namenode / datanode / ressourcemanager / nodemanager)<1 Gio .

    • 更改 Map 任务的内存(512 Mio?) . 它越小,可以在同一时间执行更多任务 .

    • 在yarn-site.xml中将yarn.scheduler.minimum-allocation-mb更改为512,以允许映射器的内存小于1 Gio .

    我希望这能帮到您 .

相关问题