1 实验环境
64位centos6.5 ,安装参考链接。
jdk-8u101-linux-x64.tar,安装参考链接。
hadoop-1.2.1.tar.gz
集群架构:包括4个节点:1个Master,3个Salve
节点IP地址分布如下:
主机名 IP | 系统版本 | Hadoop | node | hadoop进程名 |
---|---|---|---|---|
master | 192.168.8.200 | CentOS 6.5 | master | namenode,jobtracker |
slave1 | 192.168.8.201 | CentOS 6.5 | slave | datanode,tasktracker |
slave2 | 192.168.8.202 | CentOS 6.5 | slave | datanode,tasktracker |
slave3 | 192.168.8.203 | CentOS 6.5 | slave | datanode,tasktracker |
四个节点上均是CentOS 6.5系统,并且有一个相同的用户hadoop。master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。
2 配置网络
1.修改主机名
master:
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
slave1
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=slave1
slave2
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=slave2
slave3
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=slave3
2.修改ip地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static #dhcp改为static
ONBOOT=yes #开机启用本配置
IPADDR=192.168.8.201 #静态IP
GATEWAY=192.168.8.1 #默认网关
NETMASK=255.255.255.0 #子网掩码
service network restart
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static #dhcp改为static
ONBOOT=yes #开机启用本配置
IPADDR=192.168.8.201 #静态IP
GATEWAY=192.168.8.1 #默认网关
NETMASK=255.255.255.0 #子网掩码
service network restart
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static #dhcp改为static
ONBOOT=yes #开机启用本配置
IPADDR=192.168.8.202 #静态IP
GATEWAY=192.168.8.1 #默认网关
NETMASK=255.255.255.0 #子网掩码
service network restart
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static #dhcp改为static
ONBOOT=yes #开机启用本配置
IPADDR=192.168.8.203 #静态IP
GATEWAY=192.168.8.1 #默认网关
NETMASK=255.255.255.0 #子网掩码
service network restart
3.修改ip地址和主机名的映射关系
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.200 master
192.168.8.201 slave1
192.168.8.202 slave2
192.168.8.203 slave3
3 centos6.5关闭防火墙和SELinux(这里只示范master)
关闭命令: service iptables stop
永久关闭防火墙:chkconfig iptables off
两个命令同时运行,运行完成后查看防火墙关闭状态
service iptables status
使用getenforce命令查看是否关闭
修改vi /etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled,执行该命令后重启机器生效
查看:
4 创建用户(用来操作hadoop)(这里只示范master)
- 创建新用户
[root@localhost ~]# adduser pang
为这个用户初始化密码,linux会判断密码复杂度,不过可以强行忽略:
[root@localhost ~]# passwd pang
更改用户 pang的密码
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
2.授权
[root@localhost ~]# ls -l /etc/sudoers
-r--r----- 1 root root 4251 9月 25 15:08 /etc/sudoers
sudoers只有只读的权限,如果想要修改的话,需要先添加w权限:
[root@localhost ~]# chmod -v u+w /etc/sudoers
mode of "/etc/sudoers" changed from 0440 (r--r-----) to 0640 (rw-r-----)
然后就可以添加内容了,在下面的一行下追加新增的用户:
[root@localhost ~]# vim /etc/sudoers
## Allow root to run any commands anywher
root ALL=(ALL) ALL
pangALL=(ALL) ALL #这个是新增的用户
wq保存退出,这时候要记得将写权限收回:
[root@localhost ~]# chmod -v u-w /etc/sudoers
mode of "/etc/sudoers" changed from 0640 (rw-r-----) to 0440 (r--r-----)
这时候使用新用户登录,使用sudo:
第一次使用会提示你,你已经化身超人,身负责任。而且需要输入密码才可以下一步。如果不想需要输入密码怎么办,将最后一个ALL修改成NOPASSWD: ALL
。
4 SSH免密登陆
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。以本文中的四台机器为例,现在Master是主节点,他须要连接Slave1、Slave2和Slave3。须要确定每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动。
切换到hadoop用户( 保证用户hadoop可以无需密码登录,因为我们后面安装的hadoop属主是hadoop用户。)需要使得Master到Slave1,Slave2,Slave3免密登陆,以及Slave1,Slave2,Slave3到Master的免密登陆,以及Master,Slave1,Slave2,Slave3到自身回环口的免密登陆
在每台主机都生成密钥:
注意是在cmj用户之下,而不是root,因为我们最终是要使用cmj用户来使用hadoop,而你在cmj用户下配置免密登陆后,切换至root用户或者其他用户的使用ssh登陆时,仍然需要密码。
#su pang
#ssh-keygen -t rsa
#cat ~/.ssh/id_rsa.pub
这个命令生成一个密钥对:id_rsa(私钥文件)和id_rsa.pub(公钥文件)。默认被保存在~/.ssh/目录下。
master服务器生成authorized_keys文件,并把公钥写入:cat id_rsa.pub >> authorized_keys。
然后把master服务器authorized_keys文件复制到slave1服务器中:
scp authorized_keys [email protected]:/home/pang/.ssh