hadoop和spark主备HA配置说明
1. 环境说明
集群中包括4个节点:2个Master(主备),2个Salve,节点之间局域网连接,可以相互ping通。节点IP地址分布如下:
Hadoop HA集群:
IP地址 |
hostname |
role |
10.12.0.240 |
master |
ActiveNameNode |
10.12.0.243 |
standyMaster |
StandByNameNode |
10.12.0.241 |
slave1 |
DataNode1 |
10.12.0.242 |
slave2 |
DataNode2 |
Spark HA集群:
IP地址 |
hostname |
role |
10.12.0.240 |
master |
Master |
10.12.0.243 |
standyMaster |
StandBy Master |
10.12.0.241 |
slave1 |
worker |
10.12.0.242 |
slave2 |
worker |
2. 环境配置
2.1关闭防火墙
在root用户关闭防火墙
永久关闭防火墙,重启后不变:
chkconfig iptablesoff/on
关闭防火墙:( 即时生效,重启后失效。先关闭防火墙,再永久关闭防火墙。)
service iptables stop
/etc/init.d/iptables stauts 查看防火墙状态
2.2创建用户组(CentOS 6.5)
[root@master ~]#groupadd hadoop
[root@master ~]#useradd -g hadoop hadoop
[root@master ~]#passwd hadoop
[root@master ~]# 两次输入密码
测试创建用户
[root@master ~]# suhadoop
[hadoop@master root]$
su root 回到root用户
vim /etc/sudoers
为hadoop用户分配权限,需先修改sudoers文件的权限。
执行命令: chmod u+w /etc/sudoers
再添加:hadoop ALL=(ALL) ALL
2.3网络配置
下面的例子我们将以Master机器为例,即主机名为"Master ",IP为"10.12.0.93"进行一些主机名配置的相关操作。其他的Slave机器以此为依据进行修改。
1)查看当前机器名称
用下面命令进行显示机器名称,如果跟规划的不一致,要按照下面进行修改。
hostname
上图中,用"hostname"查"master"机器的名字为"master ",与我们预先规划的一致。其他2台机器分别改为slave1和slave2。
2)修改当前机器名称
假定我们发现我们的机器的主机名不是我们想要的,通过对"/etc/sysconfig/network"文件修改其中"HOSTNAME"后面的值,改成我们规划的名称。
这个"/etc/sysconfig/network"文件是定义hostname和是否利用网络的不接触网络设备的对系统全体定义的文件。
设定形式:设定值=值
"/etc/sysconfig/network"的设定项目如下:
NETWORKING 是否利用网络
GATEWAY 默认网关
IPGATEWAYDEV 默认网关的接口名
HOSTNAME 主机名
DOMAIN 域名
用下面命令进行修改当前机器的主机名(备注:修改系统文件一般用root用户)
vim/etc/sysconfig/network
通过上面的命令我们从"/etc/sysconfig/network"中找到"HOSTNAME"进行修改,查看内容如下:
3)修改当前机器IP
假定我们的机器连IP在当时安装机器时都没有配置好,那此时我们需要对"ifcfg-eth0"文件进行配置,该文件位于"/etc/sysconfig/network-scripts"文件夹下。
在这个目录下面,存放的是网络接口(网卡)的制御脚本文件(控制文件),ifcfg- eth0是默认的第一个网络接口,如果机器中有多个网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-eth2,ifcfg- eth3,……。
这里面的文件是相当重要的,涉及到网络能否正常工作。
设定形式:设定值=值
设定项目项目如下:
DEVICE 接口名(设备,网卡)
BOOTPROTO IP的配置方法(static:固定IP, dhcpHCP, none:手动)
HWADDR MAC地址
ONBOOT 系统启动的时候网络接口是否有效(yes/no)
TYPE 网络类型(通常是Ethemet)
NETMASK 网络掩码
IPADDR IP地址
IPV6INIT IPV6是否有效(yes/no)
GATEWAY 默认网关IP地址
DSN1 DSN服务器地址
查看"/etc/sysconfig/network-scripts/ifcfg-eth1内容,此处实际网卡名称eth1
如果上图中IP与规划不相符,用下面命令进行修改:
vim/etc/sysconfig/network-scripts/ifcgf-eth1
修改完之后可以用"ifconfig"进行查看。
4)配置hosts文件(必须)
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。
vi /etc/hosts
2.4配置Master无密码登录所有Salve
1)SSH无密码原理
master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器salve(DataNode | Tasktracker)上时,需要在master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当master通过SSH连接salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给master。master收到加密数之后再用私钥解密,并将解密数回传给slave,slave确认解密数无误之后就允许master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端master复制到slave上。
(注:无密码说明从网上拷贝过来,图片Master对应master,Slave1对应slave1)
2)mater机器上生成密码对
在mater节点上执行以下命令:
ssh-keygen -t rsa -P ''
这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。
查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。
接着在master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。