《centos安装配置hadoop超详细过程.docx》由会员分享,可在线阅读,更多相关《centos安装配置hadoop超详细过程.docx(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1、集群部署介绍、集群部署介绍1.1 Hadoop 简介简介Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台。以 Hadoop 分布式 文 件 系 统(HDFS,HadoopDistributedFilesystem)和 MapReduce(Google MapReduce 的开源实现)为核心的 Hadoop 为用户提供了系统底层细节透明的分布式基础架构。对于 Hadoop 的集群来讲,可以分成两大类角色:Master 和 Salve。一个 HDFS 集群是由一个 NameNode 和若干个 DataNode 组成的。其中 NameNode 作为主服务器,管理文件系统的命
2、名空间和客户端对文件系统的访问操作;集群中的 DataNode 管理存储的数据。MapReduce 框架是由一个单独运行在主节点上的 JobTracker 和运行在每个集群从节点的 TaskTracker 共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个 Job 被提交时,JobTracker 接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker 的执行。从上面的介绍可以看出,HDFS 和 MapReduce 共同组成了 H
3、adoop 分布式系统体系结构的核心。HDFSHDFS 在集群上实现分布式文件系统,MapReduceMapReduce 在集群上实现了分布式计算和任务处理。HDFS 在 MapReduce 任务处理过程中提供了文件操作和存储等支持,MapReduce 在HDFS 的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了 Hadoop 分布式集群的主要任务。1.21.2环境说明环境说明集群中包括 4 个节点:1 个 Master,3 个 Salve,节点之间局域网连接,可以相互ping 通,具体集群信息可以查看HadoopHadoop 集群(第集群(第 2 2 期)期)。节
4、点 IP 地址分布如下:机器名称机器名称IP 地址地址Master.Hadoop192.168.1.2Salve1.Hadoop192.168.1.3Salve2.Hadoop192.168.1.4Salve3.Hadoop192.168.1.5四个节点上均是 CentOS6.0 系统,并且有一个相同的用户 hadoophadoop。Master 机器主要配置 NameNode 和 JobTracker 的角色,负责总管分布式数据和分解任务的执行;3 个 Salve机器配置 DataNode 和 TaskTracker 的角色,负责分布式数据存储以及任务的执行。其实应该还应该有 1 个 Mas
5、ter 机器,用来作为备用备用,以防止 Master 服务器宕机宕机,还有一个备用马上启用。后续经验积累一定阶段后补上补上一台备用 Master 机器。1.31.3网络配置网络配置Hadoop 集群要按照 1.21.2 小节小节表格所示进行配置,我们在HadoopHadoop 集群(第集群(第 1 1 期)期)的CentOS6.0 安装过程就按照提前规划好的主机名进行安装和配置。如果实验室后来人在安装系统时,没有配置好,不要紧,没有必要重新安装,在安装完系统之后仍然可以根据后来的规划对机器的主机名进行修改。下面的例子我们将以 Master 机器为例,即主机名为Master.Hadoop,IP
6、为192.168.1.2进行一些主机名配置的相关操作。其他的 Slave 机器以此为依据进行修改。1 1)查看当前机器名称)查看当前机器名称用下面命令进行显示机器名称,如果跟规划的不一致,要按照下面进行修改。hostname上图中,用hostname查Master机器的名字为Master.Hadoop,与我们预先规划的一致。2 2)修改当前机器名称)修改当前机器名称假 定假 定 我 们 发 现 我 们 的 机 器 的 主 机 名 不 是 我 们 想 要 的,通 过 对/etc/sysconfig/network/etc/sysconfig/network文件修改其中HOSTNAMEHOSTNA
7、ME后面的值,改成我们规划的名称。这个/etc/sysconfig/network/etc/sysconfig/network文件是定义 hostname 和是否利用网络的不接触网络设备的对系统全体定义的文件。设定形式设定形式:设定值=值/etc/sysconfig/network的设定项目设定项目如下:NETWORKING是否利用网络GATEWAY默认网关IPGATEWAYDEV默认网关的接口名HOSTNAME主机名DOMAIN域名用下面命令进行修改当前机器的主机名(备注:备注:修改系统文件一般用 rootroot 用户)vim/etc/sysconfig/network通过上面的命令我们从
8、/etc/sysconfig/network中找到HOSTNAME进行修改,查看内容如下:3 3)修改当前机器)修改当前机器 IPIP假定假定我们的机器连 IP 在当时安装机器时都没有配置好,那此时我们需要对ifcfg-eth0ifcfg-eth0文件进行配置,该文件位于/etc/sysconfig/network-scripts/etc/sysconfig/network-scripts文件夹下。在这个目录下面,存放的是网络接口(网卡)的制御脚本文件(控制文件),ifcfg-eth0 是默认的第一个网络接口,如果机器中有多个网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-et
9、h2,ifcfg-eth3,。这里面的文件是相当重要的,涉及到网络能否正常工作。设定形式:设定值=值设定项目项目如下:DEVICE接口名(设备,网卡)BOOTPROTOIP 的配置方法(static:固定 IP,dhcpHCP,none:手动)HWADDRMAC 地址ONBOOT系统启动的时候网络接口是否有效(yes/no)TYPE网络类型(通常是 Ethemet)NETMASK网络掩码IPADDRIPADDRIP 地址IPV6INITIPV6 是否有效(yes/no)GATEWAY默认网关 IP 地址查看/etc/sysconfig/network-scripts/ifcfg-eth0内容,
10、如果 IP 不复核,就行修改。如果上图中 IP 与规划不相符,用下面命令进行修改:vim/etc/sysconfig/network-scripts/ifcgf-eth0修改完之后可以用ifconfig进行查看。4 4)配置)配置 hostshosts 文件(文件(必须必须)/etc/hosts/etc/hosts这个文件是用来配置主机将用的 DNSDNS 服务器信息,是记载 LAN 内接续的各主机的对应HostName 和 IP用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的 IP 地址。我们要测试两台机器之间知否连通,一般用ping机器的 IP,如果想用ping
11、机器的主机名发现找不见该名称的机器,解决的办法就是修改/etc/hosts/etc/hosts这个文件,通过把 LAN 内的各主机的 IP 地址和 HostName 的一一对应一一对应写入这个文件的时候,就可以解决问题。例如:机器为Master.Hadoop:192.168.1.2对机器为Salve1.Hadoop:192.168.1.3用命令ping记性连接测试。测试结果如下:从上图中的值,直接对 IP 地址进行测试,能够 ping 通,但是对主机名进行测试,发现没有 ping 通,提示unknownhost未知主机,这时查看Master.Hadoop的/etc/hosts文件内容。发现里面
12、没有192.168.1.3Slave1.Hadoop内容,故而本机器是无法对机器的主机名为Slave1.Hadoop解析。在进行 HadoopHadoop 集群集群配置中,需要在/etc/hosts文件中添加集群中所有机器的 IP 与主机名,这样 Master 与所有的 Slave 机器之间不仅可以通过 IP 进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的/etc/hosts文件末尾末尾中都要添加如下内容:192.168.1.2Master.Hadoop192.168.1.3Slave1.Hadoop192.168.1.4Slave2.Hadoop192.168.1.5Slave
13、3.Hadoop用以下命令进行添加:vim/etc/hosts添加结果如下:现在我们在进行对机器为Slave1.Hadoop的主机名进行 ping 通测试,看是否能测试成功。从上图中我们已经能用主机名进行 ping 通了,说明我们刚才添加的内容,在局域网内能进行 DNS 解析了,那么现在剩下的事儿就是在其余的 Slave 机器上进行相同的配置。然后进行测试。(备注:备注:当设置 SSH 无密码验证后,可以scp进行复制,然后把原来的hosts文件执行覆盖即可。)1.41.4所需软件所需软件1 1)JDKJDK 软件软件下载地址:http:/ 版本:jdk-6u31-linux-i586.bin
14、2 2)HadoopHadoop 软件软件下载地址:http:/hadoop.apache.org/common/releases.htmlHadoop 版本:hadoop-1.0.0.tar.gz1.51.5VSFTPVSFTP 上传上传在HadoopHadoop 集群(第集群(第 3 3 期)期)讲了 VSFTP 的安装及配置,如果没有安装 VSFTP 可以按照该文档进行安装。如果安装好了,就可以通过 FlashFXP.exeFlashFXP.exe 软件把我们下载的 JDK6.0 和Hadoop1.0 软件上传到Master.Hadoop:192.168.1.2Master.Hadoop
15、:192.168.1.2服务器上。刚才我们用一般用户(hadoop)通过 FlashFXP 软件把所需的两个软件上传了跟目下,我们通过命令查看下一下是否已经上传了。从图中,我们的所需软件已经准备好了。2 2、SSHSSH 无密码验证配置无密码验证配置Hadoop 运行过程中需要管理远端 Hadoop 守护进程,在 Hadoop 启动以后,NameNode 是通过 SSH(SecureShell)来启动和停止各个 DataNode 上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置 SSH 运用无密码公钥认证的形式,这样 NameNode 使用 SSH 无
16、密码登录并启动 DataName 进程,同样原理,DataNode 上也能使用 SSH 无密码登录到 NameNode。2.12.1安装和启动安装和启动 SSHSSH 协议协议在Hadoop 集群(第 1 期)安装 CentOS6.0 时,我们选择了一些基本安装包,所以我们需要两个服务:ssh 和 rsync 已经安装了。可以通过下面命令查看结果显示如下:rpmqa|grepopensshrpmqa|greprsync假设假设没有安装 ssh 和 rsync,可以通过下面命令进行安装。yuminstallssh安装 SSH 协议yuminstallrsync(rsync 是一个远程数据同步工具
17、,可通过 LAN/WAN 快速同步多台主机间的文件)servicesshdrestart启动服务确保所有的服务器都安装,上面命令执行完毕,各台机器之间可以通过密码验证相互登。2.22.2配置配置 MasterMaster 无密码登录所有无密码登录所有 SalveSalve1 1)SSHSSH 无密码原理无密码原理Master(NameNode|JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器 Salve(DataNode|Tasktracker)上时,需要在 Master 上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的 Slave 上。当 Master 通
18、过 SSH 连接 Salve时,Salve 就会生成一个随机数并用 Master 的公钥对随机数进行加密,并发送给 Master。Master 收到加密数之后再用私钥解密,并将解密数回传给 Slave,Slave 确认解密数无误之后就允许 Master 进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端 Master 复制到 Slave 上。2 2)MasterMaster 机器上生成密码对机器上生成密码对在 Master 节点上执行以下命令:ssh-keygentrsaP这条命是生成其无密码密钥对无密码密钥对,询问其保存路径时直接回车直接回车采用默认路径。生成
19、的密钥对:id_rsa 和 id_rsa.pub,默认存储在/home/hadoop/.ssh/home/hadoop/.ssh目录下。查看/home/hadoop/下是否有.ssh文件夹,且.ssh文件下是否有两个刚生产的无密码密钥对。接着在 Master 节点上做如下配置,把 id_rsa.pub 追加到授权的 key 里面去。cat/.ssh/id_rsa.pub/.ssh/authorized_keys在验证前,需要做两件事儿。第一件事儿是修改文件authorized_keysauthorized_keys权限(权限权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用的设置非常
20、重要,因为不安全的设置安全设置,会让你不能使用 RSARSA 功能功能),另一件事儿是用 root 用户设置/etc/ssh/sshd_config/etc/ssh/sshd_config的内容。使其无密码登录有效。1 1)修改文件)修改文件 authorized_keysauthorized_keys chmod600/.ssh/authorized_keys备注:备注:如果不进行设置,在验证时,扔提示你输入密码,在这里花费了将近半天时间来查找原因。在网上查到了几篇不错的文章,把作为HadoopHadoop 集群集群_ _第第 5 5 期副刊期副刊_JDK_JDK 和和SSHSSH 无密码配
21、置无密码配置来帮助额外学习之用。2 2)设置)设置 SSHSSH 配置配置用 rootroot 用户登录服务器修改 SSH 配置文件/etc/ssh/sshd_config的下列内容。RSAAuthenticationyes#启用RSA认证PubkeyAuthenticationyes#启用公钥私钥配对认证方式AuthorizedKeysFile.ssh/authorized_keys#公钥文件路径(和上面生成的文件同)设置完之后记得重启重启 SSHSSH 服务服务,才能使刚才设置有效。servicesshdrestart退出退出 rootroot 登录登录,使用 hadoophadoop 普
22、通用户验证是否成功。sshlocalhost从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥公钥复制所有所有的Slave 机器上。使用下面的命令格式进行复制公钥:scp/.ssh/id_rsa.pub远程用户名远程服务器 IP:/例如:scp/.ssh/id_rsa.pubhadoop192.168.1.3:/上面的命令是复制复制文件id_rsa.pubid_rsa.pub到服务器 IP 为192.168.1.3192.168.1.3的用户为hadoophadoop的/home/hadoop/home/hadoop/下面。下面就针对 IP 为192.168.1.3的 Slave1.
23、Hadoop 的节点进行配置。1 1)把)把 Master.HadoopMaster.Hadoop 上的公钥复制到上的公钥复制到 Slave1.HadoopSlave1.Hadoop 上上从上图中我们得知,已经把文件id_rsa.pub传过去了,因为并没有建立起无密码连接,所以在连接时,仍然要提示输入输入 Slave1.Hadoop 服务器用户 hadoop 的密码。为了确保确实已经把文件传过去了,用 SecureCRT 登录 Slave1.Hadoop:192.168.1.3 服务器,查看/home/hadoop/下是否存在这个文件。从上面得知我们已经成功把公钥复制过去了。2 2)在)在/h
24、ome/hadoop/home/hadoop/下创建下创建.ssh.ssh文件夹文件夹这一步并不是必须并不是必须的,如果在 Slave1.Hadoop 的/home/hadoop已经存在已经存在就不需要创建了,因为我们之前并没有对 Slave 机器做过无密码登录配置,所以该文件是不存在的。用下面命令进行创建。(备注:备注:用 hadoop 登录系统,如果不涉及系统文件修改,一般情况下都是用我们之前建立的普通用户 hadoop 进行执行命令。)mkdir/.ssh然后是修改文件夹.ssh.ssh的用户权限,把他的权限修改为700700,用下面命令执行:chmod700/.ssh备注:备注:如果不
25、进行,即使你按照前面的操作设置了authorized_keys权限,并配置了/etc/ssh/sshd_config,还重启了 sshd 服务,在 Master 能用sshlocalhost进行无密码登录,但是对 Slave1.Hadoop 进行登录仍然需要输入密码,就是因为.ssh文件夹的权限设置不对。这个文件夹.ssh在配置 SSH 无密码登录时系统自动生成时,权限自动为700,如果是自己手动创建,它的组权限和其他权限都有,这样就会导致 RSA 无密码远程登录失败。对比上面两张图,发现文件夹.ssh权限已经变了。3 3)追加到授权文件)追加到授权文件 authorized_keysauth
26、orized_keys 到目前为止 Master.Hadoop 的公钥也有了,文件夹.ssh也有了,且权限也修改了。这一步就是把 Master.Hadoop 的公钥追加追加到 Slave1.Hadoop 的授权文件authorized_keys中去。使用下面命令进行追加并修改authorized_keys文件权限:cat/id_rsa.pub/.ssh/authorized_keyschmod600/.ssh/authorized_keys4 4)用)用 rootroot 用户修改用户修改/etc/ssh/sshd_config/etc/ssh/sshd_config具体步骤参考前面 Mast
27、er.Hadoop 的设置设置 SSHSSH 配置配置,具体分为两步:第 1 是修改配置文件;第 2 是重启 SSH 服务。5 5)用)用 Master.HadoopMaster.Hadoop 使用使用 SSHSSH 无密码登录无密码登录 Slave1.HadoopSlave1.Hadoop当前面的步骤设置完毕,就可以使用下面命令格式进行 SSH 无密码登录了。ssh远程服务器 IP从上图我们主要 3 个地方,第 1 个就是 SSH 无密码登录命令,第 2、3 个就是登录前后 后面的机器名机器名变了,由MasterMaster变为了Slave1Slave1,这就说明我们已经成功实现了 SSH无
28、密码登录了。最后记得把/home/hadoop/目录下的id_rsa.pub文件删除掉。rmr/id_rsa.pub到此为止,我们经过前 5 步已经实现了从Master.Hadoop到Slave1.HadoopSSH 无密码登录,下面就是重复上面的步骤把剩余的两台(Slave2.Hadoop 和 Slave3.Hadoop)Slave 服务器进行配置。这样这样,我们就完成了配置 Master 无密码登录所有的 Slave 服务器。2.32.3配置所有配置所有 SlaveSlave 无密码登录无密码登录 MasterMaster和 Master 无密码登录所有 Slave 原理一样,就是把 Sl
29、ave 的公钥追加追加到 Master 的.ssh文件夹下的authorized_keys中,记得是追加(追加()。为了说明情况,我们现在就以Slave1.Hadoop无密码登录Master.Hadoop为例,进行一遍操作,也算是巩固巩固一下前面所学知识,剩余的Slave2.Hadoop和Slave3.Hadoop就按照这个示例进行就可以了。首 先 创 建 Slave1.Hadoop 自 己 的 公 钥 和 私 钥,并 把 自 己 的 公 钥 追 加 到authorized_keys文件中。用到的命令如下:ssh-keygentrsaPcat/.ssh/id_rsa.pub/.ssh/auth
30、orized_keys接着是用命令scpscp复制Slave1.Hadoop的公钥id_rsa.pub到Master.Hadoop的/home/hadoop/目录下,并追加追加到Master.Hadoop的authorized_keys中。1 1)在)在Slave1.HadoopSlave1.Hadoop服务器的操作服务器的操作用到的命令如下:scp/.ssh/id_rsa.pubhadoop192.168.1.2:/2 2)在)在Master.HadoopMaster.Hadoop服务器的操作服务器的操作用到的命令如下:cat/id_rsa.pub/.ssh/authorized_keys然
31、后删除掉刚才复制过来的id_rsa.pub文件。最后是测试从Slave1.Hadoop到Master.Hadoop无密码登录。从 上 面 结 果 中 可 以 看 到 已 经 成 功 实 现 了,再 试 下 从 Master.Hadoop 到Slave1.Hadoop无密码登录。至此Master.Hadoop与Slave1.Hadoop之间可以互相无密码登录了,剩下的就是按照上面的步骤把剩余的Slave2.Hadoop和Slave3.Hadoop与Master.Hadoop之间建立起无密码登录。这样,Master 能无密码验证登录每个 Slave,每个 Slave 也能无密码验证登录到 Mast
32、er。3 3、JavaJava 环境安装环境安装所有的机器上都要安装 JDK,现在就先在 Master 服务器安装,然后其他服务器按照步骤重复进行即可。安装 JDK 以及配置环境变量,需要以rootroot的身份进行。3.13.1安装安装 JDKJDK首先用 rootroot 身份登录Master.Hadoop后在/usr下创建java文件夹,再把用 FTP上传到/home/hadoop/下的jdk-6u31-linux-i586.bin复制到/usr/java文件夹中。mkdir/usr/javacp/home/hadoop/jdk-6u31-linux-i586.bin/usr/java接
33、着进入进入/usr/java/usr/java目录下下通过下面命令使其 JDK 获得可执行权限,并安装 JDK。chmod+xjdk-6u31-linux-i586.bin./jdk-6u31-linux-i586.bin按照上面几步进行操作,最后点击EnterEnter键开始安装,安装完会提示你按EnterEnter键退出,然后查看/usr/java/usr/java下面会发现多了一个名为jdk1.6.0_31jdk1.6.0_31文件夹,说明我们的JDK 安装结束,删除jdk-6u31-linux-i586.bin文件,进入下一个配置环境变量环节。3.23.2配置环境变量配置环境变量编辑/
34、etc/profile文件,在后面添加 Java 的JAVA_HOME、CLASSPATH以及PATH内容。1 1)编辑)编辑/etc/profile/etc/profile文件文件vim/etc/profile2 2)添加)添加 JavaJava 环境变量环境变量在/etc/profile/etc/profile文件的尾部尾部添加以下内容:#setjavaenvironmentexportJAVA_HOME=/usr/java/jdk1.6.0_31/exportJRE_HOME=/usr/java/jdk1.6.0_31/jreexportCLASSPATH=.:$CLASSPATH:$J
35、AVA_HOME/lib:$JRE_HOME/libexportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin或者#setjavaenvironmentexportJAVA_HOME=/usr/java/jdk1.6.0_31exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexportPATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin以上两种意思一样,那么我们就选择第第 2 2 种种来进行设置。3 3)使配置生效)使配置生效保存并退出,执行下面命令使
36、其配置立即生效。source/etc/profile3.33.3验证安装成功验证安装成功配置完毕并生效后,用下面命令判断是否成功。java-version从上图中得知,我们以确定 JDK 已经安装成功。3.43.4安装剩余机器安装剩余机器这时用普通用户普通用户 hadoophadoop 通过下面命令格式把Master.Hadoop文件夹/home/hadoop/的 JDK 复制到其他 Slave 的/home/hadoop/下面,剩下的事儿就是在其余的 Slave 服务器上按照上图的步骤安装 JDK。scp/home/hadoop/jdk-6u31-linux-i586.bin远程用户名远程服
37、务器 IP:/或者scp/jdk-6u31-linux-i586.bin远程用户名远程服务器 IP:/备 注:备 注:代 表 当 前当 前 用 户 的 主 目 录,当 前 用 户 为前 用 户 为 hadoophadoop,所 以 代 表/home/hadoop/home/hadoop。例如:例如:把 JDK 从Master.Hadoop复制到Slave1.Hadoop的命令如下。scp/jdk-6u31-linux-i586hadoop192.168.1.3:/然后查看Slave1.Hadoop的/home/hadoop查看是否已经复制成功了。从上图中得知,我们已经成功复制了,现在我们就用最
38、高权限用户最高权限用户 rootroot 进行安装了。其他的与这个一样。4 4、HadoopHadoop 集群安装集群安装所有的机器上都要安装 hadoop,现在就先在 Master 服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置 hadoop 需要以rootroot的身份进行。4.14.1安装安装 hadoophadoop首 先 用 rootroot 用 户 登 录 Master.Hadoop 机 器,查 看 我 们 之 前 用 FTP 上 传 至/home/Hadoop上传的hadoop-1.0.0.tar.gzhadoop-1.0.0.tar.gz。接着把hadoop-1.0
39、.0.tar.gzhadoop-1.0.0.tar.gz复制到/usr目录下面。cp/home/hadoop/hadoop-1.0.0.tar.gz/usr下一步进入/usr目录下,用下面命令把hadoop-1.0.0.tar.gzhadoop-1.0.0.tar.gz进行解压,并将其命名为hadoop,把该文件夹的读权限读权限分配给普通用户 hadoophadoop,然后删除hadoop-hadoop-1.0.0.tar.gz1.0.0.tar.gz安装包。cd/usr#进入/usr目录tarzxvfhadoop-1.0.0.tar.gz#解压hadoop-1.0.0.tar.gzhadoo
40、p-1.0.0.tar.gz安装包mvhadoop-1.0.0hadoop#将hadoop-1.0.0文件夹重命名重命名hadoopchownR Rhadoop:hadoophadoop#将文件夹将文件夹hadoophadoop读权限分配给读权限分配给 hadoophadoop 用户用户rmrfhadoop-1.0.0.tar.gz#删除hadoop-hadoop-1.0.0.tar.gz1.0.0.tar.gz安装包解压后,并重命名。把/usr/hadoop读权读权限分配给 hadoophadoop 用户(非常非常重要重要)删除hadoop-1.0.0.tar.gzhadoop-1.0.0.
41、tar.gz安装包最 后 在/usr/hadoop/usr/hadoop 下 面 创 建 tmptmp 文 件 夹,把 Hadoop 的 安 装 路 径 添 加 到/etc/profile/etc/profile中,修改/etc/profile文件(配置 java 环境变量的文件),将以下语句添加到末尾末尾,并使其有效:#sethadooppathexportHADOOP_HOME=/usr/hadoopexportPATH=$PATH:$HADOOP_HOME/bin1 1)在)在/usr/hadoop/usr/hadoop 创建创建 tmptmp 文件夹文件夹mkdir/usr/hadoo
42、p/tmp2 2)配置)配置/etc/profile/etc/profilevim/etc/profile配置后的文件如下:3 3)重启)重启/etc/profile/etc/profilesource/etc/profile4.24.2配置配置 hadoophadoop1 1)配置)配置 hadoop-env.shhadoop-env.sh该hadoop-env.shhadoop-env.sh文件位于/usr/hadoop/conf/usr/hadoop/conf目录下。在文件的末尾添加下面内容。#setjavaenvironmentexportJAVA_HOME=/usr/java/jdk
43、1.6.0_31Hadoop 配置文件在 conf 目录下,之前的版本的配置文件主要是 Hadoop-default.xml和 Hadoop-site.xml。由于 Hadoop 发展迅速,代码量急剧增加,代码开发分为了 core,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 2)配
44、置)配置 core-site.xmlcore-site.xml 文件文件修改 Hadoop 核心配置文件 core-site.xml,这里配置的是 HDFS 的地址和端口号。hadoop.tmp.dir/usr/hadoop/tmp(备注:备注:请先在/usr/hadoop目录下建立tmp文件夹)Abaseforothertemporarydirectories.fs.default.namehdfs:/192.168.1.2192.168.1.2:90009000备注:备注:如没有配置 hadoop.tmp.dir 参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目
45、录在每次重启后都会被干掉,必须重新执行 format 才行,否则会出错。用下面命令进行编辑:编辑结果显示如下:3 3)配置)配置 hdfs-site.xmlhdfs-site.xml 文件文件修改 Hadoop 中 HDFS 的配置,配置的备份方式默认为 3。dfs.replication1 1(备注:备注:replication是数据副本数量,默认为 3,salve 少于 3 台就会报错)用下面命令进行编辑:编辑结果显示如下:4 4)配置)配置 mapred-site.xmlmapred-site.xml 文件文件修改 Hadoop 中 MapReduce 的配置文件,配置的是 JobTra
46、cker 的地址和端口。mapred.job.trackerhttp:/192.168.1.2192.168.1.2:90019001用下面命令进行编辑:编辑结果显示如下:5 5)配置)配置 mastersmasters 文件文件有两种方案:(1)第一种修改 localhost 为 Master.Hadoop(2)第二种去掉localhost,加入 Master 机器的 IP:192.168.1.2为保险起见,启用第二种,因为万一忘记配置/etc/hosts局域网的 DNS 失效,这样就会出现意想不到的错误,但是一旦 IP 配对,网络畅通,就能通过 IP 找到相应主机。用下面命令进行修改:编辑
47、结果显示如下:6 6)配置)配置 slavesslaves 文件(文件(MasterMaster 主机特有主机特有)有两种方案:(1)第一种去掉localhost,每行只添加一个主机名,把剩余的 Slave 主机名都填上。例如:添加形式如下Slave1.HadoopSlave2.HadoopSlave3.Hadoop(2)第二种去掉localhost,加入集群中所有 Slave 机器的 IP,也是每行一个。例如:添加形式如下192.168.1.3192.168.1.4192.168.1.5原因和添加masters文件一样,选择第二种方式。用下面命令进行修改:编辑结果如下:现在在 Master
48、机器上的 Hadoop 配置就结束了,剩下的就是配置 Slave 机器上的Hadoop。一种方式一种方式是按照上面的步骤,把 Hadoop 的安装包在用普通用户普通用户 hadoophadoop 通过scpscp复制到其他机器的/home/hadoop目录下,然后根据实际情况进行安装配置,除了第除了第 6 6 步,步,那是那是 MasterMaster 特有的特有的。用下面命令格式进行。(备注:备注:此时切换到普通用户 hadoop)scp/hadoop-1.0.0.tar.gzhadoop服务器 IP:/例如:从Master.Hadoop到Slave1.Hadoop复制 Hadoop 的安装
49、包。另一种方式另一种方式是将Master 上配置好的 hadoop 所在文件夹/usr/usr/hadoophadoop复制到所有的Slave 的/usr目录下(实际上 Slave 机器上的 slavers 文件是不必要的,复制了也没问题)。用下面命令格式进行。(备注:备注:此时用户可以为 hadoop 也可以为 root)scp-r-r/usr/hadooprootroot服务器 IP:/usr/例如:从Master.Hadoop到Slave1.Hadoop复制配置 Hadoop 的文件。上图中以 root 用户进行复制,当然不管是用户 root 还是 hadoop,虽然 Master机器上
50、的/usr/hadoop文件夹用户 hadoop 有权限,但是 Slave1 上的 hadoop 用户却没有/usr权限,所以没有创建文件夹的权限。所以无论是哪个用户进行拷贝,右面都是root机器 IP格式。因为我们只是建立起了 hadoop 用户的 SSH 无密码连接,所以用 root进行scp时,扔提示让你输入Slave1.Hadoop服务器用户 root 的密码。查看Slave1.Hadoop服务器的/usr目录下是否已经存在hadoop文件夹,确认已经复制成功。查看结果如下:从上图中知道,hadoop 文件夹确实已经复制了,但是我们发现 hadoop 权限是 root,所以我们现在要给