hadoop streaming 不要解压缩档案

hadoop streaming don't untar archives

写hadoop流任务时。我使用 -archives 将一个 tgz 从本地机器上传到 hdfs 任务工作目录,但它并没有像文档所说的那样被解压。我搜索了很多都没有运气。

这里是hadoop-2.5.2的hadoop流任务启动命令,很简单

hadoop jar /opt/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.5.2.jar \
    -files mapper.sh
    -archives /home/hadoop/tmp/test.tgz#test \
    -D mapreduce.job.maps=1 \
    -D mapreduce.job.reduces=1 \
    -input "/test/test.txt" \
    -output "/res/" \
    -mapper "sh mapper.sh" \
    -reducer "cat"

和"mapper.sh"

cat > /dev/null
ls -l test
exit 0

在"test.tgz"中有两个文件"test.1.txt"和"test.2.txt"

echo "abcd" > test.1.txt
echo "efgh" > test.2.txt
tar zcvf test.tgz test.1.txt test.2.txt

上述任务的输出

lrwxrwxrwx 1 hadoop hadoop     71 Feb  8 23:25 test -> /tmp/hadoop-hadoop/nm-local-dir/usercache/hadoop/filecache/116/test.tgz

但想要的可能是这样的

-rw-r--r-- 1 hadoop hadoop 5 Feb  8 23:25 test.1.txt
-rw-r--r-- 1 hadoop hadoop 5 Feb  8 23:25 test.2.txt

所以,为什么 test.tgz 没有像 document 所说的那样自动解压,还有没有其他方法可以解压 "tgz"

任何帮助,谢谢

这将解压 tar -zxvf test.tgz

我的错误。在向 hadoop.apache.org 提交问题后。有人告诉我,hadoop 实际上已经解压缩了 test.tgz.

虽然名称仍然是test.tgz,但它是解压后的目录。所以文件可以像 "cat test/test.1.txt"