<style type="text/css"><!--@page{margin:2cm}p{margin-bottom:0.21cm}--></style> Hadoop 有三种分布模式, Standalone-distributemode, Pseudo-distribute mode, Full-distribute.
前期准备工作:
背景:
Fedora 15
两台计算机。 johnny(10.63.0.230), cloud(10.63.0.17)。 johnny作为 Namenode和 JobTracker。 cloud作为 DataNode和 TaskTracker。
1、安装 jdk,配置环境变量
2、安装 Hadoop,配置环境变量
3、 Hadoop要求集群计算机上用户名必须一致,所以现在 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用户。(此公钥内容将写入 cloud上 johnny用户的 ~/.ssh/authorized_keys中)
在此期间会要求输入 johnny@cloud'spassword, johnny用户在 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命令(具体使用见下文)。这样等配置完主机的信息后,可以将整个 hadoop、 jdk目录传送给节点计算机(见下文)。
单机分布模式
无需配置,安装好 Hadoop后默认为单机分布模式
伪分布模式
需要先配置 SSH(将自己的公钥写入到自己的 authorized_keys中)
修改 hadoop安装目录下 conf文件夹中的三个 xml文件
core-site.xml、 hdfs-site.xml和 mapred-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文件夹中的 master, slaver两个文件
masters文件(里面其实表示的是 SecondaryNameNode,有点小迷惑性啊)
localhost
slavers文件
localhost
(请参考 Hadoop in Action 第二章)
全分布模式
与伪分布模式很类似仅做小量的改变
修改 hadoop安装目录下 conf文件夹中的三个 xml文件
core-site.xml、 hdfs-site.xml和 mapred-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文件夹中的 master, slaver两个文件
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 HadoopTutorial: http://developer.yahoo.com/hadoop/tutorial/index.html
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com