将文件从 HDFS 复制到本地系统时出现问题

将文件从 HDFS 复制到本地系统时出现问题

我已经在我的系统(Ubuntu 14.04)上成功安装并执行了一个 mapreduce 程序。

我可以看到输出文件如下,

hadoopuser@arul-PC:/usr/local/hadoop$ bin/hadoop dfs -ls /user/hadoopuser/MapReduceSample-output
Found 3 items
-rw-r--r--   1 hadoopuser supergroup          0 2014-07-09 16:10 /user/hadoopuser/MapReduceSample-output/_SUCCESS
drwxr-xr-x   - hadoopuser supergroup          0 2014-07-09 16:10 /user/hadoopuser/MapReduceSample-output/_logs
-rw-r--r--   1 hadoopuser supergroup     880838 2014-07-09 16:10 /user/hadoopuser/MapReduceSample-output/part-00000

我可以使用以下命令在终端上打开它,

hadoopuser@arul-PC:/usr/local/hadoop$ bin/hadoop dfs -cat /user/hadoopuser/MapReduceSample-output/part-00000

我可以在终端上看到输出文件,但是由于我的输出有大量行,所以我看不到完整的结果。

更新

我试图将输出文件复制到本地机器,

hadoopuser@avvenire-PC:/usr/local/hadoop$ bin/hadoop dfs -copyToLocal  /user/hadoopuser/MapReduceSample-output/part-00000 /home/arul/Downloads/SampleDataHadoop

我得到的答复是,

copyToLocal: Permission denied

期待解决方案。

答案1

您使用的命令将以普通用户身份执行。并且您复制到的位置不属于您的用户。

因此答案是以管理员身份执行此操作:放在sudo命令前面。即:

hadoopuser@arul-PC:/usr/local/hadoop$ sudo bin/hadoop dfs -copyToLocal 
/user/hadoopuser/MapReduceSample-output/part-00000 /home/arul/Downloads/SampleDataHadoop/

答案2

即使您sudo在命令开头使用copyToLocal,您仍然需要注意,如果 HDFS 中的文件存储在用户拥有的目录中的某个位置,您需要成为该用户才能复制它。

例如,如果您的 HDFS 文件在/user/root/....您的用户中,那么 sudo 应该是root- 如果它是 /user/keanureeves,那么您的用户应该从该用户开始。

下面是一个可供参考的示例:

 sudo -u root hdfs dfs -copyToLocal  /user/root/XXXX/20210921/* /home/YYYY/

(我使用了通配符,因此如果您只需要目录,请将其删除)

祝你好运

相关内容