我已经在我的系统(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/
(我使用了通配符,因此如果您只需要目录,请将其删除)
祝你好运