设定hadoop-env.sh(Java 安装路径)
进入./etc/hadoop目录,打开hadoop-env.sh,添加以下信息:
Hadoop单机配置(非分布式)
Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单Java进程,方便进行调试。
现在我们可以执行例子来感受下Hadoop的运行。Hadoop 附带了丰富的例子(运行 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 可以看到所有例子),包括 wordcount、terasort、join、grep 等。
在此我们选择运行 wordcount例子,我们将input文件夹中的所有文件作为输入,筛选当中单词并统计出现的次数,最后输出结果到output文件夹中。
hadoop@hadoop1:/usr/local/hadoop$ cd /usr/local/hadoop hadoop@hadoop1:/usr/local/hadoop$ mkdir ./input hadoop@hadoop1:/usr/local/hadoop$ cp ./etc/hadoop/*.xml ./input # 将配置文件作为输入文件 hadoop@hadoop1:/usr/local/hadoop$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount input output hadoop@hadoop1:/usr/local/hadoop$ cat ./output/* # 查看运行结果解释命令:
bin/hadoop jar(使用hadoop运行jar包)hadoop-mapreduce-examples..jar(代表版本号)wordcount(要使用的类,后边的是参数)input output‘dfs[a-z.]+’整个就是运行hadoop示例程序中的wordcount,对应的hdfs上的输入目录为input、输出目录为output。
==注意:Hadoop默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除。==
hadoop@hadoop1:/usr/local/hadoop$ rm -r ./outputHadoop伪分布式配置
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的Java进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是HDFS 中的文件。
Hadoop 的配置文件位于/usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件core-site.xml 和 hdfs-site.xml。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
修改配置文件core-site.xml (通过 gedit 编辑会比较方便:gedit ./etc/hadoop/core-site.xml)
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>修改配置文件 hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>Hadoop配置文件说明