1、细细品味 HadoopHadoop集群(第 5期)精华集锦csAxp 虾皮工作室 http:/ 年 4 月 30 日创建时间:2012/2/26修改时间:2012/3/17修改次数:1Hadoop集群(第 5期)Hadoop安装配置1、集群部署介绍1.1 Hadoop简介Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem )和 MapReduce(GoogleMapReduce的开源实现)为核心的 Hadoop为用户提供了系统底层细节透明的分布式基础架构。对于 Hadoop的集群来
2、讲,可以分成两大类角色:Master和 Salve。一个 HDFS集群是由一个 NameNode 和若干个 DataNode 组成的。其中 NameNode 作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的 DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的 JobTracker 和运行在每个集群从节点的TaskTracker共同 组成的。主节 点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个 Job被提交时,JobTracker
3、接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控 TaskTracker的执行。从上面的介绍可以看出,HDFS和 MapReduce共同组成了 Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在 MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在 HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了 Hadoop分布式集群的主要任务。1.2环境说明集群中包括 4个节点:1个 Master,3个 Salve,节点之间局
4、域网连接,可以相互 ping通,具体集群信息可以查看“Hadoop集群(第 2期)” 。节点 IP地址分布如下:机器名称 IP地址Master.Hadoop 192.168.1.2192.168.1.3192.168.1.4192.168.1.5Salve1.HadoopSalve2.HadoopSalve3.Hadoop四个节点上均是 CentOS6.0系 统,并且有一个相同的用户 hadoop。Master机器主要配置 NameNode和 JobTracker的角色,负责总管分布式数据和分解任务的执行;3个 Salve机器配置 DataNode 和 TaskTracker的角色,负责分布式
5、数据存储以及任务的执行。其实应该还应该有 1个 Master机器,用来作为备用,以防止 Master服务器宕机,还有一个备用马上启河北工业大学软件工程与理论实验室 编辑:虾皮 1创建时间:2012/2/26修改时间:2012/3/17修改次数:1用。后续经验积累一定阶段后补上一台备用 Master机器。1.3网络配置Hadoop集群要按照 1.2小节表格所示进行配置,我们在 “Hadoop集群(第 1期)”的CentOS6.0安装过程就按照提前 规划好的主机名进行安装和配置。如果实验室后来人在安装系统时,没有配置好,不要紧,没有必要重新安装,在安装完系统之后仍然可以根据后来的规划对机器的主机名
6、进行修改。下面的例子我们将以 Master机器为例,即主机名为“Master.Hadoop”,IP为“192.168.1.2”进行一些主机名配置的相关操作。其他的 Slave机器以此为依据进行修改。1)查看当前机器名称用下面命令进行显示机器名称,如果跟规划的不一致,要按照下面进行修改。hostname上图中,用“hostname”查“Master”机器的名字为“Master.Hadoop”,与我们预先规划的一致。2)修改当前机器名称假定我们发现我们的机器的主机名不是我们想要的,通过对“/etc/sysconfig/network”文件修改其中“HOSTNAME”后面的值,改成我们规划的名称。这
7、个“/etc/sysconfig/network”文件是定义 hostname和是否利用网络的不接触网络设备的对系统全体定义的文件。设定形式:设定值=值“/etc/sysconfig/network”的设定项目如下:NETWORKING是否利用网络GATEWAY默认网关IPGATEWAYDEV默认网关的接口名HOSTNAME主机名DOMAIN域名用下面命令进行修改当前机器的主机名(备注:修改系统文件一般用 root用户)vim /etc/sysconfig/network通过上面的命令我们从“/etc/sysconfig/network”中找到“HOSTNAME”进行修改,查河北工业大学软件工
8、程与理论实验室 编辑:虾皮 2创建时间:2012/2/26修改时间:2012/3/17修改次数:1看内容如下:3)修改当前机器 IP假定我们的机器连 IP在当时安装机器时都没有配置好,那此时我们需要对“ifcfg-eth0”文件进行配置,该文件位于“/etc/sysconfig/network-scripts ”文件夹下。在这个目录下面,存放的是网络接口(网卡)的制御脚本文件(控制文件),ifcfg- eth0是默认的第一个网络接口,如果机器中有多个网络接口,那么名字就将依此类推 ifcfg-eth1,ifcfg-eth2,ifcfg- eth3 ,。这里面的文件是相当重要的,涉及到网络能否正
9、常工作。设定形式:设定值=值设定项目项目如下:DEVICE接口名(设备,网卡)BOOTPROTO IP的配置方法(static:固定 IP, dhcpHCP, none:手动)HWADDR MAC地址ONBOOT系统启动的时候网络接口是否有效(yes/no)TYPE网络类型(通常是 Ethemet)NETMASK网络掩码IPADDR IP地址IPV6INIT IPV6是否有效(yes/no)GATEWAY默认网关 IP地址查看“/etc/sysconfig/network-scripts/ifcfg-eth0”内容,如果 IP不复核,就行修改。河北工业大学软件工程与理论实验室 编辑:虾皮 3创
10、建时间:2012/2/26修改时间:2012/3/17修改次数:1如果上图中 IP与规划不相符,用下面命令进行修改:vim /etc/sysconfig/network-scripts/ifcgf-eth0修改完之后可以用“ifconfig”进行查看。4)配置 hosts文件(必须)“/etc/hosts”这个文件是用来配置主机将用的 DNS服务器信息,是记载 LAN内接续的各主机的对应HostName和 IP用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的 IP地址。我们要测试两台机器之间知否连通,一般用“ping 机器的 IP”,如果想用“ping 机器的主机名
11、”发现找不见该名称的机器,解决的办法就是修改“/etc/hosts”这个文件,通过把LAN内的各主机的 IP地址和 HostName的一一对应写入 这个文件的时候,就可以解决问题。例如:机器为“Master.Hadoop:192.168.1.2”对机器为“Salve1.Hadoop:192.168.1.3”用命令“ping”记性连接测试。 测试结果如下:从上图中的值,直接对 IP地址进行测试,能够 ping 通,但是对主机名进行测试,发现没有 ping通,提示“unknown host未知主机”,这时查看“Master.Hadoop ”的“/etc/hosts”文件内容。河北工业大学软件工程与
12、理论实验室 编辑:虾皮 4创建时间:2012/2/26修改时间:2012/3/17修改次数:1发现里面没有“192.168.1.3 Slave1.Hadoop”内容,故而本机器是无法 对机器的主机名为“Slave1.Hadoop ”解析。在进行 Hadoop集群配置中,需要在“/etc/hosts”文件中添加集群中所有机器的 IP与主机名,这样 Master与所有的 Slave机器之间不仅可以通过 IP 进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的“/etc/hosts”文件末尾中都要添加如下内容:192.168.1.2192.168.1.3192.168.1.4192.168
13、.1.5Master.HadoopSlave1.HadoopSlave2.HadoopSlave3.Hadoop用以下命令进行添加:vim /etc/hosts添加结果如下:现在我们在进行对机器为“Slave1.Hadoop”的主机名进行 ping通测试,看是否能测试成功。从上图中我们已经能用主机名进行 ping 通了,说明我们刚才添加的内容,在局域网内能进行 DNS 解析了,那么 现在剩下的事儿就是在其余的 Slave机器上进行相同的配置。然后进行测试。(备注:当设置 SSH无密码验证后,可以“scp”进行复制,然后把原来的“hosts”文件执行覆盖即可。)河北工业大学软件工程与理论实验室
14、编辑:虾皮 5创建时间:2012/2/26修改时间:2012/3/17修改次数:11.4所需软件1)JDK软件下载地址:http:/ VSFTP上传在“Hadoop集群(第 3期)”讲了 VSFTP的安装及配置,如果没有安装 VSFTP可以按照该文档进行安装。如果安装好了,就可以通过 FlashFXP.exe软件把我们下载的 JDK6.0和 Hadoop1.0软件上传到“Master.Hadoop:192.168.1.2”服务器上。刚才我们用一般用户(hadoop)通过 FlashFXP软件把所需的两个软件上传了跟目下,我们通过命令查看下一下是否已经上传了。从图中,我们的所需软件已经准备好了。
15、河北工业大学软件工程与理论实验室 编辑:虾皮 6创建时间:2012/2/26修改时间:2012/3/17修改次数:12、SSH 无密 码验证 配置Hadoop运行过程中需要管理远端 Hadoop守护进程,在 Hadoop启动以后,NameNode是通过 SSH(Secure Shell)来启动和停止各个 DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置 SSH运用无密码公钥认证的形式,这样 NameNode使用 SSH 无密码登录并启动 DataName进程,同样原理,DataNode上也能使用 SSH无密 码登录到 NameNode。
16、2.1安装和启动SSH协议在“Hadoop集群(第 1期)”安装 CentOS6.0时,我们选择了一些基本安装包,所以我们需要两个服务:ssh和 rsync已经安装了。可以通过下面命令 查看结果显示如下:rpm qa | grep opensshrpm qa | grep rsync假设没有安装 ssh和 rsync ,可以通 过下面命令进行安装。yum install ssh 安装 SSH协议yum install rsync(rsync是一个远程数据同步工具,可通过 LAN/WAN快速同步多台主机间的文件)service sshd restart 启动服务确保所有的服务器都安装,上面命令执
17、行完毕,各台机器之间可以通过密码验证相互登。2.2配置Master无密码登录所有Salve1)SSH无密码原理Master( NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在 Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的 Slave上。当 Master 通过 SSH 连接 Salve时,Salve就会生成一个随机数并用 Master的公钥对随机数进行加密,并 发送给 Master 。Master收到加密数之后再用私钥解密,并将解密数回传给 Slave,
18、Slave确认解密数无误之后就允许 Master河北工业大学软件工程与理论实验室 编辑:虾皮 7创建时间:2012/2/26修改时间:2012/3/17修改次数:1进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端 Master 复制到 Slave上。2)Master 机器上生成密码对在 Master 节点上执行以下命令:ssh-keygen t rsa P 这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和 id_rsa.pub ,默认存储在“/home/hadoop/.ssh”目录下。查看“/home/hadoop
19、/ ”下是否有 “.ssh”文件夹,且“.ssh”文件下是否有两个刚生产的无密码密钥对。接着在 Master节点上做如下配置,把 id_rsa.pub追加到授 权的 key里面去。cat /.ssh/id_rsa.pub /.ssh/authorized_keys河北工业大学软件工程与理论实验室 编辑:虾皮 8创建时间:2012/2/26修改时间:2012/3/17修改次数:1在验证前,需要做两件事儿。第一件事儿是修改文件“authorized_keys”权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用 RSA功能),另一件事儿是用 root用户设置“/etc/ssh/ssh
20、d_config”的内容。使其无密码登录有效。1)修改文件“authorized_keys ”chmod 600 /.ssh/authorized_keys备注:如果不进行设置,在验证时,扔提示你输入密码,在这里花费了将近半天时间来查找原因。在网上查到了几篇不错的文章,把作为“Hadoop集群_第 5期副刊_JDK 和 SSH无密码配置”来帮助额外学习之用。2)设置 SSH配置用 root用户登录服务器修改 SSH配置文件“/etc/ssh/sshd_config”的下列内容。RSAAuthentication yesPubkeyAuthentication yes#启用 RSA认证#启用公钥
21、私钥配对认证方式AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)设置完之后记得重启 SSH服务,才能使刚才设置有效。service sshd restart退出 root登录,使用 hadoop普通用户验证是否成功。ssh localhost河北工业大学软件工程与理论实验室 编辑:虾皮 9创建时间:2012/2/26修改时间:2012/3/17修改次数:1从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有的 Slave机器上。使用下面的命令格式进行复制公钥:scp /.ssh/id_rsa.pub例如:远程用
22、户名远程服务器 IP:/scp /.ssh/id_rsa.pub hadoop192.168.1.3:/上面的命令是复制文件“id_rsa.pub”到服务器 IP为“192.168.1.3”的用户为“hadoop”的“/home/hadoop/ ”下面。下面就针对 IP为“192.168.1.3”的 Slave1.Hadoop的节点 进行配置。1)把 Master.Hadoop上的公钥复制到 Slave1.Hadoop上从上图中我们得知,已经把文件“ id_rsa.pub”传过去了,因为并没有建立起无密码连接,所以在连接时,仍然要提示输入输入 Slave1.Hadoop 服务器用户 hadoo
23、p 的密码。为了确保确实已经把文件传过去了,用 SecureCRT登录 Slave1.Hadoop:192.168.1.3服务器,查看“/home/hadoop/”下是否存在 这个文件。从上面得知我们已经成功把公钥复制过去了。2)在“/home/hadoop/ ”下创 建“.ssh”文件夹这一步并不是必须的,如果在 Slave1.Hadoop的“/home/hadoop”已经存在就不需要创建了,因为我们之前并没有对 Slave机器做过无密码登录配置,所以该文件是不存在的。用下面命令进行创建。(备注:用 hadoop登录系统,如果不涉及系统文件修改,一般情况下都是用我们之前建立的普通用户 had
24、oop进行执行命令。)mkdir /.ssh然后是修改文件夹“.ssh”的用户权限,把他的权限修改为“700”,用下面命令执行:chmod 700 /.ssh备注:如果不进行,即使你按照前面的操作设置了“authorized_keys”权限,并配置了河北工业大学软件工程与理论实验室 编辑:虾皮 10创建时间:2012/2/26修改时间:2012/3/17修改次数:1“/etc/ssh/sshd_config”,还重启了 sshd服务,在 Master能用“ssh localhost”进行无密码登录,但是对 Slave1.Hadoop进行登录仍然需要输入密码,就是因 为“.ssh”文件夹的权限设
25、置不对。这个文件夹“.ssh”在配置 SSH 无密码登录时系 统自动生成时,权限自动为“700”,如果是自己手动创建,它的组权限和其他权限都有,这样就会导致 RSA无密码远程登录失败。对比上面两张图,发现文件夹“.ssh”权限已经变了。3)追加到授权文件“authorized_keys ”到目前为止 Master.Hadoop的公钥也有了,文件夹“.ssh”也有了,且权限也修改了。这一步就是把 Master.Hadoop的公钥追加到 Slave1.Hadoop的授权文件“authorized_keys”中去。使用下面命令进行追加并修改“authorized_keys ”文件 权限:cat /i
26、d_rsa.pub /.ssh/authorized_keyschmod 600 /.ssh/authorized_keys河北工业大学软件工程与理论实验室 编辑:虾皮 11创建时间:2012/2/26修改时间:2012/3/17修改次数:14)用 root用户修改“/etc/ssh/sshd_config”具体步骤参考前面 Master.Hadoop的“设置 SSH 配置”,具体分为两步:第 1是修改配置文件;第 2是重启 SSH服务。5)用 Master.Hadoop使用 SSH 无密码登录 Slave1.Hadoop当前面的步骤设置完毕,就可以使用下面命令格式进行 SSH无密码登录了。s
27、sh远程服务器 IP从上图我们主要 3个地方,第 1个就是 SSH无密码登录命令,第 2、3个就是登录前后“”后面的机器名变了,由“Master”变为了“Slave1”,这就说明我们已经成功实现了SSH无密码登录了。最后记得把“/home/hadoop/ ”目录下的“id_rsa.pub ”文件删除掉。rm r /id_rsa.pub到此为止,我们经过前 5步已经实现了从“Master.Hadoop”到“Slave1.Hadoop”SSH无密码登录,下面就是重复上面的步骤把剩余的两台(Slave2.Hadoop 和 Slave3.Hadoop )Slave服务器进行配置。这样,我们就完成了“配
28、置 Master无密 码登录所有的 Slave 服务器”。2.3配置所有Slave无密码登录Master和 Master 无密码登录所有 Slave原理一样,就是把 Slave的公钥追加到 Master的“.ssh”文件夹下的“authorized_keys ”中,记得是追加( )。为了说明情况,我们现在就以“Slave1.Hadoop”无密码登 录“Master.Hadoop”为例,进行一遍操作,也算是巩固一下前面所学知识,剩余的“Slave2.Hadoop ”和“Slave3.Hadoop ”就按照这个示例进行就可以了。首先创建“Slave1.Hadoop”自己的公钥和私钥,并把自己的公
29、钥追加到“authorized_keys”文件中。用到的命令如下:河北工业大学软件工程与理论实验室 编辑:虾皮 12创建时间:2012/2/26修改时间:2012/3/17修改次数:1ssh-keygen t rsa P cat /.ssh/id_rsa.pub /.ssh/authorized_keys接着是用命令“scp”复制“ Slave1.Hadoop”的公钥“id_rsa.pub”到“Master.Hadoop”的“/home/hadoop/ ”目录下,并追加到 “Master.Hadoop”的“authorized_keys”中。1)在“Slave1.Hadoop”服务器的操作用到
30、的命令如下:scp /.ssh/id_rsa.pub hadoop192.168.1.2:/2)在“Master.Hadoop”服务器的操作用到的命令如下:cat /id_rsa.pub /.ssh/authorized_keys河北工业大学软件工程与理论实验室 编辑:虾皮 13创建时间:2012/2/26修改时间:2012/3/17修改次数:1然后删除掉刚才复制过来的“id_rsa.pub”文件。最后是测试从“Slave1.Hadoop”到“Master.Hadoop ”无密码登录。从上面结果中可以看到已经成功实现了,再试下从“Master.Hadoop”到“Slave1.Hadoop”无密
31、码登录。至此“Master.Hadoop”与“Slave1.Hadoop”之间可以互相无密码登录了,剩下的就是按照上面的步骤把剩余的“Slave2.Hadoop”和“Slave3.Hadoop”与“Master.Hadoop”之间建立起无密码登录。这样,Master能无密码验证登录每个 Slave,每个 Slave也能无密码验证登录到 Master。3、Java环境安装所有的机器上都要安装 JDK,现在就先在 Master服务器安装,然后其他服务器按照步骤重复进行即可。安装 JDK以及配置环境变量,需要以“root ”的身份进行。3.1安装JDK首先用 root身份登录“Master.Hado
32、op”后在“/usr”下创建“java”文件夹,再把用 FTP上传到“/home/hadoop/ ”下的 “jdk-6u31-linux-i586.bin”复制到“/usr/java”文件夹中。mkdir /usr/javacp /home/hadoop/ jdk-6u31-linux-i586.bin /usr/java河北工业大学软件工程与理论实验室 编辑:虾皮 14创建时间:2012/2/26修改时间:2012/3/17修改次数:1接着进入“/usr/java”目录下通过下面命令使其 JDK获得可 执行权限,并安装 JDK 。chmod +x jdk-6u31-linux-i586.bi
33、n./jdk-6u31-linux-i586.bin按照上面几步进行操作,最后点击“Enter”键开始安装,安装完会提示你按“Enter”键退出,然后查看“/usr/java”下面会发现多了一个名为“jdk1.6.0_31”文件夹,说明我们的 JDK安装结束,删除“jdk-6u31-linux-i586.bin”文件,进入下一个“配置环境变量”环节。河北工业大学软件工程与理论实验室 编辑:虾皮 15创建时间:2012/2/26修改时间:2012/3/17修改次数:13.2配置环境变量编辑“/etc/profile ”文件,在后面添加 Java的“JAVA_HOME ”、“CLASSPATH ”
34、以及“PATH ”内容。1)编辑“/etc/profile ”文件vim /etc/profile2)添加 Java 环境变量在“/etc/profile ”文件的尾部添加以下内容:# set java environmentexport JAVA_HOME=/usr/java/jdk1.6.0_31/export JRE_HOME=/usr/java/jdk1.6.0_31/jreexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin或者#
35、 set java environmentexport JAVA_HOME=/usr/java/jdk1.6.0_31export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin以上两种意思一样,那么我们就选择第 2种来进行设置。3)使配置生效保存并退出,执行下面命令使其配置立即生效。source /etc/profile河北工业大学软件工程与理论实验室 编辑:虾皮 16创建时间:2012/2/26修改时间:2012/3/17修
36、改次数:13.3验证安装成功配置完毕并生效后,用下面命令判断是否成功。java -version从上图中得知,我们以确定 JDK已经安装成功。3.4安装剩余机器这时用普通用户 hadoop通过下面命令格式把“Master.Hadoop”文件夹“/home/hadoop/”的 JDK复制到其他 Slave的“/home/hadoop/”下面,剩下的事儿就是在其余的 Slave服务器上按照上图的步骤安装 JDK。scp /home/hadoop/jdk-6u31-linux-i586.bin远程用户名 远程服务器 IP:/或者scpscp/jdk-6u31-linux-i586.bin 远程用户名
37、远程服务器 IP:/备注:“”代表当前用户的主目录,当前用户为 hadoop,所以“”代表“/home/hadoop”。例如:把 JDK从“Master.Hadoop ”复制到“Slave1.Hadoop”的命令如下。/jdk-6u31-linux-i586 hadoop192.168.1.3:/河北工业大学软件工程与理论实验室 编辑:虾皮 17创建时间:2012/2/26修改时间:2012/3/17修改次数:1然后查看“Slave1.Hadoop”的“/home/hadoop”查看是否已 经复制成功了。从上图中得知,我们已经成功复制了,现在我们就用最高权限用户 root进行安装了。其他的与这
38、个一样。4、Hadoop集群安装所有的机器上都要安装 hadoop,现在就先在 Master服务 器安装,然后其他服务器按照步骤重复进行即可。安装和配置 hadoop需要以“root”的身份进行。4.1安装hadoop首先用 root用户登录“ Master.Hadoop”机器,查看我们之前用 FTP 上传至“/home/Hadoop”上传的“hadoop-1.0.0.tar.gz”。接着把“hadoop-1.0.0.tar.gz”复制到“/usr”目录下面。cp /home/hadoop/hadoop-1.0.0.tar.gz /usr下一步进入“/usr”目录下,用下面命令把“hadoop
39、-1.0.0.tar.gz”进行解压,并将其命名为“hadoop”,把该文件夹的读权限分配给普通用户 hadoop,然后删除“hadoop-1.0.0.tar.gz”安装包。河北工业大学软件工程与理论实验室 编辑:虾皮 18创建时间:2012/2/26修改时间:2012/3/17修改次数:1cd /usr #进入“/usr”目录tar zxvf hadoop-1.0.0.tar.gz #解压“hadoop-1.0.0.tar.gz”安装包#将“hadoop-1.0.0”文件夹重命名“hadoop”#将文件夹“hadoop”读权限分配给 hadoop用户#删除“hadoop-1.0.0.tar.
40、gz”安装包mvchownhadoop-1.0.0 hadoopR hadoop:hadoop hadooprm rf hadoop-1.0.0.tar.gz解压后,并重命名。河北工业大学软件工程与理论实验室 编辑:虾皮 19创建时间:2012/2/26修改时间:2012/3/17修改次数:1把“/usr/hadoop”读权限分配给 hadoop用户(非常重要)删除“hadoop-1.0.0.tar.gz”安装包最后在“/usr/hadoop”下面创建 tmp文件夹,把 Hadoop的安装路径添加到“/etc/profile”中,修改“/etc/profile ”文件(配置 java 环境变量
41、的文件),将以下语句添加到末尾,并使其有效:# set hadoop pathexport HADOOP_HOME=/usr/hadoopexport PATH=$PATH :$HADOOP_HOME/bin1)在“/usr/hadoop”创建“tmp”文件夹mkdir /usr/hadoop/tmp2)配置“/etc/profile ”河北工业大学软件工程与理论实验室 编辑:虾皮 20创建时间:2012/2/26修改时间:2012/3/17修改次数:1vim /etc/profile配置后的文件如下:3)重启“/etc/profile ”source /etc/profile4.2配置had
42、oop1)配置 hadoop-env.sh该“hadoop-env.sh”文件位于 “/usr/hadoop/conf”目录下。在文件的末尾添加下面内容。# set java environmentexport JAVA_HOME=/usr/java/jdk1.6.0_31河北工业大学软件工程与理论实验室 编辑:虾皮 21创建时间:2012/2/26修改时间:2012/3/17修改次数:1Hadoop配置文件在 conf 目录下,之前的版本的配置文件主要是 Hadoop-default.xml 和Hadoop-site.xml。由于 Hadoop发展迅速,代码量急剧增加,代码开发分为了 cor
43、e,hdfs和map/reduce三部分,配置文件也被分成了三个 core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和 hdfs-site.xml是站在 HDFS角度上配置文件;core-site.xml和 mapred-site.xml是站在 MapReduce角度上配置文件。2)配置 core-site.xml 文件修改 Hadoop核心配置文件 core-site.xml,这里配置的是 HDFS的地址和端口号。hadoop.tmp.dir/usr/hadoop/tmp(备注:请先在 /usr/hadoop目录下建立 tmp文
44、件夹)A base for other temporary directories.fs.default.namehdfs:/192.168.1.2:9000备注:如没有配置 hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行 format才行,否则会出错。用下面命令进行编辑:编辑结果显示如下:河北工业大学软件工程与理论实验室 编辑:虾皮 22创建时间:2012/2/26修改时间:2012/3/17修改次数:13)配置 hdfs-site.xml 文件修改 Hadoop中 HDFS的配置,配置的备份方式
45、默认为 3。dfs.replication1(备注:replication是数据副本数量,默认为 3,salve少于 3台就会报错)用下面命令进行编辑:编辑结果显示如下:4)配置 mapred-site.xml文件修改 Hadoop中 MapReduce的配置文件,配置的是 JobTracker的地址和端口。mapred.job.trackerhttp:/192.168.1.2:9001用下面命令进行编辑:河北工业大学软件工程与理论实验室 编辑:虾皮 23创建时间:2012/2/26修改时间:2012/3/17修改次数:1编辑结果显示如下:5)配置 masters 文件有两种方案:(1)第一种
46、修改 localhost为 Master.Hadoop(2)第二种去掉“localhost”,加入 Master机器的 IP:192.168.1.2为保险起见,启用第二种,因为万一忘记配置“/etc/hosts”局域网的 DNS失效,这样就会出现意想不到的错误,但是一旦 IP配对,网络畅通,就能通过 IP找到相应主机。用下面命令进行修改:编辑结果显示如下:6)配置 slaves文件(Master主机特有)有两种方案:(1)第一种去掉“localhost”,每行只添加一个主机名,把剩余的 Slave主机名都填上。例如:添加形式如下Slave1.HadoopSlave2.HadoopSlave3.
47、Hadoop(2)第二种去掉“localhost”,加入集群中所有 Slave机器的 IP,也是每行一个。河北工业大学软件工程与理论实验室 编辑:虾皮 24创建时间:2012/2/26修改时间:2012/3/17修改次数:1例如:添加形式如下192.168.1.3192.168.1.4192.168.1.5原因和添加“masters ”文件一样,选择第二种方式。用下面命令进行修改:编辑结果如下:现在在 Master机器上的 Hadoop配置就结束了,剩下的就是配置 Slave机器上的 Hadoop。一种方式是按照上面的步骤,把 Hadoop的安装包在用普通用 户 hadoop通过“scp ”复
48、制到其他机器的“/home/hadoop”目录下,然后根据实际情况进行安装配置,除了第 6步,那是 Master 特有的。用下面命令格式进行。(备注:此时 切换到普通用户 hadoop )scp /hadoop-1.0.0.tar.gz hadoop服务器 IP:/例如:从“Master.Hadoop”到“Slave1.Hadoop”复制 Hadoop的安装包。另一种方式是将 Master上配置好的 hadoop所在文件夹 “/usr/hadoop”复制到所有的Slave的“/usr”目录下(实际上 Slave机器上的 slavers 文件是不必要的,复制了也没问题)。用下面命令格式进行。(备注:此时用户可以为 hadoop也可以为 root)scp -r /usr/hadoop root服务器 IP:/usr/河北工业大学软件工程与理论实验室 编辑:虾皮 25创建时间:2012/2/26修改时间:2012/3/17修改次数:1例如:从“Master.Hadoop”到“Slave1.Hadoop”复制配置 Hadoop 的文件。上图中以 root用户进行复制,当然不管是用户 root还是 hadoop,虽然 Master 机器上的“/usr/