Hadoop环境搭建——伪分布式环境搭建

本文大部分借鉴了http://vampire1126.iteye.com/blog/891693中的安装过程,在此向原作者表示感谢,同时本文的原创性是更改了Hadoop文件配置部分,以及对按装过程中遇到的问题做了说明

工具:

jdk-6u38-linux-i586.bin

hadoop-1.1.2.tar.gz

ubuntu-12.04.1-desktop-i386.iso

安装

1、安装ubuntu10.10

 参见博文:http://blog.csdn.net/chw1989/article/details/8708447

2、安装jdk1.6.0_38

在usr下面新建一个文件夹Java,然后将jdk复制过来

                       sudo mkdir /usr/Java

                       sudo cp jdk的路径 /usr/Java                 

进入到Java目录下,改变文件权限为可执行

                       cd /usr/Java 

                       sudo chmod u+x jdk-6u38-linux-i586.bin

 执行安装

                       sudo ./ jdk-6u38-linux-i586.bin

3、安装hadoop0.21.0

hadoop-1.1.2.tar.gz复制到usr下面的local文件夹内

                        sudo cp hadoop的路径 /usr/local

进入到local目录下,解压hadoop-1.1.2.tar.gz

                        cd /usr/local

                        sudo tar -xzf hadoop-1.1.2.tar.gz

为了方便管理,将解压后的文件夹名改为hadoop

                        sudo mv hadoop-1.1.2 hadoop

 4、创建一个名为hadoop的用户和用户组

创建一个名为hadoop的用户组

                        sudo addgroup hadoop

创建一个名为hadoop的用户,归到hadoop用户组下

                        sudo adduser --ingroup hadoop hadoop

 用gedit打开etc下的sudoers文件

                        sudo gedit /etc/sudoers

在 root   ALL=(ALL)  ALL 下面添加如下一行,然后保存关闭gedit

                         hadoop  ALL=(ALL)  ALL 

5、配置相关文件

用gedit打开etc下的profile文件

                        sudo gedit /etc/profile

在文件最后加入如下几行

      export CLASSPATH=.:/usr/Java/jdk1.6.0_38/lib:/usr/Java/jdk1.6.0_38/jre/lib:$CLASSPATH

      export PATH=.:/usr/Java/jdk1.6.0_38/bin:/usr/Java/jdk1.6.0_38/jre/bin:/usr/local/hadoop/bin:$PATH

 保存后关闭gedit,并重启机器

                        sudo reboot

重启后用hadoop用户登录,验证配置是否成功

                        java -version  


PS:我刚开始装jdk时,一切都妥妥的装好以后,发现这个命令一直无法运行成功,经过多方查证,发现时jdk版本有问题,前面装的jdk是从Unix社区下载的jdk-6u3-dlj-linux-i586.bin,安装好后,会有许多没有后缀名为.pack的文件,这些文件需要解压成后缀名为.jar的文件,才可以确保jdk的正常使用,可以用/usr/java/jdk1.6.0_38/bin下的Unpack200来做,命令类似与:

                        sudo ./unpack200 tools.pack tools.jar 

如果选用jdk-6u38-linux-i586.bin这个jdk则不会出现上述问题


6、创建ssh-key

装载ssh服务

                       sudo apt-get install ssh


PS: 上述命令可能会有如下报错,此时需要执行:sudo apt-get update做一下更新

                      E: 无法解析或打开软件包的列表或是状态文件。


创建ssh-key

                         ssh-keygen -t rsa --P

将此ssh-key添加到信任列表中,并启用此ssh-key

                         cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

                         sudo /etc/init.d/ssh reload

7、配置hadoop

配置chadoop-env.sh

                          cd /usr/local/hadoop

                          sudo gedit conf/hadoop-env.sh

打开后在文档的上部某行有“#export JAVA_HOME=...”字样的地方,去掉“#”,然后在等号后面填写你的jdk路径,完全按此文档来的话应改为 "export JAVA_HOME=/usr/Java/jdk1.6.0_38"


配置core-site.xml

                          sudo gedit conf/core-site.xml

                          (打开后标签<configuration> </configuration>中是空的,所以在空的地方加入如下配置)

<property>
       <name>fs.default.name</name>
       <value>hdfs://localhost:9000</value> 
</property>

配置conf目录下的hdfs-site.xml

                           sudo gedit conf/hdfs-site.xml

                          (打开后标签<configuration> </configuration>中也是空的,添加如下配置)

<property>
       <name>dfs.replication</name>
       <value>1</value> 
</property>

配置conf目录下的mapred-site.xml

                           sudo gedit conf/mapred-site.xml

                          (打开后标签<configuration> </configuration>中也是空的,添加如下配置)

<property> 
      <name>mapred.job.tracker</name> 
      <value>localhost:9001</value>
 </property> 


8、运行测试阶段:

格式化namenode 

                          cd /usr/local/hadoop

                           hadoop namenode -format

 

启动hadoop

                           sudo chown -hR hadoop /usr/local/hadoop

                           bin/start-all.sh

验证hadoop是否正常启动

                           jps

此语句执行后会列出已启动的东西NameNode,JobTracker,SecondaryNameNode...如果NameNode没有成功启动的话就要先执行"bin/stop-all.sh"停掉所有东西,然后重新格式化namenode,再启动


PS:如果调用jp命令后s发现NameNode,JobTracker,SecondaryNameNode等进程都在,但是过几秒中,几个进程全部退出不见了,可以去

 /usr/local/hadoop/logs下查看日志文件,然后分析退出原因,我在使用问题jdk的过程中就有上述出问题——Namenode等进程意外退出,后来查看hadoop-hadoop-namenode-chw-N-A.log发现退出异常的报错信息为:

ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.NoClassDefFoundError: javax/net/SocketFactory

就是因为/usr/java/jdk1.6.0_38/jre/lib中的jsse.jar文件没有被解压出来的原因,用jdk-6u38-linux-i586.bin则不会出现这个问题。


9、运行wordcount

准备需要进行wordcount的文件

                            sudo gedit /tmp/test.txt

                            随便输入一些英语单词,然后保存退出

将准备的测试文件上传到dfs文件系统中的firstTest目录下

                            hadoop dfs -copyFromLocal /tmp/test.txt firstTest

执行wordcount

                            hadoop jar hadoop-mapred-examples-1.1.2.jar wordcount firstTest result


PS:此处的jar文件会因安装的hadoop版本不同而不同,安装好Hadoop以后,hadoop文件夹下会有类似名字的example文件


查看结果

                            hadoop dfs -cat result/part-r-00000


猜你喜欢

转载自blog.csdn.net/chw1989/article/details/8708509