博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

对cdh搭建过程错误总结及解决方法

Posted on 2019-05-10 09:29  来碗酸梅汤  阅读(1930)  评论(0编辑  收藏  举报

1、cdh安装是parcel包下载完毕卡在分配环节

查看agent.log一下错误;

MainThread agent        ERROR    Caught unexpected exception in main loop.
Traceback (most recent call last):
  File "/opt/cm-5.8.3/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.8.3-py2.7.egg/cmf/agent.py", line 710, in __issue_heartbeat
    self._init_after_first_heartbeat_response(resp_data)
  File "/opt/cm-5.8.3/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.8.3-py2.7.egg/cmf/agent.py", line 947, in _init_after_first_heartbeat_response
    self.client_configs.load()
  File "/opt/cm-5.8.3/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.8.3-py2.7.egg/cmf/client_configs.py", line 682, in load
    new_deployed.update(self._lookup_alternatives(fname))
  File "/opt/cm-5.8.3/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.8.3-py2.7.egg/cmf/client_configs.py", line 432, in _lookup_alternatives
    return self._parse_alternatives(alt_name, out)
  File "/opt/cm-5.8.3/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.8.3-py2.7.egg/cmf/client_configs.py", line 444, in _parse_alternatives
    path, _, _, priority_str = line.rstrip().split(" ")
ValueError: too many values to unpack
解决方案是修改 /usr/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.10.0-py2.7.egg/cmf/client_configs.py 这个脚本的第444行
for line in output.splitlines():
      if line.startswith("/"):
        if len(line.rstrip().split(" "))<=4:
          path, _, _, priority_str = line.rstrip().split(" ")

          # Ignore the alternative if it's not managed by CM.
          if CM_MAGIC_PREFIX not in os.path.basename(path):
            continue

          try:
            priority = int(priority_str)
          except ValueError:
            THROTTLED_LOG.info("Failed to parse %s: %s", name, line)

          key = ClientConfigKey(name, path)
          value = ClientConfigValue(priority, self._read_generation(path))
          ret[key] = value

        else:
          pass
    return ret

  其实就是添加 if len(line.rstrip().split(" "))<=4:  和  else:  pass;