Hadoop 由于权限错误,HDP沙盒SQOOP失败
以下是错误消息: 无法移动源 hdfs://sandbox-hdp.hortonworks.com:8020/user/maria_dev/DimDepartmentGroup/part-百万 目的地 hdfs://sandbox-hdp.hortonworks.com:8020/warehouse/tablespace/managed/hive/dbodimemployee/delta_0000001_0000001_0000: 权限被拒绝:用户=配置单元,访问=写入, inode=“/user/maria\u dev/DimDepartmentGroup”:maria\u dev:hdfs:drwxr-xr-x 我完全糊涂了。错误消息本身显示Maria_-dev对文件夹Hadoop 由于权限错误,HDP沙盒SQOOP失败,hadoop,permissions,hdfs,sqoop,hortonworks-sandbox,Hadoop,Permissions,Hdfs,Sqoop,Hortonworks Sandbox,以下是错误消息: 无法移动源 hdfs://sandbox-hdp.hortonworks.com:8020/user/maria_dev/DimDepartmentGroup/part-百万 目的地 hdfs://sandbox-hdp.hortonworks.com:8020/warehouse/tablespace/managed/hive/dbodimemployee/delta_0000001_0000001_0000: 权限被拒绝:用户=配置单元,访问=写入, inode=“/use
inode=“/user/Maria_-dev/DimDepartmentGroup”:Maria_-dev:hdfs:drwxr-xr-x
我错过了什么?最后,我成功了。我以root用户身份登录,并使用
su-hive
切换到hive用户。
然后我成功地运行了SQOOP命令。以前我以maria_dev的身份登录,无法使用su
命令。我没有用户配置单元的密码,因为配置单元不是HDP沙箱中的常规用户
不过,我还是很奇怪,用户需要具有root访问权限才能将一些数据加载到HDP配置单元中 运行Sqoop时,**通常**它首先从外部数据库加载数据,然后将其作为多部分文件存储在给定位置
(-target dir/goldman/yahoo)
,然后从该位置存储到配置单元表(-hive table topclient.mpool)
现在您可以在2级拒绝访问
1) 如果在文件位置/goldman/yahoo
看到访问被拒绝,则将filelocation访问设置为777,以hdfs用户身份运行-sudo-u hdfs-hadoop fs-chmod 777/goldman/yahoo
2) 如果在创建表时看到访问被拒绝,请以用户hive
的身份运行sqoop命令,因为用户hive
可以访问hive表,即
sudo-u配置单元sqoop导入--connect'jdbc:sqlserver://test.goldman-invest.data:1433;databaseName=Investment_Banking'--用户名用户*****cqe--密码********--表案例--目标目录/goldman/yahoo--配置单元导入--创建配置单元表--配置单元表topclient.mpool
我仔细看了一下。因此被拒绝的用户实际上是hdfs,这是运行mapreduce作业的帐户。但是,我将hdfs path/user/maria_dev/的安全性设置为777,因此任何人都可以编写它。root用户创建的子文件夹/user/maria_dev/DimDepartmentGroup怎么可能没有对所有人的写入权限?这是hive
user而不是hdfs
@tk421,谢谢。你是对的。被拒绝的用户是配置单元。现在我甚至不确定我是否为这个命令使用了正确的用户帐户。我甚至尝试使用“root”帐户,但得到了相同的消息,只是“maria_dev”被“root”取代。