温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​https://github.com/fayson/cdhproject​


提示:代码块部分可以左右滑动查看噢


1

启动失败异常描述


通过上篇文章《0573-5.16.1-如何将CDSW从1.4.2升级到1.5》升级CDSW服务后,启动CDSW服务在Cloudera Manager上显示服务启动失败“”,使用cdsw status命令查看CDSW服务中docker镜像启动情况显示如下:


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_postgresql


上图显示db-migrate镜像启动失败,导致CDSW服务无法正常启动。


2

问题解决


1.在命令行使用docker命令进入正在运行的web容器中


docker exec -i -t 8ebab7285577 /bin/bash


进入正在运行的web容器中后执行sh run-db-migrations.sh脚本,脚本执行失败报错


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_cloudera_02


2.根据提示的错误信息,在命令行执行db-migrate up --verbose --force-exit --config migrations/db.json –e db


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_postgresql_03


3.通过上述命令返回的信息,可以看到执行三条SQL语句的时候报错


INSERT INTO engine_images (description, repository, tag) VALUES ('Base Image v7', 'docker.repository.cloudera.com/cdsw/engine', '7');
UPDATE site_config
SET default_engine_image_id = (
SELECT id
FROM engine_images
WHERE repository = 'docker.repository.cloudera.com/cdsw/engine'
AND tag = '7'
)
WHERE default_engine_image_id = (
SELECT id
FROM engine_images
WHERE repository = 'docker.repository.cloudera.com/cdsw/engine'
AND tag = '6'
);
DELETE FROM engine_images WHERE id < (SELECT MAX(id) from engine_images) AND NOT EXISTS (SELECT 1 FROM users);


4.通过docker命令进入正在运行的CDSW数据库db容器


[root@cdsw ~]# docker exec -i -t e8f50e3d659a /bin/bash
root@db-586cf7d4b6-8d987:/# cd /usr/lib/postgresql/9.3/bin
root@db-586cf7d4b6-8d987:/usr/lib/postgresql/9.3/bin# su postgres
postgres@db-586cf7d4b6-8d987:/usr/lib/postgresql/9.3/bin$ ./psql
postgres=# \c sense
sense=# select * from engine_images;


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_postgresql_04


可以看到engine_images表中已插入了Base 7的Image信息,再查看site_config表数据


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_postgresql_05


发现UPDATE语句未执行成功。


5.在Postgresql的命令行重新执行Update语句


UPDATE site_config
SET default_engine_image_id = (
SELECT id
FROM engine_images
WHERE repository = 'docker.repository.cloudera.com/cdsw/engine'
AND tag = '7'
)
WHERE default_engine_image_id = (
SELECT id
FROM engine_images
WHERE repository = 'docker.repository.cloudera.com/cdsw/engine'
AND tag = '6'
);


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_docker_06


如上图显示数据更新成功。


6.此时回到CDSW web容器的命令行下,再次执行sh run-db-migrations.sh脚本显示执行成功


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_postgresql_07


7.完成上述操作后,再次使用cdsw status命令查看显示如下


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_postgresql_08


只有db-migrate镜像显示Faild,cdsw web服务已显示Running中,在这个时候已经可以通过浏览器访问CDSW服务并可以正常启动Session。


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_postgresql_09


8.由于上述通过cdsw status命令看到有db-migrate镜像启动失败,通过重启CDSW服务后状态显示正常


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_docker_10

0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_postgresql_11


页面访问及Session运行均正常


0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_cloudera_12


3

总结


1.db-migrate主要是用来CDSW版本升级后做DB数据迁移及升级执行脚本的镜像。


2.通过上述现象分析可以看到由于CDSW1.4升级到1.5版本后,Postgresql数据库中一些SQL脚本升级执行失败导致。


3.db-migrate执行完成DB升级脚本后就会停止,与cdsw status返回的信息是一致的。


提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

0574-5.16.1-CDSW1.4升级1.5版本db-migrate镜像启动失败问题解决_cloudera_13

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操