一、创建虚拟机
1、新建虚拟机hadoop201
2、更改虚拟网络模式
3、更改IP
右键单击小电脑—>选择“Edit Connections”—>选中"System eth0"—>“edit”—>进行如下图3的编辑
4、重启网卡并检验是否能连接上网(在终端输入)
5、关闭hadoop201,克隆另外两台虚拟机
二、修改为静态IP
1、开启虚拟机
2、修改虚拟机的MAC地址
2.1、在终端命令窗口输入:
# vim /etc/udev/rules.d/70-persistent-net.rules
2.2、 # vim /etc/sysconfig/network-scripts/ifcfg-eth0
2.3、对于hadoop202:
# vim /etc/udev/rules.d/70-persistent-net.rules
2.4、 # vim /etc/sysconfig/network-scripts/ifcfg-eth0
2.5、对于hadoop203:
# vim /etc/udev/rules.d/70-persistent-net.rules
2.6、# vim /etc/sysconfig/network-scripts/ifcfg-eth0
3、重启网卡
# service network restart
尝试能否拼通网络:# ping baidu.com
4、修改主机名
4.1、查看主机名:# hostname
4.2、进入network文件进行修改:# vim /etc/sysconfig/network
4.3、修改主机名与IP地址的映射关系:# vim /etc/hosts
4.4、重启设备使其生效:# reboot
4.5、查看是否生效:# hostname
4.6、修改Windows系统的hosts文件,以便于用Windows下eclipse远程链接linux hadoop集群做开发。路径:C:\Windows\System32\drivers\etc\hosts
4.7、关闭防火墙
三、配置ssh免密码登录,支持无缝式工作,很方便的登录其他虚拟机。
进入我的home目录:# cd ~
生成秘钥:# ssh-keygen -t rsa
拷贝到目标机器上(本台机器上也需要配置):
# ssh-copy-id hadoop201
# ssh-copy-id hadoop202
# ssh-copy-id hadoop203
四、编写集群分发脚本
作用:循环复制文件到所有节点的相同目录下
1、编写脚本
# cd /usr/local/bin
# vim xsync
插入如下内容:
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0));
then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=201; host<204; host++));
do
#echo $pdir/$fname $user@hadoop$host:$pdir
echo --------------- hadoop$host ----------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
2、使脚本具有执行权限及修改其属主
# chmod 777 xsync
# chown hadoop:hadoop -R xsync
五、编写集群操作脚本
作用:在所有主机上同时执行相同的命令(xcall + 命令(需要跟上命令的绝对路径))
1、编写操作脚本
# cd /usr/local/bin
#vim xcall
添加如下内容:
#!/bin/bash
pcount=$#
if((pcount==0));
then
echo no args;
exit;
fi
echo -------------localhost----------
$@
for((host=201; host<204; host++));
do
echo ----------hadoop$host---------
ssh hadoop$host $@
done
2、使其具有执行权限及修改其属主
# chmod 777 xcall
# chown hadoop:hadoop xcall
六、安装jdk
1、设置hadoop用户具有root权限:# vim /etc/sudoers
强制保存:wq!
2、在opt目录下创建文件夹:# cd /opt
# mkdir software module
修改文件夹属主:# chown hadoop:hadoop software
# chown hadoop:hadoop module
3、安装
3.1、查询是否安装有java软件:# rpm -qa|grep java
如果安装的版本低于1.7,卸载:# rpm -e 软件包
3.2、安装lrzsz(用于从Windows本地上传文件到Linux):# yum install -y lrzsz
将jdk、hadoop压缩包上传到software目录:# rz
3.3、将文件解压到module目录:# tar -zxf jdk-8u151-linux-x64.tar.gz -C …/module
# tar -zxf hadoop-2.7.6.tar.gz -C …/module/
3.4、配置环境变量:
注意:环境变量不能配错,配错会导致Linux命令无法使用
解决办法:进入bin(/usr/local/bin)目录重新配置
# cd jdk1.8.0_151/
# pwd 复制该路径
# vim /etc/profile
在文件末尾添加如下内容:
# cd …/hadoop-2.7.6/
# pwd 复制该路径
# vim /etc/profile
在文件末尾添加如下内容:
使文件生效:# source /etc/profile
3.5、查看是否成功:# java -version
# hadoop version
七、将文件同步到其他两台主机上
1、# xsync /opt
到另外两台主机上查看是否成功:
2、同步profile文件(环境变量):
# rsync -rvl /etc/profile root@hadoop202:/etc
# rsync -rvl /etc/profile root@hadoop203:/etc
注:rsync:远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
3、到另外两台主机上使文件生效:# source /etc/profile
查看是否成功:# java -version
# hadoop version
八、配置集群
1、集群部署规划
2、配置文件
2.1、core-site.xml
# cd /opt/module/hadoop-2.7.6/etc/hadoop
# vim core-site.xml
<!-- 指定HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop203:9000</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.6/data/tmp</value>
</property>
2.2、hdfs
# vim hadoop-env.sh
改变JAVA_HOME变量值:
# vim hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定HDFS中SecondaryNameNode的地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop202:50090</value>
</property>
# vim slaves
hadoop201
hadoop202
hadoop203
2.3、配置yarn
# vim yarn-env.sh
修改JAVA_HOME变量的值:
# vim 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>hadoop201</value>
</property>
2.3、mapreduce
# vim mapred-env.sh
修改mapred-site.xml文件,但目录里本身没有,需要将mapred-site.xml.template文件重命名或者拷贝后重命名:
# cp mapred-site.xml.template mapred-site.xml
# vim mapred-site.xml
<!-- 指定 mr 运行在 yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3、在集群上分发以上所有文件:
# xsync /opt/module/hadoop-2.7.6/etc/hadoop
九、启动集群及测试
1、启动集群
1.1、如果集群是第一次启动,需要格式化NameNode,在有NameNode的主机上及进行格式化:
# bin/hdfs namenode -format
出现下面这句话就说明格式化成功:
1.2、启动hdfs,在hadoop203上执行:
# start-dfs.sh
1.3、启动yarn,在hadoop201上执行:
# start-yarn.sh
2、集群基本测试
2.1、上传小文件,在hadoop203上执行:
# hdfs dfs -mkdir -p /user/hadoop/tmp/conf
# hdfs dfs -put etc/hadoop/*-site.xml /user/hadoop/tmp/conf
2.2、上传大文件:# hadoop fs -put /opt/software/hadoop-2.7.6.tar.gz /user/hadoop/tmp
十、关闭集群
1、停止yarn:# stop-yarn.sh
2、停止hdfs:# stop-dfs.sh
十一、集群时间同步
时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。
1.时间服务器配置(必须 root 用户)
1.1、检查 ntp 是否安装:# rpm -qa|grep ntp
1.2、修改 ntp 配置文件:# vim /etc/ntp.conf
修改内容如下:
(a)修改 1(设置本地网络上的主机不受限制,设置内网主机提供NTP服务)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 为
restrict 192.168.1.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(添加默认的一个内部时钟数据,使用它为局域网用户提供服务)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
1.3、修改/etc/sysconfig/ntpd 文件
# vim /etc/sysconfig/ntpd
增加以下内容:SYNC_HWCLOCK=yes
1.4、重新启动ntpd
# service ntpd status
# service ntpd start
1.5、执行:# chkconfig ntpd on
2.其他机器配置(必须 root 用户)
2.1、在其他机器配置 10 分钟与时间服务器同步一次
# crontab -e
编写脚本:
*/10 * * * * /usr/sbin/ntpdate hadoop203
2.2、修改任意机器时间
# date -s "2017-9-11 11:11:11"
2.3、十分钟后查看机器是否与时间服务器同步
# date