2012-07-09 108 views
0

我正在尝试将CHD3安装到3节点群集上。我通过Cloudera Manager启动安装。所有三个安装失败。Cloudera CDH3安装失败,如何解决这个问题?

我看到这个错误的Cloudera安装在/var/log/cloudera-scm-agent/cloudera-scm-agent.out失败后:

File "/usr/lib64/cmf/agent/src/cmf/agent.py", line 19, in <module> 
    import psutil 
    File "/usr/lib64/cmf/agent/build/env/lib/python2.6/site-packages/psutil-0.3.0-py2.6-linux-x86_64.egg/psutil/__init__.py", line 84, in <module> 
    TOTAL_PHYMEM = _psplatform.phymem_usage()[0] 
    File "/usr/lib64/cmf/agent/build/env/lib/python2.6/site-packages/psutil-0.3.0-py2.6-linux-x86_64.egg/psutil/_pslinux.py", line 122, in phymem_usage 
    percent = usage_percent(total - (free + buffers + cached), total, 
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType' 

显然,Python解释器上运行启动看见“自由“,”缓冲区“或”缓存“为具有NoneType,并且此错误会导致整个安装回滚。

任何人都可以建议为什么会发生这种情况和/或解决问题的方法?

在此先感谢。

+0

重新运行安装失败,并在/var/log/cloudera-manager-installer/5.init-embedded-db.log以下消息:在/ var/lib中/ cloudera-scm-server-db/data是非空的;也许数据库已经初始化了? – 2012-07-12 19:52:56

+0

$ sudo的LS的/ var/lib中/ Cloudera的-SCM服务器-DB /数据 基础pg_clog里pg_log pg_subtrans PG_VERSION postmaster.opts generated_pa​​ssword.txt的pg_hba.conf pg_multixact pg_tblspc关联pg_xlog里面 全球'pg_ident.conf'里pg_stat_tmp pg_twophase的postgresql.conf $ sudo的ls -l/var/lib/cloudera-scm-server-db/ total 4 drwx ------ 12 cloudera-scm cloudera-scm 4096 Jun 17 00:08 data – 2012-07-12 19:55:22

+1

是否有理由需要运行CDH3?我已经安装了CDH3和CDH4。在安装CDH3时需要做“无证”的事情。我和Cloudera一起在电话上花了几个小时来开始工作。 CDH4安装非常简单。 – 2012-07-16 17:48:09

回答

1

的问题是在这里,在_pslinux.py phymem_usage():

def phymem_usage(): 
    # total, used and free values are matched against free cmdline utility 
    # the percentage matches top/htop and gnome-system-monitor 
    f = open('/proc/meminfo', 'r') 
    try: 
     total = free = buffers = cached = None 
     for line in f: 
      if line.startswith('MemTotal:'): 
       total = int(line.split()[1]) * 1024 
      elif line.startswith('MemFree:'): 
       free = int(line.split()[1]) * 1024 
      elif line.startswith('Buffers:'): 
       buffers = int(line.split()[1]) * 1024 
      elif line.startswith('Cached:'): 
       cached = int(line.split()[1]) * 1024 
       break 
     used = total - free 
     percent = usage_percent(total - (free + buffers + cached), total, 
           _round=1) 
     return ntuple_sysmeminfo(total, used, free, percent) 
    finally: 
     f.close() 

注意,它正在研究的/ proc/meminfo中,并转化领域的整数无如果存在这些领域的检查。在某些系统上,包括某些虚拟化技术,缓冲区或缓存可能会丢失。 (LSB规范指出这些字段中的大部分都是可选的)。

快速解决方法是将/ proc/meminfo更改为/ tmp/meminfo,“cat/proc/meminfo>/tmp/meminfo”,然后添加一条线,如:

缓冲液:0 KB

+0

这里也有信息:https://groups.google.com/forum/?fromgroups#!topic/psutil/lSE54S4iPd0 – AdamIerymenko 2012-08-02 14:28:45