hadoop纱线单节点性能调整

时间:2014-12-16 08:07:21

标签: performance hadoop mapreduce yarn

我在我的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的新手,对于这种疯狂的不合理表现,我有几个问题:

  1. 如何配置我的hadoop / yarn / mapreduce以使整个环境更方便试用?
  2. 我知道hadoop是专为大数据和大文件而设计的。但对于试用环境,我的文件很小,我的数据非常有限,我应该更改哪些默认配置项?我已经改变了#34; dfs.blocksize"将hdfs-site.xml改为较小的值以匹配我的小文件,但似乎没有大的增强。我知道在yarn-site.xml和mapred-site.xml中有一些JVM配置项,但我不确定如何调整它们。

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

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

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

          enter image description here

1 个答案:

答案 0 :(得分:2)

  1. 您无需进行任何更改。
  2. 默认配置适用于小型环境。如果你养成了环境,你可以改变它。 Ant有很多参数和很多时间进行微调。

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

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

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

      1. IMO,Basic tuning =使用hadoop web界面。本地有很多可供选择。

      2. 我认为你找到了问题。这可能是正常的,也可能不是。

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

        • 可用内存在yarn-site.xml中设置:yarn.nodemanager.resource.memory-mb(默认为8 Gio)。
        • 任务的内存在mapred-site.xml或任务本身中由属性定义:mapreduce.map.memory.mb(默认为1536 Mio)

        所以:

        1. 更改nodemanager的可用内存(至3Gio,以便为系统提供1 Gio)
        2. 更改hadoop服务的可用内存(hadoop-env.sh,yarn-env.sh中的-Xmx)(系统+每个hadoop服务(namenode / datanode / ressourcemanager / nodemanager)< 1 Gio。
        3. 更改地图任务的内存(512 Mio?)。它越小,可以在同一时间执行更多任务。
        4. 在yarn-site.xml中将yarn.scheduler.minimum-allocation-mb更改为512,以允许映射器的内存小于1 Gio。
        5. 我希望这会对你有所帮助。