1、 环境: 3台CentOS764位 Hadoop2.6.1
(1).安装centos 7
(2).修改三台服务器/etc下的hosts和hostname:
三台服务器的Hostname分别修改:master、slave1、slave2
查询主机状态并更改主机名
hostnamectl status
hostnamectlset-hostname [更改后的主机名]
Vim /etc/sysconfig/network-script/ifcfg-ens33
设置IPADDR、GATEWAY、DNS、onboot=yes
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=8af8b865-d42e-40f2-9b15-1415e251ccad
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.122.2
GATEWAY=192.168.122.255
NETMASK=255.255.255.0
DNS=8.8.8.8
三台服务器的Hosts文件修改为一致的:
192.168.0.2 master-hadoop
192.168.0.3 slave1-hadoop
192.168.0.4 slave2-hadoop
注意:这里的IP为三台主机实际IP地址.
(3). 关闭防火墙 (三台机器全部关闭)
# systemctlstatus firewalld.service --查看防火墙状态
# systemctl stopfirewalld.service --关闭防火墙
# systemctldisable firewalld.service --永久关闭防火墙
2、 SSH免密码登录设置.
因为Hadoop需要通过SSH登录到各个节点进行操作,我用的是root用户,每台服务器都生成公钥,再合并到authorized_keys。
(1)CentOS默认没有启动ssh无密登录,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置,
#RSAAuthentication yes
#PubkeyAuthentication yes
(2)输入命令,ssh-keygen -trsa,生成key,都不输入密码,一直回车,/root就会生成.ssh文件夹,每台服务器都要设置,
(3)合并公钥到authorized_keys文件,在Master服务器,进入/root/.ssh目录,通过SSH命令合并,
cat id_rsa.pub>> authorized_keys
//ssh [email protected] cat~/.ssh/id_rsa.pub>> authorized_keys
//ssh [email protected] cat~/.ssh/id_rsa.pub>> authorized_keys
每台服务器都要合并公钥
(4)把Master服务器/root/.ssh的authorized_keys、known_hosts两个文件复制到两台Slave服务器的/root/.ssh目录
在两台slave服务器上执行:
/sbin/restorecon -Rv /root/.ssh
(5)完成,[email protected]、ssh [email protected]就不需要输入密码了
3、 安装JDK
先卸载系统原版本
# java –version
使用# rpm -qa | grep java 会看到自带的Java
javapackages-tools-3.4.1-6.el7_0.noarch
tzdata-java-2014i-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64
java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64
python-javapackages-3.4.1-6.el7_0.noarch
卸载JDK,执行以下操作:
# rpm -e --nodeps tzdata-java-2014i-1.el7.noarch
# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64
# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64
安装新的JDK
上传新的jdk-8u25-linux-x64.rpm软件到/usr/local/执行以下操作:
# rpm -ivh jdk-8u25-linux-x64.rpm
JDK默认安装在/usr/java中。
验证安装
执行以下操作,查看信息是否正常:
# java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
配置环境变量
修改系统环境变量文件
#vim /etc/profile
向文件里面追加以下内容:
JAVA_HOME=/usr/java/jdk1.8.0_25
JRE_HOME=/usr/java/jdk1.8.0_25/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使修改生效
# source /etc/profile //使修改立即生效
4、安装Hadoop2.6.1。只需要在Master服务器解压后配置,三台主机配置是一样的,可直接复制到Slave服务器 无需再到slave服务器配置。
(1)把“hadoop-2.6.1.tar.gz”,放到master的/home/hadoop目录下
(2)解压,输入命令,tar -xzvfhadoop-2.6.1.tar.gz
(3)在/home/hadoop目录下创建数据存放的文件夹,tmp、dfs、dfs/data、dfs/name
5、配置/home/hadoop/hadoop-2.6.1/etc/hadoop目录下的core-site.xml。这个文件是指定 NameNode的host名/ip和端口号,端口号可以根据自己的需要修改:
6、配置/home/hadoop/hadoop-2.6.1/etc/hadoop目录下的hdfs-site.xml 。这个文件是配置HDFS的namenode和datanode的存储路径、网络访问端口。
7、配置/home/hadoop/hadoop-2.6.1/etc/hadoop目录下的mapred-site.xml.template要改成.xml文件。该文件用于指定MapReduce使用的框架和设置MapReduce的web访问端口。
8、配置/home/hadoop/hadoop-2.6.1/etc/hadoop目录下的yarn-site.xml 。这个文件是设置nodemanager和resourcemanager的web访问端口。
9、配置/home/hadoop/hadoop-2.6.1/etc/hadoop目录下hadoop-env.sh、yarn-env.sh,给这两个文件添加JAVA变量,否则Hadoop无法找到Java运行环境。在末尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_60
10、修改/home/hadoop/hadoop-2.6.1/etc/hadoop目录下的slaves文件,删除里面默认的“localhost”,输入两台slave的主机名:
slave1-hadoop
slave2-hadopp
11、将配置好的Hadoop复制到各个节点上的/home/路径下,可以通过远程传输命令scp传送到slave服务器上面或者使用其他方式拷贝。在终端执行:
scp -r /home/hadoop slave2-hadoop:/home/
12、在Master服务器启动hadoop,从节点会自动启动,进入/home/hadoop/hadoop-2.6.1目录
在vi ~/.bash_profile配置如下:
export HADOOP_HOME=/home/hadoop/hadoop-2.6.1
export PATH=$PATH:$HADOOP_HOME/bin
(1)初始化:./bin/hdfs namenode-format
(2)全部启动sbin/start-all.sh
(3)停止:sbin/stop-all.sh
13、安装完成后在master和slave1、slave2的终端输入命令jps,可以看到相以下息表示部署完成。
16288 SecondaryNameNode
16681 Jps
16107 NameNode
16427 ResourceManager