zoukankan      html  css  js  c++  java
  • CDH安装时,无法纳管全部的节点的一个bug

     

     

    问题描述:

           使用CDH 5.2版本安装时,agent节点有12个。按照安装说明,在各个节点启动cm-agent之后,发现只有6个节点能被纳管。其它的节点总是无法加入纳管中。 在确认防火墙已经关闭后,仍然无法解决问题

    问题分析:

          1. 查看已经加入纳管的节点,发现这6个节点并不是固定的,有一个节点是不断变换的。查看数据库中。

    mysql> select * from HOSTS;
    +---------+-------------------------+--------------------------------------+----------+--------------+----------+--------+---------------------+-------------------+--------------------+------------+-----------+----------------------+-------------+-------------------+----------------+
    | HOST_ID | OPTIMISTIC_LOCK_VERSION | HOST_IDENTIFIER                      | NAME     | IP_ADDRESS   | RACK_ID  | STATUS | CONFIG_CONTAINER_ID | MAINTENANCE_COUNT | DECOMMISSION_COUNT | CLUSTER_ID | NUM_CORES | TOTAL_PHYS_MEM_BYTES | PUBLIC_NAME | PUBLIC_IP_ADDRESS | CLOUD_PROVIDER |
    +---------+-------------------------+--------------------------------------+----------+--------------+----------+--------+---------------------+-------------------+--------------------+------------+-----------+----------------------+-------------+-------------------+----------------+
    |       1 |                       2 | e1cd96e2-1a81-4788-819a-c607cef28cf9 | hadoop44 | 16.81.224.44 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
    |       2 |                  169084 | 0b24a203-4984-4de5-b529-5ef2039eb350 | hadoop28 | 16.81.224.28 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
    |       3 |                       1 | 3b1f5ce0-1105-4a0a-8cac-27bab6b0e487 | hadoop30 | 16.81.224.30 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
    |       4 |                       1 | 54efc787-ee3b-4a50-88ed-6796e7af71e6 | hadoop31 | 16.81.224.31 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
    |       5 |                       1 | 8fb5d069-7380-4a72-8d48-bd3ad63a0d4e | hadoop32 | 16.81.224.32 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
    |       6 |                       1 | ab2d6929-e8c9-4c51-9e6e-486e04f06a79 | hadoop33 | 16.81.224.33 | /default | NA     |                   1 |                 0 |                  0 |       NULL |        24 |          67135713280 | NULL        | NULL              | NULL           |
    +---------+-------------------------+--------------------------------------+----------+--------------+----------+--------+---------------------+-------------------+--------------------+------------+-----------+----------------------+-------------+-------------------+----------------+
    6 rows in set (0.00 sec)

    发现其中host id为0b24a203-4984-4de5-b529-5ef2039eb350 所对应的IP会不断变化。因此可以得出这样的一个结论: 页面会读取HOSTS中的数据,但是其中host_id不能重复,如果重复,就会不断的覆盖。

      

     2. 再次查看28节点的日志,也可以看到它上告给server的host id的值:

    [root@hadoop28 cloudera-scm-agent]# cat cloudera-scm-agent.log 
    [15/Aug/2016 19:56:58 +0000] 16140 MainThread agent        INFO     SCM Agent Version: 5.2.0
    [15/Aug/2016 19:56:58 +0000] 16140 MainThread agent        INFO     Agent Protocol Version: 4
    [15/Aug/2016 19:56:58 +0000] 16140 MainThread agent        INFO     Using Host ID: 0b24a203-4984-4de5-b529-5ef2039eb350 

    因此,我们需要查看agent是如何获取的host id

    3. 查看agent的启动脚本,可以知道:

    /opt/cm-5.2.0/etc/init.d/cloudera-scm-agent  -

    --> /opt/cm-5.2.0/sbin/cmf-agent 

    而在cmf-agent中通过语句:

    exec $CMF_PATH/agent/build/env/bin/python $CMF_PATH/agent/src/cmf/agent.py
            --package_dir $CMF_PATH/service --agent_dir $AGENT_RUNDIR
            --lib_dir $AGENT_LIBDIR --logfile $AGENT_LOG $*

    在我调试的过程中其传递的参数为:

    exec /opt/cm-5.2.0/lib64/cmf/agent/build/env/bin/python /opt/cm-5.2.0/lib64/cmf/agent/src/cmf/agent.py         --package_dir /opt/cm-5.2.0/lib64/cmf/service --agent_dir /opt/cm-5.2.0/run/cloudera-scm-agent         --lib_dir /opt/cm-5.2.0/lib/cloudera-scm-agent --logfile /opt/cm-5.2.0/log/cloudera-scm-agent/cloudera-scm-agent.log 

    4. 通过pdd对于agent.py脚本进行调试,可以知道它获取host_id的过程: 

       agent.py首选 进入到start()函数,然后再调用函数parse_arguments()解析参数。在这个parse_arguments函数中,它会调用

        if args.host_id is None:
          self.host_id = get_host_uuid(self.lib_dir)  ----从这里获取host_id
        else:
          self.host_id = args.host_id

    查看get_host_uuid的代码(在util.py中), 其中有一句:

         uuid_path=os.path.join(lib_dir, "uuid")   其中lib_dir的值为/opt/cm-5.2.0/lib/cloudera-scm-agent, uuid为文件名。

    再次查看一下果然存在此文件,而其中的值就是0b24a203-4984-4de5-b529-5ef2039eb350 

    到此,原因就很清楚了。在安装的时候,agent的节点的包是不是从server端拷贝过来的,而是从某个agent中拷贝过来的,因而把uuid这个文件也拷贝过来了。从而导致多个节点的uuid相同。

    解决办法: 删掉uuid这个文件,让系统重新生成一个

  • 相关阅读:
    hdoj 6023 Automatic Judge
    hdoj 1170 Balloon Comes!
    初识vim操作和配置
    POJ 1611 The Suspects (并查集)
    HDU 1232 畅通工程 (并查集)
    计蒜客--两数之和
    计蒜客--爬楼梯 (动态规划)
    计蒜客--单独的数字 (位运算)
    计蒜客--最后一个单词的长度
    计蒜客-- 奇怪的国家 (位运算)
  • 原文地址:https://www.cnblogs.com/liuys635/p/11408784.html
Copyright © 2011-2022 走看看