我有 root 访问服务器,安装了hadoop和hive。但是,尽管我拥有root权限,我无法将数据从文件系统复制到hdfs:
root@serv:~# hadoop fs -put flume_test/logs /user
put: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
我尝试了不同的方法从文件flume_test/logs
创建表,而不是在hdfs中。例如:
CREATE TABLE natlog_orc (
src_local_ip STRING,
time_start STRING,
time_end STRING,
src_global_ip STRING,
protocol STRING,
port_start STRING,
port_end STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ","
STORED AS TEXTFILE
LOCATION /root/flume_test/logs;
但他们中没有一个人没有工作。
那么,我如何从文件中创建外部表,而不是位于hdfs中?或者我可以更改hadoop设置中的哪个参数以获得将数据复制到hdfs的必要权限?
答案 0 :(得分:1)
HDFS权限与本地文件系统不同。 root没有超级权限。您获得的错误是因为root用户没有写入/ user的权限。切换到hdfs用户(运行su - hdfs
)并在hdfs上创建一个目录以将数据放入(例如/ user / root)。将目录chown到root,您就可以将数据上传到hdfs。