安装Cloudera Manager后CDH集群无法执行Hadoop等命令求助
嘿,这种情况在CDH集群部署后挺常见的——虽然Cloudera Manager理论上会自动配置环境变量,但有时候因为用户权限或配置逻辑的问题,终端操作的用户(比如你用的hadoop用户)没法直接调用hadoop、impala这些命令。咱们一步步来排查解决:
1. 先确认服务二进制文件的位置
CDH的所有服务二进制文件默认都在/opt/cloudera/parcels/CDH/bin/目录下,先执行这条命令验证一下:
ls /opt/cloudera/parcels/CDH/bin/
如果能看到hadoop、impala-shell这些可执行文件,说明程序本身安装没问题,只是环境变量没把这个路径加进去。
2. 临时生效的环境变量配置(快速测试)
如果只是想临时用一下这些命令,直接在当前终端执行这条命令:
export PATH=/opt/cloudera/parcels/CDH/bin:$PATH
然后马上试试hadoop version或者impala-shell,应该就能正常运行了。
3. 永久配置hadoop用户的环境变量
要是想让hadoop用户每次登录终端都能直接用这些命令,就编辑该用户的~/.bashrc文件:
vi ~/.bashrc
在文件末尾添上这一行:
export PATH=/opt/cloudera/parcels/CDH/bin:$PATH
保存退出后,执行下面的命令让配置立即生效:
source ~/.bashrc
之后重新登录hadoop用户,再执行命令就不会报错了。
4. 关于Cloudera Manager自动配置失效的说明
你提到CM应该自动配置环境变量,其实CM主要是给服务运行用户(也就是你的cloudera-scm)配置了环境变量,而你是用hadoop用户登录终端操作,所以CM的配置不会自动同步到hadoop用户的环境里。手动配置用户自己的环境变量是最直接的解决方案。
5. 验证配置是否成功
配置完成后,执行这条命令查看PATH变量:
echo $PATH
如果输出里包含/opt/cloudera/parcels/CDH/bin,就说明配置生效了。
要是你需要让其他用户(比如root)也能调用这些命令,可以修改全局的/etc/profile文件(需要root权限),添加同样的PATH配置行,然后执行source /etc/profile生效。
内容的提问来源于stack exchange,提问作者Simpson Yang

