Hadoop-0.21.0分布式集群配置_第1页
Hadoop-0.21.0分布式集群配置_第2页
Hadoop-0.21.0分布式集群配置_第3页
Hadoop-0.21.0分布式集群配置_第4页
Hadoop-0.21.0分布式集群配置_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Hadoop-分布式集群配置编制日期:2021-9-8文件信息文件标题Hadoop-分布式集群配置起草工程组发布日期2010年08月26日说明参考,但根据版本的变化做了相应的调整本文主要是以安装和使用.0为例,指出在部署Hadoop的时候容易遇到的问题以及如何解决。1. 硬件环境共有3台机器,均使用的linux系统,Java使用的是jdk。IP配置如下:hadoop1:192.168.0.97(NameNode)hadoop2:192.168.0.226(DataNode)hadoop3:192.168.0.100 (DataNode)这里有一点需要强调的就是,务必要确保每台机器的主机名和IP

2、地址之间能正确解析。一个很简单的测试方法就是ping一下主机名,比方在hadoop1上ping hadoop2,如果能ping通就OK!假设不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,那么需要在hosts文件中加上集群中所有机器的IP地址及其对应的主机名;如果该台机器作Datanode用,那么只需要在hosts文件中加上本机IP地址和Namenode机器的IP地址。以本文为例,hadoop1(NameNode)中的/etc/hosts文件看起来应该是这样的:127.0.0.1       

3、;  hadoop1        localhost      hadoop1        hadoop1     hadoop2        hadoop2     had

4、oop3        hadoop3hadoop2(DataNode)中的/etc/hosts文件看起来就应该是这样的:127.0.0.1         hadoop2        localhost      hadoop1     

5、;   hadoop1     hadoop2        hadoop2hadoop3(DataNode)中的/etc/hosts文件看起来就应该是这样的:127.0.0.1         hadoop3        localhost  &

6、#160;   hadoop1        hadoop1     hadoop3        hadoop3对于Hadoop来说,在HDFS看来,节点分为Namenode和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和Tasktracker,其中Jobtracker

7、只有一个,Tasktracker可以是很多。我是将namenode和jobtracker部署在hadoop1上,hadoop2, hadoop3作为datanode和tasktracker。当然你也可以将namenode,datanode,jobtracker,tasktracker全部部署在一台机器上。2. 目录结构由于Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户。我的三台机器上是这样的:都有一个hadoop的帐户,主目录是/home/hadoop。解压:hadoop hadoop1:$tar -zxvf hadoop-0.21.0Hadoop部

8、署目录结构如下:/home/hadoop/hadoop0.21.0,所有的hadoop版本放在这个目录中。将hadoop0.21.0压缩包解压至hadoop0.21.0中,为了方便以后升级,建议建立一个链接指向要使用的hadoop版本,不妨设为hadoop,hadoop hadoop1:$ln -s hadoop-0.21.0 hadoop这样一来,所有的配置文件都在/home/hadoop/hadoop/conf/目录中,所有执行程序都在/home/hadoop/hadoop/bin目录中。但是由于上述目录中hadoop的配置文件和hadoop的安装目录是放在一起的,这样一旦日后升级hado

9、op版本的时候所有的配置文件都会被覆盖,因此建议将配置文件与安装目录别离,一种比拟好的方法就是建立一个存放配置文件的目录,/home/hadoop/hadoop/hadoop-config,然后将/home/hadoop/hadoop/conf/目录中的masters,slaves,hadoop-hadoop-config目录中,并指定环境变量$HADOOP_CONF_DIR指向该目录。环境变量在/home/hadoop/.bashrc和/etc/profile中设定。如:HADOOP_CONF_DIR=/home/hadoop/hadoop/hadoop-configexport HADOO

10、P_CONF_DIR综上所述,为了方便以后升级版本,我们需要做到配置文件与安装目录别离,并通过设定一个指向我们要使用的版本的hadoop的链接,这样可以减少我们对配置文件的维护。3. SSH设置在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。首先要保证每台机器上都装了SSH效劳器,且都正常启动。实际中我们用的都是OpenSSH,这是SSH协议的一个免费开源实现。以本文中的3台机器为例,现在hadoop1是主节点,它需要主动

11、发起SSH连接到hadoop2,对于SSH效劳来说,hadoop1就是SSH客户端,而hadoop2, hadoop3那么是SSH效劳端,因此在hadoop2,hadoop3上需要确定sshd效劳已经启动。简单的说,在hadoop1上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到hadoop2上,这样,比方当hadoop1向hadoop2发起ssh连接的时候,hadoop2上就会生成一个随机数并用hadoop1的公钥对这个随机数进行加密,并发送给hadoop1,hadoop1收到这个加密的数以后用私钥进行解密,并将解密后的数发送回hadoop2,hadoop2确认解密的数无误后就允许h

12、adoop1进行连接了。这就完成了一次公钥认证过程。对于本文中的3台机器,首先在hadoop1上生成密钥对:hapoophadoop1:$ssh-keygen -t dsa P f /.ssh/id_dsa这个命令将为hadoop1上的用户hadoop生成其密钥对。生成的密钥对id_rsa,id_rsa.pub,在/home/hadoop/.ssh目录下。hapoophadoop1:.ssh$cat /.ssh/id_dsa.pub >> /.ssh/authorized_keyshadoop/.ssh/authorized_keys文件中。对于hadoop2:hapoop had

13、oop2:$mkdir .ssh对于hadoop3:hapoop hadoop3:$mkdir .sshhapoop hapoop1:.ssh$scp authorized_keys hapoop2:/home/hapoop/.ssh/hapoop hapoop1:.ssh$scp authorized_keys hapoop3:/home/hapoop/.ssh/ 此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即hadoop2,hadoop3机器上hadoop帐户的密码,当然,你也可以用其他方法将authorized_keys文件拷贝到其他机器上。hadoophad

14、oop2:.ssh$chmod 640 authorized_keyshadoophadoop3:.ssh$chmod 640 authorized_keys 这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否那么SSH是不会工作的。hadoop hadoop2:.ssh $ls -ladrwx- 2 hadoop hadoop.drwx- 3 hadoop hadoop.-rw-r-r- 1 hadoop hadoop authorized_keys 注意每个机器上的.ssh目录的ls -la都应该和上面是一样的接着,在3台机器上都需要对

15、sshd效劳进行配置,修改文件/etc/ssh/sshd_config。#去除密码认证PasswordAuthentication no (?如果这样,putty就不能登陆Linux了,去掉)AuthorizedKeysFile .ssh/authorized_keys至此各个机器上的SSH配置已经完成,可以测试一下了,比方hadoop1向hadoop2发起ssh连接。hadoophadoop1:$ssh hadoop2如果ssh配置好了,就会出现以下提示信息The authenticity of host hadoop2 can't be established.Key finger

16、print is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.Are you sure you want to continue connecting (yes/no)?OpenSSH告诉你它不知道这台主机,但是你不用担忧这个问题,因为你是第一次登录这台主机。键入“yes。这将把这台主机的“识别标记加到“/.ssh/know_hosts文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。然后你会发现不需要输入密码就可以建立ssh连接了,恭喜你,配置成功了,不过,别忘了测试本机ssh hadoop1。(应该是只设置hadoop

17、1对hadoop2发送ssh连接和hadoop1对hadoop3发送ssh连接,下面的需要配置吗?)同样,hadoop1对hadoop3发起ssh连接,再在hadoop3发起对hadoop1的连接。这里不在赘述。4. Hadoop环境变量在/home/hadoop/hadoop/hadoop-config目录下的hadoop-env.sh中设置Hadoop需要的环境变量,其中JAVA_HOME是必须设定的变量。HADOOP_HOME变量可以设定也可以不设定,如果不设定,HADOOP_HOME默认的是bin目录的父目录,即本文中的/home/hadoop/hadoop。我的是这样设置的:expo

18、rt HADOOP_HOME=/home/hadoop/hadoopexport _205. Hadoop配置文件修改slaves文件如前所述,在hadoop1(NameNode)的hadoop-config/目录下,翻开slaves文件,该文件用来指定所有的DataNode,一行指定一个主机名。即本文中的hadoop2、hadoop3,因此slaves文件看起来应该是这样的:hadoop2IPhadoop3IP修改masters文件翻开masters文件,该文件用来指定NameNode,内容如下:hadoop1IP在hadoop的安装目录分别找到三个文件,然后copy到hadoop-conf

19、ig/目录下,这三个文件包含Hadoop的所有配置项,然后把这个分别改名为core-site.xml,hdfs-site.xml,mapred-site.xml,我们根据需要修改如下:注意:下面的配置文件中不要有中文或中文的符号,否那么报错c:<property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop/tmp</value></property><property> <name>fs.defaultFS</name>

20、 <value>hdfs:/master IP:9000</value></property>这里不需要修改此文件。<property> <name>mapreduce.jobtracker.address</name> <value>master IP:9001</value> <description>NameNode</description></property>6. 部署Hadoop前面讲的这么多Hadoop的环境变量和配置文件都是在hadoop1这台机器上的,现在需要将hadoop部署到其他的机器上,保证目录结构一致。hadoophadoop1:$scp -r /home/hadoop/hadoop hadoop2:/home/hadoop/hadoophadoop1:$scp -r /home/hadoop/hadoop hadoop3:/home/hadoop/ 至此,可以说,Hadoop已经在各个机器上部署完毕了,下面就让我们开始启动Hadoop吧。7. 启动Hadoop启动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论