集群准备
1、准备3台客户机(关闭防火墙、静态ip,主机映射、主机名称),主机名称分别为Hadoop1,hadoop2,hadoop3
2、安装jdk
3、配置ssh,免密登录
4、配置时间同步
集群规划
Hadoop1 | hadoop2 | hadoop3 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
TARN | NodeManager | ResourceManager NodeManager | NodeManager |
VMware虚拟机网络配置
step1:修改hostname
hostnamectl set-hostname hadoop1
step2:进入系统编辑网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" #改为静态ip
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="627140c3-13f1-48ba-a8cd-20a3b4eadf5e"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.***.150" #设置虚拟机的ip,要与主机IP在同一网段
NETMASK="255.255.255.0" #设置子网掩码
GATEWAY="192.168.***.2" #设置虚拟机网关,与主机相同
DNS1="114.114.114.114"
DNS2="8.8.8.8"
step3:重启网络
systemctl restart network
step4:测试网络
ping www.baidu.com
step5:关闭和禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
配置主机映射
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.***.150 hadoop1
192.168.***.160 hadoop2
192.168.***.170 hadoop3
安装jdk
step1:在opt下新建两个文件夹soft和install
cd /opt
mkdir software install
step2:将jdk安装包拷贝至software文件夹下
step3:解压jdk
tar -zxf jdk-8u111-linux-x64.tar.gz -C /opt/install/jdk180 #-C是解压到指定路径
step4:配置环境变量
vi /etc/profile
export JAVA_HOME=/opt/install/jdk180
export PATH=$JAVA_HOME/bin:$PATH
step5:刷新环境变量
source /etc/profile
step6:验证jdk是否安装成功
java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
将hadoop1克隆出2台虚拟机
VMware上有克隆的功能,只需在hadoop1这个虚拟机右击–>管理–>克隆,就可以克隆出两台和hadoop1环境一样的虚拟机,只需修改ip和hostname,hostname分别改为hadoop2与hadoop3,主机映射,因为在安装hadoop1时,已经配置好了,3台都配置上了,所以这里就不需要配置了。
在三台虚拟机上配置无密
在3台机器上分别执行如下语句,就是需要拷贝9次
ssh-keygen
#3次回车
#拷贝密钥
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
在hadoop1上安装hadoop
step1:将安装包拷贝至software文件夹中
step2:将hadoop安装包解压至install文件夹下
tar -zxf hadoop-2.6.0-cdh5.14.2.tar.gz -C /opt/install/hadoop260
step3:进入hadoop260,修改配置文件
cd /opt/install/hadoop260/etc/hadoop/
hadoop-env.sh
export JAVA_HOME=/opt/install/自己的路径
core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/install/hadoop/data/tmp</value>
</property>
hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:50090</value>
</property>
yarn-env.sh
export JAVA_HOME=/opt/install/jdk180
yarn-site.xml
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>
mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
slaves
vi slaves
把localhost删掉
hadoop1
hadoop2
hadoop3
hadoop安装完毕,利用scp将hadoop1上的hadoop的安装包远程发送给hadoop2和hadoop3
scp -r hadoop260/ root@hadoop2:$PWD #PWD拷贝至当前路径,就是install文件夹下
scp -r hadoop260/ root@hadoop3:$PWD
启动集群
step1:在hadoop1上格式化HDFS
bin/hdfs namenode -format
step2:启动HDFS【hadoop1】
sbin/start-dfs.sh
step3:启动Yarn【hadoop2】
sbin/start-yarn.sh
step4:jps和web页面查看【50070 和 8088端口】
时间同步(时间对不对不重要,重要的是3个节点的时间要一致)
step1:安装ntp【hadoop1】
rpm -qa|grep ntp
yum -y install ntp
vi /etc/ntp.conf
#修改1(设置本地网络上的主机不受限制。)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
#修改2(设置为不采用公共的服务器)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
添加3(添加默认的一个内部时钟数据,使用它为局域网用户提供服务。)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
step2:修改/etc/sysconfig/ntpd
vim /etc/sysconfig/ntpd
#增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
step3:重新启动ntpd
systemctl restart ntpd
step4:在hadoop2和hadoop3 上分别更新时间
ntpdate hadoop1 #以hadoop1上的时间为准
step5:在hadoop2和hadoop3上也要安装ntp
yum -y install ntp
step6:在hadoop2和hadoop3上执行如下代码
crontab -e
-----------------------------------
*/10 * * * * /usr/sbin/ntpdate hadoop1 #每10分钟同步一次时间