我有一个 64 位 Ubuntu 14.04,我安装了单节点集群 hadoop 2.6,所有节点都在运行,但是当我尝试将示例文本文件放入 hdfs 时,它不起作用,我已经开始学习 hadoop,所以请解释一下,这将会很有帮助。我需要有关将测试文件放入 hdfs 并对文本文件执行简单计算的命令的帮助。网络上的教程令人困惑,因为某些命令因不同的 hadoop 和 ubuntu 版本而异。
答案1
要将文件放入 HDFS,可以使用put
以下命令:
hadoop fs -put path-in-your-local-filesystem path-in-HDFS
请注意,如果您想将文件放在 HDFS 中的新目录中,put
则不会创建目录本身。您需要mkdir
先按如下所示操作:(-p
根据需要创建父目录)
hadoop fs -mkdir -p /user/input
hadoop fs -put /home/hduser/Desktop/input-file /user/input
(假设输入文件保存在 hduser 的桌面上)
要使用 Hadoop 对文件执行计算,您需要编写map
和reduce
函数。我建议您从 Word Count 程序开始学习 MapReduce 编程。您可以参考 Hadoop:权威指南。
接下来,您需要使用以下命令编译 Java 源文件(例如 WordCount.java):
sudo javac -classpath /usr/local/hadoop/share/hadoop/common/hadoop-common-2.6.0.jar:/usr/local/hadoop/share/hadoop/common/lib/hadoop-annotations-2.6.0.jar:/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar WordCount.java
接下来,使用以下方法创建一个包含所有类的 jar 文件
jar -cvf wc WordCount*.class
其中 wc 是新创建的 jar 的名称。
接下来,使用
hadoop jar jar-name main-class-name input-path-in-HDFS output-path-in-HDFS
对于此示例,您可以使用
hadoop jar wc WordCount /user/input/input-file /user/output
它将在 HDFS 中自动创建输出目录。