近期项目中需要用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