因为实验需要,对hadoop-0.21源代码进行了修改。准备将编译好的jar包放入一个hadoop环境中进行实际运行测试。所以,就先安装hadoop0.21伪分布式模式。(PS:hadoop1.x的伪分布式的安装都相同)
实验环境
软件 | 版本 |
---|---|
操作系统 | ubuntu-14.04.4-desktop-i386 |
hadoop发布版 | hadoop-0.21 |
jdk | jdk1.7.0_80 |
ssh服务端 | openssh-server |
本人使用的ubuntu操作系统中,默认已经安装好了ssh客户端,所以只需要安装服务端。服务端的安装非常简单:sudo apt-get install openssh-server
即可。
hadoop的配置过程
进入hadoop的解压目录,编辑conf/hadoop-env.sh文件。
只需将文件中export JAVA_HOME那一行改成你系统中的真实JAVA_HOME值。然后再修改conf目录下mapred-site.xml、cose-site.xml和hdfs-site.xml三个文件。分别在
<configuration></configuration>
与之间添加以下内容:
mapred-site.xml文件:<property> <name>mapred.job.tracker</name> <value>hdfs://localhost:9001</value> </property>
core-site.xml文件:
<property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property>
hdfs-site.xml文件:
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.data.dir</name> <value>***/data</value><!-->hadoop的data存放的地方,选择你觉得合适的地方<--> </property> <property> <name>dfs.name.dir</name> <value>***/name</value><!-->hadoop的name(主节点信息)存放的地方,选择你觉得合适的地方<--> </property>
- 配置ssh,生成ssh密匙,并设置成免密码登陆
首先在终端下执行命令:ssh-keygen -t rsa
将会在“~/.ssh/”目录下生成公钥文件id_rsa.pub和私钥文件id_rsa。
将公钥文件中的内容复制到相同目录下的authorized_keys文件中(这一步即是设置免密码登陆)。
cd ~/.ssh/
cp id_rsa.pub authorized_keys
- 格式化Hadoop
进入hadoop安装目录中,执行格式化命令:bin/hadoop namenode -format
- 启动Hadoop
bin/start-all.sh
- 查看是否成功启动Hadoop
通过jps
命令可以查看java相关的进程,如Hadoop正常启动可以看到如下进程:
15388 NameNode
15720 SecondaryNameNode
15982 TaskTracker
17006 Jps
15547 DataNode
15822 JobTracker
通过以下URL可查看MapReduce信息:
http://localhost:50030/
通过以下URL可查看HDFS信息:
http://localhost:50070/ - 关闭Hadoop
bin/stop-all.sh
运行Hadoop的示例程序WordCount
- 在hdfs上创建wordcount的输入目录
bin/hadoop dfs -mkdir wordcount/input
- 上传一个文本文件到输入目录
bin/hadoop dfs -put wordcount.txt wordcount/input
wordcount.txt自己创建,并随意输入一些单词。 - 执行wordcount
bin/hadoop jar hadoop-mapred-examples-0.21.0.jar wordcount wordcount/input/* wordcount/output
- 执行成功后,查看结果
bin/hadoop dfs -cat wordcount/output/*
也可以在http://localhost:50070/网页上点击查看。
结尾
至此,hadoop-0.21伪分布式环境搭建成功。并成功运行了一个示例程序,通过学习mapreduce编程,你还可以编写自己的mapreduce程序在hadoop上运行。