sqoop 执行可以以job形式 也可以执行用命令执行,再用sqoopjob时,踩了几个坑,分享一下

1、服务器重启

由于服务器增加硬盘,需要重启后,发现sqoop job 无法执行,报连接数据库IO之类的错误,但是sqoop命令是可以执行的,

这也就奇怪了,刚开始以为是连接不上hadoop元数据库,但是sqoop命令可以执行,这就比较坑了。

通过同不断的查找分析发现,最后竟然是sqoop自带的元数据库没启动。

通过sqoop安装目录bin下的start-metastore.sh 可以重启。

以下是进程,代表启动成功

root     16666     1  0 Nov16 ?        00:02:23 /usr/local/jdk/bin/java -Xmx1000m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/usr/lib/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/lib/hadoop -Dhadoop.id.str= -Dhadoop.root.logger=INFO,console -Djava.library.path=/usr/lib/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx4096m -Dhadoop.security.logger=INFO,NullAppender org.apache.sqoop.Sqoop metastore

2、修改

修改完脚本,发现不生效,原来sqoop job在执行中会先查找元数据库中的job,如果有就执行,如果没有就会生成一个job。

因为你原来脚本有job,所以还会继续跑原来的脚本,

需要人工找到对应的job,删除jobid即可,

当然这种好处也明显,线上线上分离,如果上线流程规范,那么这种问题就可以避免。

posted on 2016-11-17 13:53  无尽的缥缈  阅读(3284)  评论(1编辑  收藏  举报