1、虚拟机准备
克隆3个虚拟机hadoop101,hadoop102,hadoop103,改静态ip,主机名,3台机器的节点分配如下
2、编写集群分发脚本xsync
(1)在/home/hadoop目录下创建bin目录,并在bin目录下xsync创建文件:
[hadoop@hadoop101 ~] mkdir bin
[hadoop@hadoop101 ~] cd bin/
[hadoop@hadoop101 bin] touch xsync
[hadoop@hadoop101 bin] vi xsync
(2)脚本内容如下
#!/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=101; host<=103; host++)); do
echo ------------------- hadoop$host --------------
rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
(3)授权
[hadoop@hadoop101 bin] chmod 777 xsync
(4)测试:把此脚本分发到各个机器上,输入各自服务器密码
[hadoop@hadoop101 bin] xsync /home/hadoop/bin
(5)、在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器
[hadoop@hadoop101 module] sudo xsync /opt/module
[hadoop@hadoop101 module] sudo xsync /etc/profile
在其他机器上执行source /etc/profile使配置文件生效
3、SSH无密登录配置
(1)生成公钥和私钥:
[hadoop@hadoop101 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
(2)将公钥拷贝到要免密登录的目标机器上
[hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop101
[hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop102
[hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop103
注意:
还需要在hadoop102上采用hadoop账号,配置一下无密登录到hadoop101、hadoop102、hadoop103服务器上。
还需要在hadoop103上采用hadoop账号,配置一下无密登录到hadoop101、hadoop102、hadoop103服务器上。
(3).ssh文件夹下(~/.ssh)的文件功能解释
文件 | 含义 |
---|---|
known_hosts | 记录ssh访问过计算机的公钥(public key) |
known_hosts | 记录ssh访问过计算机的公钥(public key) |
id_rsa | 生成的私钥 |
id_rsa.pub | 生成的公钥 |
authorized_keys | 存放授权过得无密登录服务器公钥 |
4、集群时间同步
1.时间服务器配置(必须root用户)
(1)检查ntp是否安装
[root@hadoop101 ~] rpm -qa|grep ntp
(2)安装npt
[root@hadoop101 ~] yum install ntp -y
(3)修改ntp配置文件
[root@hadoop101 ~] vim /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.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
(4)修改/etc/sysconfig/ntpd 文件
[root@hadoop101 ~] vim /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
(5)重新启动ntpd服务
[root@hadoop101 ~] service ntpd status
ntpd 已停
[root@hadoop101 ~] service ntpd start
正在启动 ntpd: [确定]
(6)设置ntpd服务开机启动
[root@hadoop101 ~] chkconfig ntpd on
2.其他机器配置(必须root用户)
(1)在其他机器配置10分钟与时间服务器同步一次
[root@hadoop102 ~] crontab -e
编写定时任务如下:
*/10 * * * * /usr/sbin/ntpdate hadoop101
(2)修改任意机器时间
[root@hadoop102 ~] date -s "2017-9-11 11:11:11"
(3)十分钟后查看机器是否与时间服务器同步
[root@hadoop102 ~] date
说明:测试的时候可以将10分钟调整为1分钟,节省时间。
5、集群配置
所有配置文件都在$HADOOP_HOME/etc/hadoop
(1)首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME
在每个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144
(2)核心配置文件
配置core-site.xml,在该文件中编写如下配置
fs.defaultFS
hdfs://hadoop101:9000
hadoop.tmp.dir
/opt/module/hadoop-2.7.2/data/tmp
(3)HDFS配置文件
配置hdfs-site.xml,在该文件中编写如下配置
dfs.replication
3
dfs.namenode.secondary.http-address
hadoop103:50090
(4)YARN配置文件
配置yarn-site.xml,在该文件中编写如下配置
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop102
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
604800
(5)MapReduce配置文件
配置mapred-site.xml
[hadoop@hadoop101 hadoop] cp mapred-site.xml.template mapred-site.xml
[hadoop@hadoop101 hadoop] vi mapred-site.xml
在该文件中增加如下配置
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
hadoop103:10020
mapreduce.jobhistory.webapp.address
hadoop103:19888
(6)在集群上分发配置好的Hadoop配置文件
[hadoop@hadoop101 hadoop] xsync /opt/module/hadoop-2.7.2/
(7)在其他服务器查看分发文件分发情况
[hadoop@hadoop102 hadoop] cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
6、集群单点启动
(1)启动hdfs
a)格式化Namenode
如果集群是第一次启动,需要格式化NameNode。在hadoop101机器上执行
[hadoop@hadoop101 sbin] hdfs namenode -format
在hadoop101机器上启动NameNode和DataNode
[hadoop@hadoop101 sbin] hadoop-daemon.sh start namenode
[hadoop@hadoop101 sbin] hadoop-daemon.sh start DataNode
在hadoop102机器上启动DataNode
[hadoop@hadoop102 sbin] hadoop-daemon.sh start datanode
hadoop103机器启动DataNode和SecondaryNameNode
[hadoop@hadoop103 sbin] hadoop-daemon.sh start datanode
[hadoop@hadoop103 sbin] hadoop-daemon.sh start secondarynamenode
登录http://hadoop101:50070/,Datanodes出现3台表示配置成功
(2)启动yarn
在配置了Resourcemanage的hadoop102机器上启动ResourceManager和NodeManager
[hadoop@hadoop102 sbin] yarn-daemon.sh start resourcemanager
[hadoop@hadoop102 sbin] yarn-daemon.sh start nodemanager
在hadoop101机器上启动NodeManager
[hadoop@hadoop101 sbin] yarn-daemon.sh start nodemanager
在hadoop103机器上启动NodeManager
[hadoop@hadoop103 sbin] yarn-daemon.sh start nodemanager
登录http://hadoop102:8088/,Nodes出现3台表示配置成功
(3)启动历史服务器
在hadoop103机器上启动historyserver
[hadoop@hadoop103 sbin] mr-jobhistory-daemon.sh start historyserver
在各服务器上执行jps查看
[hadoop@hadoop101 sbin] jps
4530 NameNode
4663 DataNode
7784 Jps
4986 NodeManager
[hadoop@hadoop102 sbin] jps
3619 Jps
2407 ResourceManager
2283 DataNode
2559 NodeManager
[hadoop@hadoop103 sbin] jps
2656 DataNode
2852 NodeManager
2762 SecondaryNameNode
3754 JobHistoryServer
4330 Jps
7、群起集群
(1)配置slaves
/opt/module/hadoop-2.7.2/etc/hadoop/slaves
[hadoop@hadoop101 hadoop] vi slaves
在该文件中增加如下内容:
hadoop101
hadoop102
hadoop103
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
同步所有节点配置文件
[hadoop@hadoop101 hadoop]$ xsync slaves
(2)启动集群
(a)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
[hadoop@hadoop101 hadoop-2.7.2] bin/hdfs namenode -format
(b)启动HDFS
[hadoop@hadoop101 hadoop-2.7.2] sbin/start-dfs.sh
(c)启动YARN
[hadoop@hadoop102 hadoop-2.7.2] sbin/start-yarn.sh
注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。
(d)启动JobHistory
[hadoop@hadoop103 hadoop-2.7.2] sbin/mr-jobhistory-daemon.sh start historyserver
可登录如下web端地址查看:
http://hadoop101:50070 Namenode information
http://hadoop103:50090 SecondaryNamenode information
http://hadoop102:8088 JobHistory
http://hadoop103:19888 Nodes of the cluster