希望这不是矫枉过正:
假设您已经安装了 hadoop(本地、分布式或伪分布式),您必须确保 hadoop 的 bin 和其他 misc 参数在您的路径中。在 linux/mac 中,只需将以下内容添加到您的一个 shell 文件(~/.bashrc
、~/.zshrc
、~/.bash_profile
等 - 取决于您的设置和偏好)中,这很简单:
export HADOOP_INSTALL_DIR=/path/to/hadoop # /opt/hadoop or /usr/local/hadoop, for example
export JAVA_HOME=/path/to/jvm
export PATH=$PATH:$HADOOP_INSTALL_DIR/bin
export PATH=$PATH:$HADOOP_INSTALL_DIR/sbin
然后运行exec $SHELL
或重新加载您的终端。要验证 hadoop 是否正在运行,请键入hadoop version
并查看没有引发错误。假设您按照有关如何设置单节点集群的说明并使用start-all.sh
命令启动了 hadoop 服务,那么您应该很高兴:
在伪 dist 模式下,您的文件系统伪装成 HDFS。因此,只需像使用任何其他 linux 命令一样引用任何路径,例如cat
or grep
。这对于测试很有用,您不必复制任何内容。
在实际运行 HDFS 的情况下,我使用copyFromLocal
命令(我发现它可以正常工作):
$ hadoop fs -copyFromLocal ~/data/testfile.txt /user/hadoopuser/data/
在这里,我假设您在作为集群一部分的机器上执行复制。请注意,如果您的 hadoopuser 与您的 unix 用户名相同,则可以删除该/user/hadoopuser/
部分 - 隐式假定它在您的 HDFS 用户目录中执行所有操作。此外,如果您使用客户端计算机在集群上运行命令(您也可以这样做!),请知道您需要在-conf
之后使用 flag传递集群的配置hadoop fs
,例如:
# 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/
对于输入文件,您可以使用任何包含文本的文件。我使用了来自Gutenberg 网站的一些随机文件。
最后,要运行 wordcount 示例(作为 hadoop 发行版中的 jar 提供),只需运行以下命令:
$ hadoop jar /path/to/hadoop-*-examples.jar wordcount /user/hadoopuser/data/ /user/hadoopuser/output/wc
这将读取data/
文件夹中的所有内容(可以有一个或多个文件)并将所有内容写入output/wc
文件夹 - 全部在 HDFS 上。如果您在伪 dist 中运行它,则无需复制任何内容 - 只需将其指向正确的输入和输出目录。确保该wc
目录不存在,否则您的工作将崩溃(无法覆盖现有目录)。请参阅此以获得更好的字数细分。
同样,所有这一切都假设您已成功通过设置阶段(不小壮举)。
希望这不会太令人困惑 - 祝你好运!