读书人

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

发布时间: 2013-03-27 11:22:42 作者: rapoo

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.tar.gz

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

创建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>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


1楼cvBertie昨天 15:28
太好了,太有用了!lzV5!

读书人网 >云计算

热点推荐