内存4G,硬盘50G
1. 安装好linux
/boot 200M
/swap 2g
/ 剩余
2. *安装VMTools(选装)
3. 关闭防火墙(★★★)
sudo service iptables stop
sudo chkconfig iptables off
4. 设置静态IP,改主机名
编辑vim /etc/sysconfig/network-scripts/ifcfg-eth0
改成
=================================
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="eth0"
IPADDR=192.168.8.101
PREFIX=24
GATEWAY=192.168.8.2
DNS1=192.168.8.2
=================================
编辑vim /etc/sysconfig/network
改HOSTNAME=那一行
5. 配置/etc/hosts
vim /etc/hosts
=============================
192.168.8.100 hadoop100
192.168.8.101 hadoop101
192.168.8.102 hadoop102
192.168.8.103 hadoop103
192.168.8.104 hadoop104
192.168.8.105 hadoop105
192.168.8.106 hadoop106
192.168.8.107 hadoop107
192.168.8.108 hadoop108
192.168.8.109 hadoop109
=============================
6. 创建一个一般用户atguigu,给他配置密码
useradd atguigu
passwd atguigu
7. 配置这个用户为sudoers
visudo
在root ALL=(ALL) ALL
添加atguigu ALL=(ALL) NOPASSWD:ALL
保存时wq!强制保存
8. *在/opt目录下创建两个文件夹module和software,并把所有权赋给atguigu
mkdir /opt/module /opt/software
chown atguigu:atguigu /opt/module /opt/software
9. 关机,快照,克隆
从这里开始要以一般用户登陆
10. 克隆的虚拟机改IP
修改主机名
vim /etc/sysconfig/network
删除eth0,把eth1改为eth0,复制ATTR{address}里面的地址到HWADDR
vim /etc/udev/rules.d/70-persistent-net.rules
修改IP和HWADDR
reboot
11.JDK和Hadoop的安装
在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器
1. 拷贝文件到/opt/software,两个tar包
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
2.配置环境变量
cd /etc/profile.d
sudo vim jdk.sh
添加内容:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
sudo vim hadoop.sh
添加内容:
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
新开一个窗口使配置的环境生效
12. 搞一个分发脚本
cd ~
vim xsync
内容如下:
=================================================================
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $USER@$host:$pdir
else
echo $file does not exists!
fi
done
done
==============================================================
chmod +x xsync
sudo cp xsync /bin(sudo mv xsync /bin)
sudo xsync /bin/xsync
13.配置免密登陆
(1)安全方法:
1. 生成密钥对
ssh-keygen -t rsa 三次回车
2. 发送公钥到本机
ssh-copy-id hadoop102 输入一次密码
三台机器需要互相copy,自己和自己也需要copy,共9次
(2)快捷方法(不安全):
1. 生成密钥对
ssh-keygen -t rsa 三次回车
2. 发送公钥到本机
ssh-copy-id hadoop102 输入一次密码
3. 分别ssh登陆一下所有虚拟机
ssh hadoop103
exit
ssh hadoop104
exit
4. 把/home/atguigu/.ssh 文件夹发送到集群所有服务器
xsync /home/atguigu/.ssh
14.集群部署Hadoop和JDK
cd /opt/module/
拷贝jdk和hadoop
xsync hadoop-2.7.2 jdk1.8.0_144 jdk1.8.0_144
配置环境变量
sudo xsync /etc/profile.d(因为root用户没有配置免密登录,所以需要输入密码)
部署完重新开一个各自的窗口使配置生效
新开窗口输入java -version和hadoop version检验是否成功
打开Notepad++,用NppFTP连接hadoop102,在/opt/module/Hadoop-2.7.2/etc/hadoop目录下修改下列配置文件
15. 配置Core-site.xml
==============================================================
==============================================================
16. 配置hdfs-site.xml
==============================================================
==============================================================
17. 配置yarn-site.xml
==============================================================
==============================================================
18. 配置mapred-site.xml
==============================================================
==============================================================
启动历史服务器:mr-jobhistory-daemon.sh start historyserver
19. 配置Slaves
==============================================================
hadoop102
hadoop103
hadoop104
==============================================================
20. 分发配置文件
xsync /opt/module/hadoop-2.7.2/etc
21. 格式化Namenode 在hadoop102
hdfs namenode -format
22. 启动hdfs
start-dfs.sh
23. 在配置了Resourcemanager机器上执行
在Hadoop103上启动start-yarn.sh
在Hadoop104上启动历史服务器:mr-jobhistory-daemon.sh start historyserver
浏览器访问:
hadoop102:50070这个是namenode
hadoop104:50090这个是secondarynamenode
若是都可以ping通但是浏览器无法打开,需要进入虚拟机,把每一个机器的防火墙重启在关闭
service iptables restart
service iptables stop
之后重新用浏览器访问,即可成功
24.官方案例测试是否搭建成功
mkdir input
vim input/input
abc
def efg
asd
hadoop fs -put input /
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output
25. 关 stop-dfs.sh stop-yarn.sh
26. hadoop-daemon.sh start namenode或datanode
yarn-daemon.sh start resourcemanager或nodemanager
如果集群出了问题
stop-dfs.sh
stop-yarn.sh
#三台机器都要执行
cd $HADOOP_HOME
rm -rf data logs
回到21
★添加jpsall脚本
[atguigu@hadoop102 ~]$ vim jpsall
添加如下内容:
#!/bin/bash
for i in hadoop102 hadoop103 hadoop104
do
echo ==================== $i ========================
ssh $i "jps $@" | grep -v Jps
done
[atguigu@hadoop102 ~]$ chmod +x jpsall
[atguigu@hadoop102 ~]$ sudo mv jpsall /bin
[atguigu@hadoop102 ~]$ jpsall
27. 配置时间同步(必须root用户)
1.(1)检查ntp是否安装
[root@hadoop102 桌面]# rpm -qa|grep ntp
结果:
ntp-4.2.6p5-10.el6.centos.x86_64
fontpackages-filesystem-1.41-1.1.el6.noarch
ntpdate-4.2.6p5-10.el6.centos.x86_64
(2)查看ntp服务
每一个机器输入:
sudo service ntpd status
结果:
ntpd 已停
(已停为正常状态,若显示正在运行需要先停止服务sudo service ntpd stop,
暂时关闭ntp的自动启动:sudo chkconfig ntpd off)
(3)切换成root用户
su -
提示输入密码
(4)修改ntp配置文件
[root@hadoop102 桌面]# vi /etc/ntp.conf
修改内容如下:
a)修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为
restrict 192.168.8.0 mask 255.255.255.0 nomodify notrap
b)修改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
c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
将下面两句复制粘贴到ntp.conf下
server 127.127.1.0
fudge 127.127.1.0 stratum 10
(3)修改/etc/sysconfig/ntpd 文件
[root@hadoop102 桌面]# vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
(4)重新启动ntpd服务
[root@hadoop102 桌面]# service ntpd status
ntpd 已停
[root@hadoop102 桌面]# service ntpd start
正在启动 ntpd: [确定]
(5)设置ntpd服务开机启动
[root@hadoop102 桌面]# chkconfig ntpd on
2. 其他机器配置(必须root用户)
(1)在其他机器配置10分钟与时间服务器同步一次
[root@hadoop103桌面]# crontab -e
编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop102
(2)修改任意机器时间
[root@hadoop103桌面]# date -s "2017-9-11 11:11:11"
(3)十分钟后查看机器是否与时间服务器同步
[root@hadoop103桌面]# date
(★★★)说明:测试的时候可以将10分钟调整为1分钟,节省时间。