大数据(Big Data):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。主要解决:含量数据的存储和海量数据的分析计算问题。
数据存储单位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。
Hadoop三大发行版本:Apache、Cloudera、Hortonworks:
(1)高可用:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
(2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点
(3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
(4)高容错性:能够自动将失败的任务重新分配
在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大;在Hadoop2.x时代,由同一的资源调度平台YARN进行大数据计算资源的调度,MapReduce只负责运算,提升了Hadoop的通用性。Hadoop搭建的集群中的计算资源,不仅可以运行Hadoop中的MR程序,也可以运行其他计算框架的程序!例如: Tez,Storm,Spark,Flink。
完成大数据的计算的步骤:
MapReduce(编程规范): MapReduce是一个编程模型,这个模型由两个阶段组成,一个称为Map阶段,另一个称为Reduce阶段,在Map阶段和Reduce阶段分别启动若干进程负责运算,这些进程称为Task,在Map阶段启动的Task称为MapTask,在Reduce阶段启动的Task称为ReduceTask。遵循MapReduce的编程规范编写的程序,打包后,称为一个Job(任务)。在Job启动时,Job会先创建一个进程MRAppMaster(mapreduce 应用管理者),由这个进程和ResourceManage进行通信,为Job中的每个Task申请计算所需要的资源。Task的请求,会被ResourceManage缓存到一个调度队列中,由NodeManage领取Task,领取后NodeManage会根据Task要求,提供计算资源,为了避免计算资源在当前Task使用时被其他的task抢占,NodeManage会将资源封装到一个Container中,Container可以对计算资源进行隔离。
YARN负责集群中所有计算资源的管理和调度。
ResourceManager(1个):负责整个集群所有资源的管理。
NodeManager(N个):负责单台计算机所有资源的管理。
4. 负责和RM进行通信,上报本机中的可用资源
5. 负责领取RM分配的任务
6. 负责为Job中的每个Task分配计算资源
Container(容器): Container不是一个进程。 NodeManager为Job的某个Task分配了2个CPU和2G内存的计算资源,为了防止当前Task在使用这些资源期间,被其他的task抢占资源,将计算资源,封装到一个Container中,在Container中的资源,会被暂时隔离,无法被其他进程所抢占,当前Task运行结束后,当前Container中的资源会被释放,允许其他task来使用!
VMware Network Adapter VMnet8配置NAT虚拟网络
1.安装完Linux系统后,配置主机和NAT模式网络
#配置服务器名称,每个服务器配置不同,更改完成需要重启生效
[root@localhost ~]# vim /etc/hostname
hadoop101
#配置网络
[root@hadoop101 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#静态ip配置
BOOTPROTO=static
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=ens192
UUID=cec5a0f3-1ef5-4569-91dc-095e05ac3dab
DEVICE=ens192
#开机启动
ONBOOT=yes
#网关
GATEWAY=192.168.1.2
#静态ip地址
IPADDR=192.168.88.101
#子网掩码
NETMASK=255.255.255.0
#配置google的DNS
[root@hadoop101 ~]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4
#关闭防火墙
[root@hadoop101 ~]# systemctl stop firewalld
2.创建非root用户
#创建用户
[root@hadoop101 ~]# useradd yut
#设置用户密码
[root@hadoop101 ~]# passwd yut
#配置 yut 用户 sudo 免密码,将 yut ALL=(ALL) NOPASSWD: ALL 添加到文件末尾即可,或使用vim /etc/sudoers
[root@hadoop101 ~]# visudo
yut ALL=(ALL) NOPASSWD: ALL
Centos7可能没有预装ifconfig
,安装ifconfig
的方式见:https://www.cnblogs.com/xuliuzai/p/9769502.html
1.在/opt目录下创建module、software文件夹
[yut@hadoop101 opt]# sudo mkdir module
[yut@hadoop101 opt]# sudo mkdir software
#修改文件夹所有者
[yut@hadoop101 opt]# sudo chown yut:yut module/ software/
2.上传jdk-8u144-linux-x64.tar.gz文件到software目录下解压
#解压tar包
[yut@hadoop101 software]# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
3.配置JDK环境变量
[yut@hadoop101 jdk1.8.0_144]$ pwd
/opt/module/jdk1.8.0_144
[yut@hadoop101 jdk1.8.0_144]$ sudo vim /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
[yut@hadoop101 jdk1.8.0_144]$ sudo source /etc/profile
#检查是否配置成功
[yut@hadoop101 jdk1.8.0_144]$ java -version
Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2
1.上传hadoop-2.7.2.tar.gz包到software目录下并解压
#解压
[yut@hadoop101 software]$ tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
2.配置Hadoop环境变量
[yut@hadoop101 hadoop-2.7.2]$ pwd
/opt/module/hadoop-2.7.2
[yut@hadoop101 hadoop-2.7.2]$ sudo vim /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
[yut@hadoop101 jdk1.8.0_144]$ source /etc/profile
#检查是否配置成功
[yut@hadoop101 hadoop-2.7.2]$ hadoop version
1.查看Hadoop目录结构
[yut@hadoop101 hadoop-2.7.2]$ ll
total 32
drwxr-xr-x. 2 yut yut 194 May 22 2017 bin
drwxr-xr-x. 3 yut yut 20 May 22 2017 etc
drwxr-xr-x. 2 yut yut 106 May 22 2017 include
drwxr-xr-x. 3 yut yut 20 May 22 2017 lib
drwxr-xr-x. 2 yut yut 239 May 22 2017 libexec
-rw-r--r--. 1 yut yut 15429 May 22 2017 LICENSE.txt
-rw-r--r--. 1 yut yut 101 May 22 2017 NOTICE.txt
-rw-r--r--. 1 yut yut 1366 May 22 2017 README.txt
drwxr-xr-x. 2 yut yut 4096 Dec 11 18:54 sbin
drwxr-xr-x. 4 yut yut 31 May 22 2017 share
2.重要目录
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
HDFS运行模式取决于配置文件core-default.xml
中的参数fs.defaultFS=file:///
(默认)。
fs.defaultFs=hdfs://
MapReduce运行模式取决于配置文件mapred-default.xml
中的参数mapreduce.framework.name=local
(默认)。
mapreduce.framework.name=yarn
1.在hadoop-2.7.2目录下面创建一个input文件夹
[yut@hadoop101 hadoop-2.7.2]$ mkdir input
2.将Hadoop的xml配置文件复制到input
[yut@hadoop101 hadoop-2.7.2]$ cp etc/hadoop/*.xml input
3.执行share目录下的MapReduce程序
[yut@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'
4 查看输出结果
[yut@hadoop101 hadoop-2.7.2]$ cat output/*
1.创建在hadoop-2.7.2文件下面创建一个wcinput文件夹
[yut@hadoop101 hadoop-2.7.2]$ mkdir wcinput
2.在wcinput文件下创建一个wc.input文件
[yut@hadoop101 hadoop-2.7.2]$ touch wcinput/wc.input
3.编辑wc.input文件
[yut@hadoop101 hadoop-2.7.2]$ vim wcinput/wc.input
hadoop yarn
hadoop mapreduce
yut
yut
4.执行程序
[yut@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
5.查看结果
[yut@hadoop101 hadoop-2.7.2]$ cat wcoutput/part-r-00000
hadoop 2
mapreduce 1
yarn 1
yut 2
1.修改Hadoop配置文件core-site.xml
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://hadoop101:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/opt/module/hadoop-2.7.2/data/tmpvalue>
property>
configuration>
2.修改HDFS配置文件hdfs-site.xml
<configuration>
<property>
<name>dfs.replicationname>
<value>1value>
property>
configuration>
3.启动HDFS
#首次启动格式
[yut@hadoop101 hadoop-2.7.2]$ bin/hdfs namenode -format
#启动namenode
[yut@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
#启动datanode
[yut@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
#查看集群是否启动成功
[yut@hadoop101 hadoop-2.7.2]$ jps
1970 DataNode
1875 NameNode
6331 Jps
(a)HDFS文件系统Web管理页面:http://192.168.88.101:50070/
(b)/opt/module/hadoop-2.7.2/logs
目录下存放hadoop运行的日志
(c)NameNode仅首次启动格式化。格式化NameNode,会产生新的clusterID(集群id),导致NameNode和DataNode的clusterID(集群id)不一致,集群找不到已往数据。所以,格式NameNode时,一定要先删除data数据和log日志,然后再格式化NameNode。
[yut@hadoop101 hadoop-2.7.2]$ cat data/tmp/dfs/name/current/VERSION
#Wed Dec 11 18:47:56 CST 2019
namespaceID=1491822328
clusterID=CID-2e42d9fe-e169-4105-a519-13e819013561
cTime=0
storageType=NAME_NODE
blockpoolID=BP-348638485-192.168.88.101-1576061276423
layoutVersion=-63
[yut@hadoop101 hadoop-2.7.2]$ cat data/tmp/dfs/data/current/VERSION
#Wed Dec 11 18:52:22 CST 2019
storageID=DS-b5b889ad-e328-4b7d-a9ea-3e5c7f12886f
clusterID=CID-2e42d9fe-e169-4105-a519-13e819013561
cTime=0
datanodeUuid=fcb07e03-88aa-4b46-8b05-cfc4894369f3
storageType=DATA_NODE
layoutVersion=-56
4.操作集群
(a)在HDFS文件系统上创建一个input文件夹
[yut@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/yut/input
(b)将测试文件上传到文件系统
[yut@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -put wcinput/wc.input /user/yut/input/
(c)查看上传的文件
[yut@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -ls /user/yut/input/
(d)运行MapReduce程序
[yut@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/yut/input /user/yut/output
(e)查看输出结果
[yut@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/yut/output/*
hadoop 2
mapreduce 1
yarn 1
yut 2
1.修改yarn的配置文件yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hadoop101value>
property>
configuration>
2.将mapred-site.xml.template
重命名为mapred-site.xml
,修改MapReduce配置文件
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
3.启动Yarn(NameNode和DataNode必须已启动)
#启动ResourceManager
[yut@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
#启动NodeManager
[yut@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
yarn的web管理页面:http://192.168.88.101:8088
4.集群操作
#删除output目录
[yut@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/yut/output
#运行wordcount案例
[yut@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/yut/input /user/yut/output
1.修改MapReduce配置文件mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>hadoop101:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>hadoop101:19888value>
property>
configuration>
2.启动历史服务器
#启动历史服务器
[yut@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
历史服务器的web管理页面:http://192.168.88.101:19888
日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上的/tmp
。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
1.修改yarn的配置文件yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hadoop101value>
property>
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>
configuration>
2.重启NodeManager 、ResourceManager和HistoryManager
[yut@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop resourcemanager
[yut@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager
[yut@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver
[yut@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
[yut@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
[yut@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver
Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
1.默认配置文件
默认文件 | 文件存放在Hadoop的jar包中的位置 |
---|---|
core-default.xml | hadoop-common-2.7.2.jar/ core-default.xml |
hdfs-default.xml | hadoop-hdfs-2.7.2.jar/ hdfs-default.xml |
yarn-default.xml | hadoop-yarn-common-2.7.2.jar/ yarn-default.xml |
mapred-default.xml | hadoop-mapreduce-client-core-2.7.2.jar/ mapred-default.xml |
2.自定义配置文件
core-site.xml
、hdfs-site.xml
、yarn-site.xml
、mapred-site.xml
四个配置文件存放在$HADOOP_HOME/etc/hadoop
这个路径上,用户可以根据项目需求重新进行修改配置。
使用虚拟机克隆出3台相同的客户机,并配置相关的主机名(hadoop102、hadoop103)与网络(192.168.88.102、192.168.88.103)。
scp
可以实现服务器与服务器之间的数据拷贝(全量复制)。
语法:
scp -r [$user@$hostname:]$pdir/$fname [$user@$hostname:]$pdir/$fname
命令 递归 源用户@源主机:要拷贝的文件路径/名称 目标用户@目标主机:目的路径/名称
[yut@hadoop101 hadoop-2.7.2]$ scp -r /opt/module root@hadoop102:/opt/module
[yut@hadoop101 hadoop-2.7.2]$ scp -r /opt/module root@hadoop103:/opt/module
[yut@hadoop101 hadoop-2.7.2]$ scp -r /etc/profile root@hadoop103:/etc/profile
[yut@hadoop101 hadoop-2.7.2]$ source /etc/profile
rsync
主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点(增量同步)。rsync
和scp
区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
语法:
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
选项 | 功能 |
---|---|
-r | 递归 |
-v | 显示复制过程 |
-l | 拷贝符号连接 |
-t | 基于文件的修改时间进行对比,只同步修改时间不同的文件 |
#没有则下载
[yut@hadoop101 hadoop-2.7.2]$ sudo yum install rsync.x86_64
[yut@hadoop101 hadoop-2.7.2]$ rsync -rvlt /opt/software/ root@hadoop102:/opt/software
集群分发脚本:
[yut@hadoop101 ~]$ echo $PATH
/opt/module/jdk1.8.0_144/bin:/opt/module/hadoop-2.7.2/bin:/opt/module/hadoop-2.7.2/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/yut/.local/bin:/home/yut/bin
#可以在/home/yut/bin目录下创建xsync.sh脚本全局使用
[yut@hadoop101 ~]$ mkdir bin
[yut@hadoop101 ~]$ vim bin/xsync.sh
#!/bin/bash
#获取输入参数个数,没有则退出
pcount=$#
if [ $pcount -eq 0 ];then
echo "no args"
exit 1
fi
#获取文件名称
name=$1
filename=$(basename $name)
echo "filename=$filename"
#获取上级目录到绝对目录
pdir=$(cd -P $(dirname $name); pwd)
echo "pdir=$pdir"
#获取当前用户名称
user=$(whoami)
#循序
for((host=101;host<=103;host++));
do
echo "-------------hadoop$host-------------"
rsync -rvl $pdir/$fliename $user@hadoop$host:$pdir
done
exit 0
[yut@hadoop101 ~]$ sudo chmod +x bin/xsync.sh
[yut@hadoop101 ~]$ xsync.sh /opt/module
1.集群部署规划
hadoop101 | hadoop102 | hadoop103 | |
---|---|---|---|
HDFS | NameNode,DataNode | DataNode | SecondaryNameNode,DataNode |
YARN | NodeManager | ResourceManager,NodeManager | NodeManager |
2.修改Hadoop配置文件core-site.xml
[yut@hadoop101 hadoop-2.7.2]$ vim etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://hadoop101:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/opt/module/hadoop-2.7.2/data/tmpvalue>
property>
configuration>
3.修改hdfs的配置文件hdfs-site.xml
[yut@hadoop101 hadoop-2.7.2]$ vim etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>hadoop103:50090value>
property>
configuration>
4.修改yarn配置文件yarn-site.xml
[yut@hadoop101 hadoop-2.7.2]$ vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>hadoop102value>
property>
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>
configuration>
5.修改MapReduce配置文件mapred-site.xml
[yut@hadoop101 hadoop-2.7.2]$ vim etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>hadoop101:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>hadoop101:19888value>
property>
configuration>
6.在集群上分发配置好的Hadoop配置文件
[yut@hadoop101 hadoop-2.7.2]$ xsync.sh /opt/module/hadoop-2.7.2/
#启动namenode
[yut@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
#启动datanode
[yut@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
[yut@hadoop102 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
[yut@hadoop103 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
#启动secondarynamenode
[yut@hadoop103 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start secondarynamenode
#启动resourcemanager
[yut@hadoop102 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager
#启动nodemanager
[yut@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
[yut@hadoop102 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
[yut@hadoop103 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
上述集群分发脚本执行的时候,可以发现需要输入每个节点的登录密码,且每次执行都需要重复输入,我们可以配置SSH免密登录来达到节点间的免密访问。
ssh命令:
ssh destHost
:登录之后,执行某个命令,属于login-shell,会读取/etc/profile、/etc/profile.d/*、~/.bash_profile、~/.bashrc、/etc/bashrc脚本ssh destHost command
:不登录在目标机器上执行命令,属于non-login-shell,会读取/etc/profile.d/*、~/.bashrc、/etc/bashrc脚本,如果需要使用/etc/profile定义的一些变量,需要在目标机器的对应的用户的家目录/.bashrc中添加source /etc/profile。[yut@hadoop101 hadoop-2.7.2]$ ssh 192.168.88.102
[email protected]'s password:
Last login: Sun Dec 15 20:38:55 2019 from hadoop101
[yut@hadoop102 ~]$
档案 | 说明 |
---|---|
known_hosts | 记录ssh访问过计算机的公钥(public key) |
id_rsa | 生成的私钥 |
id_rsa.pub | 生成的公钥 |
authorized_keys | 存放授权过的无密登录服务器的公钥 |
1.生成公钥和私钥
#在家目录下会创建.ssh目录,包含id_rsa(私钥)和id_rsa.pub(公钥)
[yut@hadoop101 ~]$ ssh-keygen -t rsa
2.将公钥copy到需要免密登录的目标机器上
[yut@hadoop101 hadoop-2.7.2]$ ssh-copy-id hadoop101
[yut@hadoop101 hadoop-2.7.2]$ ssh-copy-id hadoop102
[yut@hadoop101 hadoop-2.7.2]$ ssh-copy-id hadoop103
hadoop102和hadoop103上重复1和2操作
3.配置slaves
#修改slaves
[yut@hadoop101 hadoop-2.7.2]$ vim etc/hadoop/slaves
hadoop101
hadoop102
hadoop103
4.配置JAVA_HOME
[yut@hadoop101 hadoop-2.7.2]$ echo $JAVA_HOME
/opt/module/jdk1.8.0_144
[yut@hadoop101 hadoop-2.7.2]$ vim etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
[yut@hadoop101 hadoop-2.7.2]$ vim etc/hadoop/mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
[yut@hadoop101 hadoop-2.7.2]$ vim etc/hadoop/yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
#同步配置文件
[yut@hadoop101 hadoop-2.7.2]$ xsync.sh etc/hadoop
4.启动集群
#删除hadoop101、hadoop102、hadoop103上data和logs目录后格式化
[yut@hadoop101 hadoop-2.7.2]$ bin/hdfs namenode -format
#启动HDFS
[yut@hadoop101 hadoop-2.7.2]$ sbin/start-dfs.sh
#启动YARN
[yut@hadoop102 hadoop-2.7.2]$ sbin/start-yarn.sh
注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。
5.查看web页面
Namenode页面:http://192.168.88.101:50070
SecondaryNamenode页面:http://192.168.88.103:50090
Yarn页面:http://192.168.88.102:8088
6.测试集群
[yut@hadoop101 hadoop-2.7.2]$ hdfs dfs -mkdir -p /user/yut/input
[yut@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -put /opt/software/hadoop-2.7.2.tar.gz /user/yut/input
[yut@hadoop101 hadoop-2.7.2]$ ll -h data/tmp/dfs/data/current/BP-330732547-192.168.88.101-1576421651162/current/finalized/subdir0/subdir0/
时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。
1.检查ntp并安装
#检查ntp是否安装
[yut@hadoop101 hadoop-2.7.2]$ rpm -qa|grep ntp
#没有安装则安装ntp
[yut@hadoop101 hadoop-2.7.2]$ sudo yum install ntp.x86_64
2.修改ntp.conf
配置文件
[yut@hadoop101 hadoop-2.7.2]$ sudo vi /etc/ntp.conf
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
#将以下注释掉,不使用其它互联网上时间
#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 127.127.1.0
fudge 127.127.1.0 stratum 10
3.修改/etc/sysconfig/ntpd
配置文件
[yut@hadoop101 hadoop-2.7.2]$ sudo vim /etc/sysconfig/ntpd
#让硬件时间与系统时间一起同步
SYNC_HWCLOCK=yes
4.启动ntp
#重启ntp
[yut@hadoop101 hadoop-2.7.2]$ sudo systemctl restart ntpd
#设置ntp开机启动
[yut@hadoop101 hadoop-2.7.2]$ sudo systemctl enable ntpd
5.其它机器配置(必须root用户)
#每分钟同步一次时间
[root@hadoop102 ~]# crontab -e
*/1 * * * * /usr/sbin/ntpdate hadoop101
[root@hadoop103 ~]# crontab -e
*/1 * * * * /usr/sbin/ntpdate hadoop101