hadoop安装配置文档.docx
《hadoop安装配置文档.docx》由会员分享,可在线阅读,更多相关《hadoop安装配置文档.docx(30页珍藏版)》请在冰豆网上搜索。
hadoop安装配置文档
Hadoop安装配置
1.集群部署
集群的部署情况涉及到系统的权限以及添加hadoop用户操作,因此用“root”身份进行比较合适。
1.1环境说明
集群中包括3个节点:
1个Master,2个Salve,节点之间局域网连接,可以相互ping通。
节点IP地址分布如下:
机器名称
IP地址
Master.Hadoop
192.168.1.2
Slave1.Hadoop
192.168.1.3
Slave2.Hadoop
192.168.1.4
3个节点上均是CentOS6.0系统,并且创建一个相同的用户hadoop。
以192.168.1.2机器为例,创建hadoop用户的命令为:
[root@Masterhadoop]#groupaddhadoop(创建hadoop用户组hadoop)
[root@Masterhadoop]#useradd-ghadoophadoop(创建hadoop用户,并将其加入hadoop组内)
[root@Masterhadoop]#passwdhadoop(为hadoop用户创建密码)
linux系统中,对用户的权限设计完善。
root用户拥有最高权限,普通用户(如hadoop)权限较低。
涉及系统的操作,用hadoop用户可能无法执行,这就需要在hadoop用户和root用户之间进行切换。
从root用户切换到hadoop用户的命令为:
suhadoop,不需要输入密码直接切换。
从hadoop用户切换到root用户的命令为:
suroot,需要输入密码,验证后才能切换。
普通用户要获取root的权限,也可以不suroot,而是在命令前加上sudo字符,具体用法,可参考互联网。
1.2网络配置
下面的例子我们将以Master机器为例,即主机名为"Master.Hadoop",IP为"192.168.1.2"进行一些主机名配置的相关操作。
其他的Slave机器以此为依据进行修改。
1)修改当前机器名称
假定我们发现我们的机器的主机名不是我们想要的,通过对"/etc/sysconfig/network"文件修改其中"HOSTNAME"后面的值,改成我们规划的名称。
通过上面的命令我们从"/etc/sysconfig/network"中找到"HOSTNAME"进行修改,查看内容如下:
其他机器也变为对应的机器名称Slave1.Hadoop和Slave2.Hadoop
2)修改当前机器IP
假定我们的机器连IP在当时安装机器时都没有配置好,那此时我们需要对"ifcfg-eth0"文件进行配置,该文件位于"/etc/sysconfig/network-scripts"文件夹下。
查看"/etc/sysconfig/network-scripts/ifcfg-eth0"内容,如果IP不与环境说明的不符合,就行修改。
如果上图中IP与规划不相符,用下面命令进行修改:
vim/etc/sysconfig/network-scripts/ifcgf-eth0
修改完之后可以用"ifconfig"进行查看。
3)配置hosts文件(必须)
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。
当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。
我们要测试两台机器之间知否连通,一般用"ping机器的IP",如果想用"ping机器的主机名"发现找不见该名称的机器,解决的办法就是修改"/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"文件内容。
发现里面没有"192.168.1.3Slave1.Hadoop"内容,故而本机器是无法对机器的主机名为"Slave1.Hadoop"解析。
在进行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进行通信,而且还可以通过主机名进行通信。
所以在所有的机器上的"/etc/hosts"文件末尾中都要添加如下内容:
192.168.1.2Master.Hadoop
192.168.1.3Slave1.Hadoop
192.168.1.4Slave2.Hadoop
192.168.1.5Slave3.Hadoop
用以下命令进行添加:
vim/etc/hosts
添加结果如下:
现在我们在进行对机器为"Slave1.Hadoop"的主机名进行ping通测试,看是否能测试成功。
从上图中我们已经能用主机名进行ping通了,说明我们刚才添加的内容,在局域网内能进行DNS解析了,那么现在剩下的事儿就是在其余的Slave机器上进行相同的配置。
然后进行测试。
(备注:
当设置SSH无密码验证后,可以"scp"进行复制,然后把原来的"hosts"文件执行覆盖即可。
)
用下面命令进行修改当前机器的主机名(备注:
修改系统文件一般用root用户)
1.3所需软件
1)JDK软件
jdk-8u5-linux-i586.rpm可以去官网上下载
2)Hadoop软件
hadoop-2.2.0.tar.gz可以去官网上下载
2、SSH无密码验证配置
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(SecureShell)来启动和停止各个DataNode上的各种守护进程的。
这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。
由于是对hadoop用户进行无密码验证,所以该过程主要部分用“hadoop”身份进行。
图片中[hadoop@Master~]代表此时操作用户为hadoop,[root@Master~]代表操作用户为root,可仔细参考图片。
2.1安装和启动SSH协议
在"Hadoop集群(第1期)"安装CentOS6.0时,我们选择了一些基本安装包,所以我们需要两个服务:
ssh和rsync已经安装了。
可以通过下面命令查看结果显示如下:
rpm–qa|grepopenssh
rpm–qa|greprsync
假设没有安装ssh和rsync,可以通过下面命令进行安装。
yuminstallssh安装SSH协议
yuminstallrsync(rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)
servicesshdrestart启动服务
确保所有的服务器都安装,上面命令执行完毕,各台机器之间可以通过密码验证相互登。
2.2配置Master无密码登录所有Salve
1)SSH无密码原理
Master(NameNode|JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode|Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。
当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。
Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。
这就是一个公钥认证过程,其间不需要用户手工输入密码。
重要过程是将客户端Master复制到Slave上。
2)Master机器上生成密码对
在Master节点上执行以下命令:
ssh-keygen–trsa–P''
这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。
生成的密钥对:
id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。
查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。
接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。
cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
在验证前,需要做两件事儿。
第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。
使其无密码登录有效。
(1)修改文件"authorized_keys"
chmod600~/.ssh/authorized_keys
备注:
如果不进行设置,在验证时,扔提示你输入密码,在这里花费了将近半天时间来查找原因。
在网上查到了几篇不错的文章,把作为"Hadoop集群_第5期副刊_JDK和SSH无密码配置"来帮助额外学习之用。
(2)设置SSH配置
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。
RSAAuthenticationyes#启用RSA认证
PubkeyAuthenticationyes#启用公钥私钥配对认证方式
AuthorizedKeysFile.ssh/authorized_keys#公钥文件路径(和上面生成的文件同)
设置完之后记得重启SSH服务,才能使刚才设置有效。
servicesshdrestart
退出root登录,使用hadoop普通用户验证是否成功。
sshlocalhost
从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有的Slave机器上。
使用下面的命令格式进行复制公钥:
scp~/.ssh/id_rsa.pub远程用户名@远程服务器IP:
~/
例如:
scp~/.ssh/id_rsa.pubhadoop@192.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服务器用户hadoop的密码。
为了确保确实已经把文件传过去了,用SecureCRT登录Slave1.Hadoop:
192.168.1.3服务器,查看"/home/hadoop/"下是否存在这个文件。
从上面得知我们已经成功把公钥复制过去了。
(2)在"/home/hadoop/"下创建".ssh"文件夹
这一步并不是必须的,如果在Slave1.Hadoop的