Hadoop 完全分布式
jdk下载
链接:https://pan.baidu.com/s/18E0l-uTdZyrIvcqn7TCttw
提取码:bb63
hadoop下载
链接:https://pan.baidu.com/s/18ZG-_g7BmcFws1VgoxFJ8g
提取码:t4p9
集群规划
hadoop2 | hadoop3 | hadoop4 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
IP | 192.168.197.120 | 192.168.197.130 | 192.168.197.140 |
集群准备
准备3台客户机(关闭防火墙、静态ip,主机映射、主机名称),主机名称分别hadoop2,hadoop3,hadoop4
主机名称分别修改:
hostnamectl set-hostname hadoop2
hostnamectl set-hostname hadoop3
hostnamectl set-hostname hadoop4
配置静态ip分别配置,只需要改变ip地址,以hadoop2为例
vi /etc/sysconfig/network-scripts/ifcfg-ens33
-----------------------------------------------------
修改1 BOOTPROTO="static"
修改2 ONBOOT="yes"
追加如下内容(IP地址,子网掩码,网关,DNS):
IPADDR="192.168.197.120"
NETMASK="255.255.255.0"
GATEWAY="192.168.197.2"
DNS1="114.114.114.114"
DNS2="8.8.8.8"
配置完ip,重启网络服务
systemctl restart network
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
主机映射(三个ip都要添加进去):
vi /etc/hosts
-----------------------------------------------------
192.168.197.120 hadoop2
192.168.197.130 hadoop3
192.168.197.140 hadoop4
将压缩包上传到Linux的/opt目录下,创建soft文件夹用于存储安装文件
安装jdk和hadoop,配置环境变量
#解压
mkdir soft
tar zxf jdk-8u171-linux-x64.tar.gz -C /opt/soft/jdk180
tar -zxf hadoop-2.6.0-cdh5.14.2.tar.gz -C /opt/soft/hadoop260
#配置环境变量
vi /etc/profile
#JAVA
export JAVA_HOME=/opt/soft/jdk180
export PATH=$JAVA_HOME/bin:$PATH
#HADOOP
export HADOOP_HOME=/opt/soft/hadoop260
export PATH=$HADOOP_HOME/bin:$PATH
#刷新环境变量
source /etc/profile
#验证
java -version
能显示JDK版本信息:
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
配置ssh,免密登陆
(三台客户端各自进行如下操作)
ssh-keygen
#3次回车,生成公私钥
#进入 .ssh文件夹,查看公私钥
cd .ssh
ls
-----------------------------------------------------------------------
authorized_keys id_rsa id_rsa.pub known_hosts
#拷贝密钥
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh-copy-id hadoop4
#免密访问(第一次需要输入密码)
ssh hadoop2
ssh hadoop3
ssh hadoop4
exit 退出登录
修改配置文件
在【hadoop2】上进行如下7个操作
进入hadoop配置文件目录 /opt/soft/hadoop260/etc/hadoop
修改1
vi hadoop-env.sh
--------------------------------------------
export JAVA_HOME=/opt/soft/jdk180 #此处为jdk安装目录
修改2 namenode 在 hadoop2上
vi core-site.xml
----------------------------------------------------
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.197.120:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/soft/hadoop260/data/tmp</value>
</property>
修改3 secondarynamenode 在hadoop4上
vi hdfs-site.xml
--------------------------------------------------------------------
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.197.140:50090</value>
</property>
修改4 JAVA_HOME修改
yarn-env.sh
-----------------------------
export JAVA_HOME=/opt/soft/jdk180
修改5 resourcemanager在hadoop3上
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>192.168.197.130</value>
</property>
修改6
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
--------------------------------------------------
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
修改7 slaves中删除loaclhost
vi slaves
------------------------------
hadoop2
hadoop3
hadoop4
集群分发配置文件,hadoop3和hadoop4中hadoop的配置和hadoop2一样。
scp命令将hadoop2上hadoop260中所有文件远程拷贝到hadoop3和hadoop4对应的文件中。
scp -r /opt/soft/hadoop260 root@hadoop3:$PWD
scp -r /opt/soft/hadoop260 root@hadoop3:$PWD
启动集群
格式化HDFS
hdfs namenode -format
启动HDFS【hadoop2】,进入hadoop安装目录,输入如下命令
sbin/start-dfs.sh
启动Yarn【hadoop3】,进入hadoop安装目录,输入如下命令
sbin/start-yarn.sh
jps和web页面查看【50070 和 8088端口】
hadoop2:NN,NM,DN
hadoop3:NM,RM,DN
hadoop4:NM,DN
访问192.168.197.120:50070,NameNode存储地址
访问192.168.197.130:8088,Yarn的ResourceManager地址
时间同步
安装ntp【hadoop2】
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
修改/etc/sysconfig/ntpd
vim /etc/sysconfig/ntpd
-----------------------
# 增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
重新启动ntpd
service ntpd status
service ntpd start
chkconfig ntpd on
hadoop3和hadoop4上同步时间到hadoop2
crontab -e
----------------
*/10 * * * * /usr/sbin/ntpdate hadoop2
crontab机制如下:
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed