【问题标题】:Working with file located not in hdfs使用不在 hdfs 中的文件
【发布时间】:2015-08-03 03:46:09
【问题描述】:

我拥有对服务器的 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 的必要权限?

【问题讨论】:

    标签: hadoop hive bigdata


    【解决方案1】:

    HDFS 权限与您的本地文件系统不同。 root 没有超级权限。您收到的错误是因为 root 用户没有写入 /user 的权限。切换到 hdfs 用户(运行su - hdfs)并在 hdfs 上创建一个目录以将您的数据放入(例如 /user/root)。将目录改成root,就可以上传数据到hdfs了。

    【讨论】:

    • 但是如果我想在 hdfs 中创建一个新目录,我会收到相同的消息:root@serv:~# hadoop fs -mkdir /user/root mkdir: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x。 “切换到 hdfs 用户”是什么意思?
    • 我在 hdfs 中没有/user/root 目录,我无法创建它。
    • 您收到错误是因为您以 root 用户身份运行命令... HDFS 不会将 root 用户视为超级用户。当我说切换到 hdfs 用户时,我的意思是运行 su - hdfs 然后创建目录。
    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多