解决Cloudera-Manager搭建CDH集群时hue数据库连接失败问题(二)
这个问题最常见的现象就是如下:
在查看${CM_HOME}/log/cloudera-scm-server/cloudera-scm-server.log日志文件时,给出如下错误:
[21/Feb/2019 15:21:36 +0000] settings DEBUG DESKTOP_DB_TEST_NAME SET: /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/desktop/desktop-test.db
[21/Feb/2019 15:21:36 +0000] settings DEBUG DESKTOP_DB_TEST_USER SET: hue_test
/usr/cloudera-manager/cm-5.9.0/cm-5.9.0/run/cloudera-scm-agent/process/54-HUE-test-db-connection/altscript.sh: line 12: /usr/java/jdk1.8.0_191/bin/java: Permission denied
/usr/cloudera-manager/cm-5.9.0/cm-5.9.0/run/cloudera-scm-agent/process/54-HUE-test-db-connection/altscript.sh: line 12: exec: /usr/java/jdk1.8.0_191/bin/java: cannot execute: Permission denied
Traceback (most recent call last):
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/build/env/bin/hue", line 12, in <module>
load_entry_point('desktop==3.9.0', 'console_scripts', 'hue')()
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/desktop/core/src/desktop/manage_entry.py", line 59, in entry
execute_from_command_line(sys.argv)
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/core/management/__init__.py", line 261, in fetch_command
commands = get_commands()
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/core/management/__init__.py", line 107, in get_commands
apps = settings.INSTALLED_APPS
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/conf/__init__.py", line 54, in __getattr__
self._setup(name)
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/conf/__init__.py", line 49, in _setup
self._wrapped = Settings(settings_module)
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/conf/__init__.py", line 128, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/utils/importlib.py", line 40, in import_module
__import__(name)
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/desktop/core/src/desktop/settings.py", line 328, in <module>
"PASSWORD" : desktop.conf.get_database_password(),
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/desktop/core/src/desktop/conf.py", line 1278, in get_database_password
password = DATABASE.PASSWORD_SCRIPT.get()
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/desktop/core/src/desktop/lib/conf.py", line 147, in get
return self.config.get_value(data, present=present, prefix=self.prefix, coerce_type=True)
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/desktop/core/src/desktop/lib/conf.py", line 263, in get_value
return self._coerce_type(raw_val, prefix)
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/desktop/core/src/desktop/lib/conf.py", line 283, in _coerce_type
return self.type(raw)
File "/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hue/desktop/core/src/desktop/lib/conf.py", line 712, in coerce_password_from_script
raise subprocess.CalledProcessError(p.returncode, script)
subprocess.CalledProcessError: Command '/usr/cloudera-manager/cm-5.9.0/cm-5.9.0/run/cloudera-scm-agent/process/54-HUE-test-db-connection/altscript.sh sec-2-password' returned non-zero exit status 126
可以看到这个exec: /usr/java/jdk1.8.0_191/bin/java: cannot execute: Permission denied 主要是因为java命令的执行权限不够导致的,在网上搜索这个问题时,很多都说把$JAVA_HOME/bin/java 和 $JAVA_HOME/bin/javac这两个命令的权限设成777 ,试过了但是没有用,后来在一个国外的网址https://community.hortonworks.com/content/supportkb/151759/errorusrhdp2603-8hadoop-hdfsbinhdfsdistro-line-317.html, 上面说需要把$JAVA_HOME 下所有文件的权限递归修改成755才行
我的jdk安装在/usr/java/jdk1.8.0_191/目录下,于是使用如下命令,在每一个节点上(包括server和agent)执行:
chmod -R 755 /usr/java/
最后就可以解决问题了。