Sqoop将Oracle数据导入HDFS时出现权限问题: Permission denied: user=root, access=WRITE,

利用Sqoop将Oracle数据导入HDFS时出现权限问题。

执行列表操作 能正常列出数据库中的表
sqoop list-tables --connect jdbc:oracle:thin:@IP地址:端口号:数据库 --username 用户名 --password 密码 
但是执行import操作则提示权限问题:
sqoop import --connect jdbc:oracle:thin: @IP地址:端口号:数据库 --username 用户名 --password 密码 --table 表名--target-dir 目标路径 -m 1   (注:此处的目标路径应为hdfs路径,如:/user/table)

主要日志:

WARN retry.RetryInvocationHandler: Exception while invoking ClientNamenodeProtocolTranslatorPB.mkdirs over null. Not retrying because try once and fail.
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):Permission denied: user=root,access=WRITE,inode="/user/root/.staging":hdfs:hdfs:drwxr-xr-x。
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=root,access=WRITE,inode="/user/root/.staging":hdfs:hdfs:drwxr-xr-x

网上多数方法是:

1、修改hdfs配置文件中的dfs.permissions值为false;

2、执行操作 hadoop fs -chmod 777 /user/hadoop。

我使用的HDFS版本号是2.7.3。两张方法都试了试,其中用第一中方法修改了所有slave节点相应配置文件,但是重启HDFS后发现false又自动变回了true。失败。

搜索了一上午,最终发现宝帖:https://www.cnblogs.com/invban/p/5673517.html

受此贴的启发,更改登录账户为hdfs,重新执行import操作,成功。

由于操作一直是在root账户下,而导入操作是要导入到HDFS中,当然会提示权限不足的问题。

解决方法:

1、切换账号 ,执行命令:  su hdfs;

2、重新执行import操作。


另一种解法是给要访问的路径授权给root用户:

hadoop fs -chown -R root /user/hive   其中root是被授权对象,/user/hive是root要访问的路径。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值