前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Kerberos环境使用Hue通过Oozie执行Sqoop作业报错异常分析

在Kerberos环境使用Hue通过Oozie执行Sqoop作业报错异常分析

作者头像
Fayson
修改2018-04-01 20:56:11
2.1K0
修改2018-04-01 20:56:11
举报
文章被收录于专栏:Hadoop实操Hadoop实操

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.问题描述


关于Sqoop抽取Hive Parquet表数据到MySQL可以参考Fayson前面的文章《Sqoop抽取Hive Parquet表数据到MySQL异常分析》。

在命令行执行Sqoop抽取Hive Parquet表数据到MySQL正常运行,但在Hue中通过Oozie执行Sqoop抽数失败。

Sqoop抽数脚本:

代码语言:txt
复制
sqoop export \
--connect jdbc:mysql://ip-172-31-22-86.ap-southeast-1.compute.internal:3306/test_db \
--username testuser \
--password password \
--table mytest_parquet \
--hcatalog-database default \
--hcatalog-table mytest_parquet --num-mappers 1

异常信息如下,提示:代码块部分可以左右滑动查看噢

代码语言:txt
复制
2017-12-28 11:17:40,871 [main] WARN  org.apache.hadoop.security.UserGroupInformation  - PriviledgedActionException as:fayson (auth:SIMPLE) cause:org.apache.hadoop.ipc.RemoteException(java.io.IOException): Delegation Token can be issued only with kerberos or web authentication
   at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getDelegationToken(FSNamesystem.java:7498)
   at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getDelegationToken(NameNodeRpcServer.java:548)
   at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getDelegationToken(AuthorizationProviderProxyClientProtocol.java:663)
   at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getDelegationToken(ClientNamenodeProtocolServerSideTranslatorPB.java:981)
   at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
   at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)
   at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
   at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2220)
   at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2216)
   at java.security.AccessController.doPrivileged(Native Method)
   at javax.security.auth.Subject.doAs(Subject.java:422)
   at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)
   at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2214)
<<< Invocation of Sqoop command completed <<<

2.解决方法


在Kerberos环境下使用Oozie创建Sqoop抽取Hive表数据到MySQL的Action时出现“Delegation Token”异常,是一个已知的Bug,目前还没有修改,具体描述https://issues.apache.org/jira/browse/SQOOP-3177,可以使用如下替代方案实现:

1.如果使用的Hive中的parquet文件复制生成一份txt文件,使用如下命令进行Sqoop抽数

代码语言:txt
复制
sqoop export \
  --connect jdbc:mysql://ip-172-31-22-86.ap-southeast-1.compute.internal:3306/test_db \
  --username testuser \
  --password password \
  --table mytest_parquet \
  --export-dir /data/mytest \
  --num-mappers 1  \
  --input-fields-terminated-by @

2.编写Shell脚本,通过创建Ssh Action的Oozie工作流实现

代码语言:txt
复制
[fayson@ip-172-31-22-86 ~]$ vim ssh-action.sh 
#!/bin/bash
kinit -kt fayson.keytab fayson

sqoop export \
   --connect jdbc:mysql://ip-172-31-22-86.ap-southeast-1.compute.internal:3306/test_db \
   --username testuser \
   --password password \
   --table mytest_parquet \
   --hcatalog-database default \
   --hcatalog-table mytest_parquet \
   --num-mappers 1

创建Ssh Action的Oozie工作流

提交Oozie工作流运行

查看MySQL中数据

3.总结


  • 在Kerberos环境下使用Oozie创建Sqoop抽取Hive表数据或抽数到Hive表会出现“delegation tokens”异常,目前是一个已知的Bug,具体参考:https://issues.apache.org/jira/browse/SQOOP-3177
  • 可以将Hive中的parquet文件复制生成一份txt文件,抽数时指定export-dir和input-fields-terminated-by参数,注意Sqoop目前不支持多分隔符。
  • 推荐将Sqoop抽数脚本封装在Shell脚本中,通过Hue创建Ssh Action的Oozie工作流来执行Sqoop作业。

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档