• Hadoop中的问题排查思路


    一、概述:

    在实际使用hadoop的过程中,由于涉及到多台服务器、每台机器上可能还有多个服务等。所以当集群环境出现问题时,快速定位到错误出现的地方尤为重要。

    在排查错误的过程中,基本上就是通过既有的工具来检测集群的运行时环境、集群日志等来分析导致错误的原因。

    二、Java heap:

    hadoop需要运行在Java运行时环境之上。因此jvm中的内存分配是否处于合理的状态,就是需要检测的一个因素。Java虚拟机中分为多个区域,最值得关注的区域是heap区。heap区的大体划分如下:

    image

    创建对象时,会首先在Eden区分配内存来创建。随着时间的推移,Eden会慢慢被填满,此时就会触发一次垃圾回收,将Eden区的对象复制到From区。当From区填满时,则又会触发一次垃圾回收,从From区复制到To区。

    在复制的过程中,当某个对象复制的次数达到阈值时,就会从年轻代复制到old区域。

    在young区域中,垃圾回收器主要是使用ParNew,它是基于复制的垃圾回收器。

    在Old区域,可选择的垃圾回收器有:串行(serialOld),并发(ParallelOld),并行(CMS)等。

    可以使用下述的命令来查看垃圾回收的相关信息:

    [root@node1 ~]# jps
    2352 DFSZKFailoverController
    2067 NameNode
    2456 ResourceManager
    2719 Jps
    [root@node1 ~]# jstat -gcutil 2456 2000
      S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
      0.00   0.00  25.60  56.20  49.73     10    0.202     1    0.161    0.364
      0.00   0.00  25.60  56.20  49.73     10    0.202     1    0.161    0.364
      0.00   0.00  25.60  56.20  49.73     10    0.202     1    0.161    0.364
      0.00   0.00  25.60  56.20  49.73     10    0.202     1    0.161    0.364
      0.00   0.00  25.60  56.20  49.73     10    0.202     1    0.161    0.364

    image

    三、通过浏览器界面查看:

    hadoop集群中提供了很多基于web服务的界面。

    namenode管理界面:http://hostname:50057

    image

    ResourceManager管理界面:http://hostname:8088

    image

    JobTracker管理界面(hadoop1.x):http://hostname:50030

    四、查看日志:

    通过tar包安装的hadoop日志一般位于<hadoop_home>/logs目录下。

    image

    通过cdh安装的hadoop日志一般位于/var/log/hadoop目录下。

    log的级别设置:在hadoop-daemon.sh中定义:

    image

    五、在线分析工具:

    1、jstack:用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息。

    [root@node1 test]# jps
    2352 DFSZKFailoverController
    2067 NameNode
    2456 ResourceManager
    2819 Jps
    [root@node1 test]# jstack 2456 > rm.dat
    [root@node1 test]# ls
    rm.dat
    [root@node1 test]# vim rm.dat 
    
    2016-01-27 16:30:24
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode):
    
    "Attach Listener" daemon prio=10 tid=0x00007fed089fd000 nid=0xb1b runnable [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "2141196255@qtp-1207409333-7" daemon prio=10 tid=0x00007fecf4456800 nid=0xab8 in Object.wait() [0x00007fece4c2b000]
       java.lang.Thread.State: TIMED_WAITING (on object monitor)
            at java.lang.Object.wait(Native Method)
            - waiting on <0x00000000c222d760> (a org.mortbay.thread.QueuedThreadPool$PoolThread)
            at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:626)
            - locked <0x00000000c222d760> (a org.mortbay.thread.QueuedThreadPool$PoolThread)
    
    "ApplicationMaster Launcher" prio=10 tid=0x00007fed090e5000 nid=0xa9e waiting on condition [0x00007fece502f000]
       java.lang.Thread.State: WAITING (parking)
            at sun.misc.Unsafe.park(Native Method)
            - parking to wait for  <0x00000000c1c1b0e0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
            at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
            at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
    "rm.dat" 2017L, 144689C

    2、jmap+jhat分析:

    A、首先用jps或者ps或许需要查询的进程id。

    B、用jmap得到进程的进行时内存镜像,命令如下:

    jmap -dump:live,format=b,file=jmap.dat ${PID}

    C、用jhat进行内存分析:命令如下:

    jhat -J-Xmx2G jmap.dat

    D、jhat启动后会建立一个HTTP server,端口为7000,可以通过浏览器查看统计数据。

    image

    image

    image

    3、fsck检查文件系统是否有损坏的blocks。

    4、使用dfsadmin命令。

    六、其他工具:

    1、strace:这是一个Linux工具。

    2、iostat:查看磁盘是否出现瓶颈。

    3、nload:监控当前的网络带宽。

    4、iptraf。

    5、netstat:查看端口占用。

    6、tcpdump:抓包工具。示例如下:

    tcpdump -nn -i etho -xX -s 0 tcp and port 2181
  • 相关阅读:
    C# Winform下一个热插拔的MIS/MRP/ERP框架(通用控件)
    Xamarin如何使用终端设备的NFC功能传递卡号等信息给Web页面(Android)
    C# Winform下一个热插拔的MIS/MRP/ERP框架(简介)
    C# Winform中自定义筛选及自带统计行的Datagridview控件
    C#下Excel的普通处理和报表设计
    JVM 垃圾回收算法
    谈数据库的性能优化
    RedisService
    bean 与 map 互转.
    RedisService
  • 原文地址:https://www.cnblogs.com/tq03/p/5163796.html
Copyright © 2020-2023  润新知