Hue中通过Oozie调度sqoop1,导入数据到Hive问题

环境:

软件版本配置
HDP2.6.31 master ,2 core
Hue4.4.0Hue server(master)
Sqoop1.4.6client(master and 2 core)
Hive1.2.1000Hive Metastore 、HiveServer2、WebHCat Server (master) , client(master and 2 core)

作业内容:
把postgresql 中sqooptest 数据库中的test 表中的数据导入到到Hive

import --connect jdbc:postgresql://xxxxxx:xxx/sqooptest   --username cmonitor --password cmonitor --table test --hive-import  --hive-database default --hive-table test1 -m 1

问题一:缺少postgresql 数据库驱动

5562 [main] ERROR org.apache.sqoop.Sqoop  - Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: org.postgresql.Driver

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]

添加 /usr/hdp/2.6.3.0-235/oozie/libtools/postgresql-9.0-801.jdbc4.jar 到 **/user/oozie/share/lib/lib_*/sqoop/ 目录中下 ,重启Oozie

问题二:Heart beat

Heart beat
Heart beat
Heart beat
Heart beat

有可能是机器的内存太小,可以减小yarn每个core分配的最小内存和调整AM容器可占用的内存比例。
yarn.scheduler.minimum-allocation-mb

yarn.scheduler.capacity.maximum-am-resource-percent,默认0.2, 即20%

问题三:java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf

27737 [main] ERROR org.apache.sqoop.hive.HiveConfig  - Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
27737 [main] ERROR org.apache.sqoop.hive.HiveConfig  - Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
27738 [main] ERROR org.apache.sqoop.tool.ImportTool  - Encountered IOException running import job: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf

缺少hive相关的jar包,这个错误可以通过两种方式处理:

1. 把缺少的jar在xml方式引入,缺少一个引入一个
比如:org.apache.hadoop.hive.conf.HiveConf 是在hive-common.jar包中,通过设置添加文件的方式引入xml.
在这里插入图片描述
2. hive2相关的包都在hive2的sharelib路径下,直接把hive2 的 sharelib 配置到 sqoop的action中
oozie-size.xml 添加

  oozie.action.sharelib.for.sqoop=sqoop,hive

重启oozie。

问题四:143

Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143. 

这种一般是物理内存达到限制,导致container被kill掉报错。
从报错时刻看是执行reduce阶段报错;故可能reduce处理阶段container的内存不够导致,可以进行以下修改(根据机器配置调整):

mapreduce.map.memory.mb=4096
mapreduce.reduce.memory.mb=4096
yarn.nodemanager.vmem-pmem-ratio=4.2

因此,单个map和reduce分配物理内存4G;虚拟内存限制4*4.2=16.8G;
如果还是有问题看问题五

问题五:Permission denied : /tmp/hive/yarn/_tez_session_dir//hive-hcatalog-core.jar*

数据在最后写入hive阶段, container kill。或者出现以下情况:

[Thread-28] INFO  org.apache.sqoop.hive.HiveImport  - org.apache.hadoop.security.AccessControlException: Permission denied: user=hue, access=EXECUTE, inode="/tmp/hive/yarn/_tez_session_dir/*hive-hcatalog-core.jar":yarn:hdfs:drwx------
[Thread-28] hive.HiveImport (LoggingAsyncSink.java:run(85)) - org.apache.hadoop.security.AccessControlException: Permission denied: user=urep, access=EXECUTE, inode="/tmp/hive/yarn/_tez_session_dir/*/hive-hcatalog-core.jar":yarn:hdfs:drwx------

可能是缺少定制的hive和tez配置文件,可以直接把机器上的hive-site.xml,tez-site.xml文件传入hdfs 的 sqoop 的lib 目录下。比如

hdfs dfs -put /etc/oozie/2.6.3.0-235/0/action-conf/hive/tez-site.xml  /user/oozie/share/lib/lib_*/sqoop/
hdfs dfs -put /etc/oozie/2.6.3.0-235/0/action-conf/hive/hive-site.xml /user/oozie/share/lib/lib_*/sqoop/

重启Oozie,导入成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值