如何在Hadoop中运行wordCount示例?
我尝试在hadoop中运行以下示例: 但是,我不理解正在使用的命令,特别是如何创建输入文件,将其上载到HDFS,然后运行单词计数示例 我正在尝试以下命令:如何在Hadoop中运行wordCount示例?,hadoop,Hadoop,我尝试在hadoop中运行以下示例: 但是,我不理解正在使用的命令,特别是如何创建输入文件,将其上载到HDFS,然后运行单词计数示例 我正在尝试以下命令: bin/hadoop fs -put inputFolder/inputFile inputHDFS/ 不管它怎么说 put: File inputFolder/inputFile does not exist 我在hadoop文件夹中有这个文件夹,它是“bin”之前的文件夹,那么为什么会发生这种情况呢 谢谢:)希望这不会过分: 假设您已
bin/hadoop fs -put inputFolder/inputFile inputHDFS/
不管它怎么说
put: File inputFolder/inputFile does not exist
我在hadoop文件夹中有这个文件夹,它是“bin”之前的文件夹,那么为什么会发生这种情况呢
谢谢:)希望这不会过分:
假设您已经(在本地、分布式或伪分布式中),您必须确保hadoop的bin和其他misc参数在您的路径中。在linux/mac中,只需将以下内容添加到一个shell文件(~/.bashrc
,~/.zshrc
,~/.bash_profile
,等等),这取决于您的设置和首选项):
然后运行exec$SHELL
或重新加载终端。要验证hadoop是否正在运行,请键入hadoop版本
,查看是否未引发任何错误。假设您按照有关如何设置单节点群集的说明,并使用start all.sh
命令启动hadoop服务,那么您应该可以:
- 在伪dist模式下,文件系统假装为HDFS。因此,只需像使用任何其他linux命令一样引用任何路径,如
或cat
。这对于测试很有用,您不必复制任何内容grep
- 在实际运行HDFS时,我使用
命令(我发现它可以正常工作):copyFromLocal
/user/hadoopuser/
部分-隐式假定它在HDFS用户目录中执行所有操作。另外,如果您正在使用客户端计算机在集群上运行命令(您也可以这样做!),请知道您需要在hadoop fs
之后立即使用-conf
标志传递集群的配置,例如:
# assumes your username is the same as the one on HDFS, as explained earlier
$ hadoop fs -conf ~/conf/hadoop-cluster.xml -copyFromLocal ~/data/testfile.txt data/
对于输入文件,可以使用包含文本的任何文件。我使用了一些随机文件从数据库
最后,要运行wordcount示例(在hadoop发行版中作为jar提供),只需运行以下命令:
$hadoop jar/path/to/hadoop-*-examples.jar wordcount/user/hadoopuser/data//user/hadoopuser/output/wc
这将读取data/
文件夹中的所有内容(可以有一个或多个文件),并将所有内容写入output/wc
文件夹-全部在HDFS上。如果您在pseudo dist中运行它,则无需复制任何内容—只需将其指向正确的输入和输出目录即可。确保wc
目录不存在,否则您的作业将崩溃(无法写入现有目录)。以获得更好的字数细分
同样,所有这些都假设您成功地完成了设置阶段(这不是一个小壮举)
希望这不是太混乱-祝你好运 很抱歉,目录
inputFolder
中没有名为inputFolder
的文件,或者没有名为inputFolder
的目录。做ls inputFolder
来向自己证明这一点。你是对的,这就是问题所在。我必须指定所有路径,以便从/home/user/etc解决它。。。那么inputHDFS是正确的。。谢谢
$ hadoop fs -copyFromLocal ~/data/testfile.txt /user/hadoopuser/data/
# assumes your username is the same as the one on HDFS, as explained earlier
$ hadoop fs -conf ~/conf/hadoop-cluster.xml -copyFromLocal ~/data/testfile.txt data/