Hadoop 详细配置步骤

转自 : http://blog.csdn.net/johnnywsd/article/details/6939520

Hadoop 有三种分布模式,Standalone-distributemode, Pseudo-distribute mode, Full-distribute.



前期准备工作:

背景:

Fedora 15

两台计算机。johnny(10.63.0.230)cloud(10.63.0.17)johnny作为NamenodeJobTrackercloud作为DataNodeTaskTracker



1、安装jdk,配置环境变量



2、安装Hadoop,配置环境变量



3Hadoop要求集群计算机上用户名必须一致,所以现在cloud机上建立一个名为johnny的用户。

For hadoop, the accounts should have the same username on all ofthe nodes

但是节点计算机(cloud)无需使用johnny登陆。具体请参考Hadoopin Action第二章。



4、配置SSH(伪分布、全分布需要,单机分布不需要)

(更多关于SSH请看我的博客:http://blog.csdn.net/johnnywsd/article/details/6936069

先对johnny机做如下操作:

修改/etc/hosts 文件

这个文件告诉本主机哪些域名对应那些ip,那些主机名对应哪些

一般情况下hosts文件的每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
第一部份:网络IP地址;第二部份:主机名或域名;第三部份:主机名别名;

(更多关于/etc/hosts文件请看我的博客http://blog.csdn.net/johnnywsd/article/details/6939217

向此文件中加入:

10.63.0.230 johnny johnny

10.63.0.17 cloud cloud

试一试能否ping通。

$ ping cloud

开启sshd

#service sshd start

开启ssh-agent

$ ssh-agent

将私钥加入到agent

$ ssh-add ~/.ssh/id_sra

(可能需要关闭防火墙 #serviceiptables stop,或者开启22端口)

生成公钥:

$ ssh-keygen -t -rsa

一路回车敲到底,不要输入密码,否则无法实现免密码登陆。

生成的公钥将储存在~/.ssh/下。有两个文件id_rsa.pub(公钥)id_rsa(私钥)

将公钥发送给cloud机以便能与其相连:

$ ssh-copy-id johnny@cloud

代码含义:将自己的公钥拷贝给cloud(10.63.0.17)上的johnny用户。(此公钥内容将写入cloudjohnny用户的~/.ssh/authorized_keys中)

在此期间会要求输入johnny@cloud'spasswordjohnny用户在cloud这台机器上的密码。

(这是一种比较快速的拷贝公钥的方法,另一种方法请看我的博客http://blog.csdn.net/johnnywsd/article/details/6936069)



试一试能否与其建立链接sshjohnny@cloud

断开链接请使用命令:

$ logout



(伪分布是一台计算机既当NameNode又当DataNode,既当JobTracker又当TaskTracker,所以伪分布要求自己能够ssh连接自己,所以需要将公钥拷贝给自己,$ssh-copy-idjohnny@localhost,可以试验一下是否可以登陆自己sshjohnny@localhost,记得logout)



现在可以给 johnny@cloud传送文件了。使用scp命令(具体使用见下文)。这样等配置完主机的信息后,可以将整个hadoopjdk目录传送给节点计算机(见下文)。



单机分布模式

无需配置,安装好Hadoop后默认为单机分布模式



伪分布模式

需要先配置SSH(将自己的公钥写入到自己的authorized_keys中)

修改hadoop安装目录下conf文件夹中的三个xml文件

core-site.xmlhdfs-site.xmlmapred-site.xml



core-site.xml文件

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>



hdfs-site.xml文件

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>



mapred-site.xml文件

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration>



修改hadoop安装目录下conf文件夹中的masterslaver两个文件

masters文件(里面其实表示的是SecondaryNameNode,有点小迷惑性啊)

localhost



slavers文件

localhost

(请参考Hadoop in Action 第二章)


全分布模式

与伪分布模式很类似仅做小量的改变



修改hadoop安装目录下conf文件夹中的三个xml文件

core-site.xmlhdfs-site.xmlmapred-site.xml

core-site.xml文件

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://johnny:9000</value>

</property>

</configuration>



hdfs-site.xml文件

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>



mapred-site.xml文件

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>johnny:9001</value>

</property>

</configuration>

修改hadoop安装目录下conf文件夹中的masterslaver两个文件

masters文件

johnny



slavers文件

cloud



(这个是最简单的配置,其实里面还有很多参数这里没有提到,详细信息请参考官方文档。)



注:如何快捷的在三种分布方式切换(参考Hadoopin Action第二章Swithcing betwwenmodes)

Create a separate configuration folder for each of the modes andplace, the appropriate vision of the xml files in the correspondingfolder. Using symbolic links to switch between Hadoop modes.

conf文件夹复制三份,修改文件名为conf-standalone,conf-pseudo,conf-full,在其中分别配置其内容,最后对要使用的模式的文件夹建立链接(快捷方式),将其名称更改为conf.

接下来需要把并配置好的Hadoop以及Java传送给所有的节点计算机。

$ scp -r ~/Software/hadoop-0.20.203.0/ johnny@cloud:~/Software/hadoop-0.20.203.0/

$ scp -r ~/Software/jdk1.6.0_24/ johnny@cloud:~/Software/jdk1.6.0_24/ 


在配置好这些文件后需要格式化NameNode

$ hadoop namenode -format



之后便可启动hadoop:

$ start-all.sh



测试一下(wordcount):

建立~/temp/test-in目录,在其中建立a.txt文件,想其中写入一些英文句子

将 ~/temp/目录及其中的内容全部拷贝到DataNode中的/目录下

$ hadoop fs -put ~/temp/ johnny@cloud:/

察看一下拷贝的结果

$ hadoop fs -lsr /

下面运行hadoop自带的hadoop-examples-0.20.203.0.jar中的wordcount

$ hadoop jar~/Software/hadoop-0.20.203.0/hadoop-examples-0.20.203.0.jar wordcount/temp/test-in /temp/test-out

可以在web页中察看节点状态

http://localhost:50030 Hadoop Administration

http://localhost:50070 Hadoop NameNode



参考资料:

Hadoop in Action 第二章

hadoop官方文档:http://hadoop.apache.org/common/docs/r0.20.203.0

Yahoo HadoopTutorialhttp://developer.yahoo.com/hadoop/tutorial/index.html


发布了39 篇原创文章 · 获赞 1 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章