近期项目中需要用oozie workflow调度hivesql,发现无法执行查询语句,见:https://community.cloudera.com/t5/Batch-Processing-and-Workflow/Oozie-Hive-action-failed-with-wrong-tmp-path/td-p/37443 由此得知,罪魁祸首是cdh的bug,需要将版本升级一下。
升级步骤:
1、在一个节点上查询服务
service --status-all
发现只有cloudera-scm-agent,没有cloudera-scm-server,说明这不是主节点。
2、查看cloudera的主节点
cat /etc/cloudera-scm-agent/config.ini
查找server_host的值,这就是服务端安装的主节点,在主节点上登录。
3、查看CM依赖的数据库
cat /etc/cloudera-scm-server/db.properties
4、备份CM数据
pg_dump -U scm -p 7432 > scm_server_db_backup.bak
其中scm是依赖的数据库名,密码见第3步中的结果。检查/tmp下是否有文件生成,期间保证tmp下文件不要被删除。
5、停止CM server :
sudo service cloudera-scm-server stop
停止CM server依赖的数据库:
sudo service cloudera-scm-server-db stop
如果这台CM server上有agent在运行也停止:
sudo service cloudera-scm-agent stop
其中,cloudera-scm-server-db服务停止失败,查询服务状态发现如下:
pg_ctl: server is running (PID: 1713)
/usr/bin/postgres "-D" "/var/lib/cloudera-scm-server-db/data"
cd /var/lib/cloudera-scm-server-db/data rm postmaster.pid
http://blog.puneethabm.in/cloudera-scm-server-db-pg_ctl-server-does-not-shut-down/
6、查看yum的 cloudera-manager.repo文件需不需要修改
sudo vim /etc/yum.repos.d/cloudera-manager.repo
发现cloudera-manager版本较新,不需要升级cloudera-manager
7、升级
sudo yum clean all
sudo yum upgrade 'cloudera-*'
检查:
rpm -qa 'cloudera-manager-*'
8、启动CM server 数据库:
sudo service cloudera-scm-server-db start
启动失败!!
ps -l -ef | grep bin/postgres
查看DB进程,发现存在cloudera-scm-server-db的进程
#kill -9 [pid]
杀掉再启动服务,OK
启动CM server:
sudo service cloudera-scm-server start
启动CM agent:
sudo service cloudera-scm-agent start
最后,重新用oozie调hive,执行成功 !!
参考:
http://www.tuicool.com/articles/YVnu6v
http://www.aboutyun.com/thread-10856-1-1.html