1、概述
2、Hadoop分布式集群搭建Hadoop安装分为三种方式,分别为单机、伪分布式、完全分布式,安装过程不难,在此主要详细叙述完全分布式的安装配置过程,毕竟生产环境都使用的完全分布式,前两者作为学习和研究使用。按照下述步骤一步一步配置一定可以正确的安装Hadoop分布式集群环境。
2.1、软件准备
2.2、环境准备
2.3、操作步骤
- 配置hosts
说明:配置hosts文件的作用,主要用于确定每个节点的IP地址,方便后续master节点能快速查询到并访问各个节点,hosts文件路径为/etc/hosts,三台服务器上的配置过程如下:
以下操作在三台服务器上都操作。
[root@master ~]# vi /etc/hosts
配置好之后在各台服务器上使用域名看是否能ping通
在master上ping slave1
![]()
在master上ping slave2
![]()
在slave1上ping master
![]()
在slave1上ping slave2
![]()
在slave2上ping master
![]()
在slave2上ping slave1
![]()
如果以上步骤均和图中操作一致则说明hosts没有配置错误,接下来关闭三台服务器的防火墙操作,以免在后面的操作引起不必要的错误。
![]()
- 创建Hadoop账户
说明:创建hadoop集群专门设置的一个用户组以及用户。
以下操作在三台服务器上都操作
#创建用户组为hadoop
#[root@master ~]# groupadd hadoop
添加一个hadoop用户,此用户属于hadoop组,并且具有root权限
[root@master ~]# useradd -s /bin/bash -d /home/hodoop -m hadoop -g hadoop -G root
#设置hadoop用户的密码 为hadoop(自定义即可)
[root@master ~]# passwd hadoop
更改用户 hadoop 的密码 。
新的 密码:
无效的密码: 它基于字典单词
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
#创建好账户之后最好用su hadoop验证下能否正常切换至hadoop账户
[root@slave1 ~]# su hadoop
[hadoop@slave1 root]$
至此创建hadoop账户步骤完成,很简单吧,创建hadoop密码建议三台服务器的hadoop账户密码均为一样,避免在后续的操作中出现不必要的麻烦和错误,因为后续很多地方需要输入hadoop密码。
- SSH无密码访问主机
说明:这一部分在搭建hadoop集群的环境过程很重要,非常重要,很多细小的点需要注意,请仔细按照步骤一步一步的来完成配置,在此也对SSH做一个简单的介绍,SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可靠性,公钥部分是公共部分,网络上任一节点均可以访问,私钥主要用来对数据进行加密。以防数据被盗取,总而言之,这是一种非对称加密算法,想要破解还是非常有难度的,hadoop集群的各个节点之间需要进行数据访问,被访问的节点对于访问用户节点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证以及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个节点的访问均需要进行验证,其效率将会大大的降低,所以才需要配置SSH免密码的方法直接远程连入被访问的节点,这样将大大提高访问效率。
以下操作三台服务器均要操作
#确定每台服务器的是否安装ssh服务,如下则说明ssh服务已经正常安装,下面操作为通过ssh远程访问登陆自己
[root@master ~]# ssh localhost
root@localhost's password:
Last login: Fri Jun 26 16:48:43 2015 from 192.168.1.102
[root@master ~]#
#退出当前登陆
[root@master ~]# exit
logout
Connection to localhost closed.
[root@master ~]#
#当然还可以通过以下方式验证ssh的安装(非必须)
![]()
#如果没有上述截图所显示的,可以通过yum或者rpm安装进行安装(非必须)
[root@master ~]# yum install ssh
#安装好之后开启ssh服务,ssh服务一般又叫做sshd(非必须,前提是没有安装ssh)
[root@master ~]# service sshd start
#或者使用/etc/init.d/sshd start(非必须)
[root@master ~]# /etc/init.d/sshd start
#查看或者编辑ssh服务配置文件(必须,且三台服务器都要操作)
[root@master ~]# vi /etc/ssh/sshd_config
#找到sshd_config配置文件中的如下三行,并将前面的#去掉
![]()
说明:当然你可以在该配置文件中对ssh服务进行各种配置,比如说端口,在此我们就只更改上述图中三行配置,其他保持默认即可
#重启ssh服务(必须)
[root@master ~]# service sshd restart
停止 sshd: [确定]
正在启动 sshd: [确定]
说明:接下来的步骤非常关键,严格对照用户账户,以及路径进行操作
#每个节点分别产生公私钥。
[hadoop@master ~]$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
![]()
以上是产生公私密钥,产生的目录在用户主目录下的.ssh目录下
![]()
说明:id_dsa.pub为公钥,id_dsa为私钥。
#将公钥文件复制成authorized_keys文件,这个步骤很关键,且authorized_keys文件名要认真核对,它和之前的步骤修改sshd_config中需要去掉注释中的文件名是一致的,不能出错。
[hadoop@master .ssh]$ cat id_dsa.pub >> authorized_keys
![]()
#单机回环ssh免密码登陆测试
![]()
可以注意到红线框中标注,为什么还需要提示输入确认指令以及密码,不是免密码登陆吗?先将疑问抛在此处,在后续操作中我们解决这个问题。
#修改authorized_keys文件权限为600
[hadoop@master.ssh]$ chmod 600 authorized_keys
以上步骤三台服务器均要操作,再次提醒!!!
#让主节点(master)能够通过SSH免密码登陆两个节点(slave)
说明:为了实现这个功能,两个slave节点的公钥文件中必须包含主节点(master)的公钥信息,这样当master就可以顺利安全地访问这两个slave节点了
注意:以下操作只在slave1和slave2节点上操作
[hadoop@slave1 .ssh]$ scp hadoop@master:~/.ssh/id_dsa.pub ./master_dsa.pub
![]()
上图中密码红线框处很关键,是master主机的hadoop账户的密码,如果你三台服务器hadoop账户的密码设置不一致,就有可能出现忘记或者输入错误密码的问题。同时在.ssh目录下多出了master_dsa.pub公钥文件(master主机中的公钥)
#将master_dsa.pub文件包含的公钥信息追加到slave1的authorized_keys
[hadoop@slave1 .ssh]$ cat master_dsa.pub >> authorized_keys
说明:操作至此还不能实现master中ssh免密码登陆slave1,为什么呢?因为ssh访问机制中需要远程账户有权限控制
#修改authorized_keys文件权限为600
[hadoop@slave1 .ssh]$ chmod 600 authorized_keys
#重启sshd服务,此时需要切换账号为root账号
[root@slave1 hodoop]# service sshd restart
停止 sshd: [确定]
正在启动 sshd: [确定]
#在master节点中实现ssh slave1免密码远程登陆slave1
[hadoop@slave1 ~]$ ssh slave1
The authenticity of host 'slave1 (::1)' can't be established.
RSA key fingerprint is c8:0e:ff:b2:91:d7:3a:bb:63:43:c8:0a:3e:2a:94:04.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave1' (RSA) to the list of known hosts.
Last login: Sun Jun 28 02:20:38 2015 from master
[hadoop@slave1 ~]$ exit
logout
Connection to slave1 closed.
[hadoop@slave1 ~]$ ssh slave1
Last login: Sun Jun 28 02:24:05 2015 from slave1
[hadoop@slave1 ~]$
说明:上述红色标注命令处在master节点首次远程访问slave1时,需要yes指令确认链接,当yes输入链接成功后,退出exit,在此ssh slave1时,就不要求输入yes指令,此时你就可以像上述显示中一样通过hadoop账户登陆到slave1中了。
slave2节点也要进行上述操作,最终实现如下即可表明master节点可以免密码登陆到slave2节点中
[hadoop@master ~]$ ssh slave2
Last login: Sat Jun 27 02:01:15 2015 from localhost.localdomain
[hadoop@slave2 ~]$
至此SSH免密码登陆各个节点配置完成。
- 安装JDK
此过程请参考以下操作,最终结果保证三台服务器jdk均能正常运行即可
http://www.cnblogs.com/zhoulf/archive/2013/02/04/2891608.html
注意选择服务器对应的版本
<