您的位置:首页 > 数据库 > Oracle

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

2018-01-13 17:15 1411 查看
利用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要访问的路径。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HDFS 大数据
相关文章推荐