hadoop:没有这样的文件或目录

ogq8wdun  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(548)

所以我对hadoop和命令行是全新的,尽管我以前做过一些编程(作为一个学生)。我试图运行几个简单的程序(教程的一部分)从腻子上的学校机器。
我已经得到了hadoop命令工作之前,运行一个不同的简单程序刚刚好,但我坚持这一个。不,这不是家庭作业。只是一个学习hadoop命令的教程。
说明如下:
/*
测试代码
我们执行符合典型unix样式管道的本地测试,我们的测试将采用以下形式:
cat | map | sort | reduce模拟hadoop在流式处理时执行的相同管道,尽管是以非分布式方式。必须确保文件mapper.py和reducer.py具有执行权限:
chmod u+xMap器.py chmod u+x还原器.py
尝试以下命令并解释结果(提示:在终端窗口中键入man sort以了解有关sort命令的更多信息):
echo“这是一个测试,应该计算字数”|./mapper.py | sort-k1,1 |./reducer.py

  • /

运行“hdfs dfs-ls/user/$user”会得到以下结果:
找到6个项目drwxr-xr-x-s1353460 s1353460 0 2015-10-20 10:51/user/s1353460/quasimontecarlo\u 1445334654365\u 163883167 drwxr-xr-x-s1353460 s1353460 0 2015-10-20 10:51/user/s1353460/data-rw-r--3 s1353460 s1353460 360 2015-10-20 12:13/user/s1353460/mapper.py-rw-r--r--3 s1353460 s1353460 15346 2015-10-20 11:11/user/s1353460/part-r-00000-rw-r--r--2 s1353460 s1353460 728 2015-10-21 10:21/user/s1353460/reducer.py drwxr-xr-x-s1353460 s1353460 0 2015-10-16 14:38/user/s1353460/source
但是运行“echo”这是一个测试,它应该计算“|/user/$user/mapper.py | sort-k1,1 |/user/$user/reducer.py”返回错误的字数:
-bash:/user/s1353460/reducer.py:没有这样的文件或目录-bash:/user/s1353460/mapper.py:没有这样的文件或目录
这似乎有点奇怪,因为就在上面的是列在这个位置。你知道这里会发生什么吗?

yb3bgrhw

yb3bgrhw1#

基本上,使用echo,您可以在本地测试文件,而完全不接触hdfs。hdfs是一个文件系统抽象。。。但这是另一个主题。
如果mapper.py或reducer.py不在当前目录中,则无论它们是否位于同一路径的hdfs中,都会出现上述问题。
要在hadoop流媒体中使用本地python文件,您需要使用流媒体jar(其位置取决于您的安装),请参阅本文。

ruoxqz4g

ruoxqz4g2#

但是运行“echo”这是一个测试,它应该计算“|/user/$user/mapper.py | sort-k1,1 |/user/$user/reducer.py”返回错误的字数:
-bash:/user/s1353460/reducer.py:没有这样的文件或目录-bash:/user/s1353460/mapper.py:没有这样的文件或目录
您已创建 mapper.py & reducer.py 在hdfs上。运行此命令时,它将搜索 mapper.py 以及 reducer.py 在本地文件系统上而不是在 HDFS .
要解决此问题,请执行以下操作:
确保/user/s1353460/存在于 your local file system . 如果没有,创建相同的,然后复制或创建 mapper.py & reducer.py in/user/s1353460/
确保 mapper.py 有执行权限 chmod +x /user/s1353460/mapper.py 确保 reducer.py 有执行权限 chmod +x /user/s1353460/reducer.pyecho "this is a test and this should count the number of words" | /user/s1353460/mapper.py | sort -k1,1 | /user/s1353460/reducer.py 这次应该可以正常工作。
要在hadoop群集上运行python mapreduce作业,请执行以下操作:

hduser@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-*streaming*.jar \
-file /user/s1353460/mapper.py    -mapper /user/s1353460/mapper.py \
-file /user/s1353460/reducer.py   -reducer /user/s1353460/reducer.py \
-input <hdfs-input-path> -output <hdfs-output-path>

假设: Hadoop 安装在 /usr/local/hadoop . 适当地改变路径。

相关问题