问题描述:

使用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这个文件,让系统重新生成一个

CDH安装时,无法纳管全部的节点的一个bug的更多相关文章

  1. CDH安装时,部分节点不受管控

    解决方案: /opt/cm-5.12.0/etc/init.d/cloudera-scm-agent stop cd /opt/cm-5.12.0/lib/cloudera-scm-agent/ rm ...

  2. cdh 安装记录

    安装文件准备 CDH 下载地址:http://archive.cloudera.com/cdh5/parcels/latest/ 下载操作系统对应的版本: 1.CDH-5.3.0-1.cdh5.3.0 ...

  3. CDH安装详细测试正确

    1. CDH简介 简单来说,Cloudera Manager是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到 ...

  4. CDH安装错误集锦

      CDH安装过程中出现的错误 1.iptables: /sbin/iptables 不存在 我是因为误删将 /sbin/下的文件删除了. 解决方法: yum install iptables 2.c ...

  5. 启用CentOS6.5 64位安装时自带的MySQL数据库服务器

    本人在虚拟机上又安装了一台linux机器,作为MySQL数据库服务器用,在安装时选择了系统自带的MySQL服务器端,以下是启用步骤. 首先开启mysqld服务 #service mysqld star ...

  6. 服务 在初始化安装时发生异常:System.IO.FileNotFoundException: "file:///D:\testService"未能加载文件或程序集。系统找不到指定文件。

    @echo.@if exist "%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" goto INSTALL ...

  7. ECMall——安装时的小bug解决办法

    第一次安装ECmall,安装了好多遍,总是出现Strict Standards: Non-static method这样的错误,折腾了五六遍,还是安装不上,仍然是类似的错误.气愤!于是上百度查:Ecm ...

  8. SQL Server Data Tools – Business Intelligence for Visual Studio 2012安装时提示“The CPU architecture....”的解决方法

    SQL Server Data Tools – Business Intelligence for Visual Studio 2012,一个很强大的工具,下载地址:http://www.micros ...

  9. vs2013安装闪退及vs2010 vs2013打开时提示 未能完成的操作 及vs2013安装时出现图片后闪退

    vs2013打开时提示如上图,vs2010只有  未能完成的操作  这样的提示. 这时.net 4.0开发的程序打开也毫无反应,应该是.net framework出了问题.查看控制面板-卸载程序,发现 ...

随机推荐

  1. nodepad++ | 变成 _

    点击右下角切换

  2. 518-零钱兑换 II(完全背包-求方案总数)

    518-零钱兑换 II(完全背包-求方案总数) 给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币有无限个. 示例 1: 输入: amount = 5, c ...

  3. 《深入理解java虚拟机》读书笔记四——第五章

    第五章 调优案例分析与实战

  4. UVa 12050 - Palindrome Numbers (回文数)

    A palindrome is a word, number, or phrase that reads the same forwards as backwards. For example, th ...

  5. 删除Eclipse中的SVN账号信息-SVN切换用户

    在eclipse中经常用到用svn进行代码版本控制,为了提交或更新代码的时候不反复地提示我们输入用户名和密码,于是我们就习惯把访问SVN的用户名密码自动保存起来. 以便下次自动使用,不要再次手工多次输 ...

  6. 添加右键新增.md文件

    Windows下设置.md文件右键可新建 应用场景:Windows10, Typora(Markdown编辑器) 因为习惯用Markdown来写文档, 所以常常需要新建.md文档,但由于Windows ...

  7. C++中多态实现的关键——虚函数

    1.多态的作用 在面向对象程序设计中,使用多态能够增强代码的可扩充性,,即程序需要增加或修改部分功能时,只需修改少量代码就能够达到目的,此外多态也能起到精简代码的作用. 而实现多态的关键点,就是虚函数 ...

  8. android 直接添加一个Fragment到activity,不需要额外setContentView

    getSupportFragmentManager().beginTransaction().replace(android.R.id.content,new ArticleListFragment( ...

  9. [object object]

    第一个object代表用户自定义的对象的属性. 第二个object代表用户自定义的对象的方法. 是valueOf返回的一个字符串另外你打错了吧应该是[object Object]表示对象的类型是obj ...

  10. docker usage (2)

    1. docker command docker start postgres docker container ls --all docker image ls --all docker ps -a ...