Hadoop 学习 第一章 大数据入门

20.1.6 第一章 大数据入门

第一章 大数据入门

1.1 大数据概念

在这里插入图片描述
在这里插入图片描述
主流:阿里巴巴 腾讯 今日头条 美团 滴滴

对大数据的理解:
在这里插入图片描述

1.2 大数据的特点(4V)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 大数据应用场景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4 大数据发展前景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5 大数据部分业务流程分析(重点)

在这里插入图片描述

1.6 大数据部分组织结构 (重点)

在这里插入图片描述

第二章 从Hadoop框架讨论大数据生态

2.1 Hadoop是什么

在这里插入图片描述
后面的Hive 等框架都是依托Hadoop.
在这里插入图片描述
在这里插入图片描述
入门第一个月拼命学习,扛下来就能成功。

2.3 Hadoop 发行版本

在这里插入图片描述

2.4 Hadoop的优势(四高)

在这里插入图片描述

2.5 Hadoop 组成(面试重点)

Hadoop1.x 和2.x的区别

在这里插入图片描述

2.5.1 HDFS 架构概述

在这里插入图片描述

2.5.2 YARN 架构概述

在这里插入图片描述
RecourseManager 是整个资源集群的老大,
Nodemanager 单个节点资源老大 单个节点就是单个服务器 单个电脑。

2.5. 3MapReduce 架构

在这里插入图片描述
在这里插入图片描述

2.6 大数据技术生态体系

在这里插入图片描述
数据传输层:
Sqoop 是专门导入数据库的数据
Flume 专门读写文件日志

数据存储层:
最主流:HDFS 文件存储
HBase 非关系数据库 利用 KV键值对进行存储。
Kaflka 消息队列 也能存储数据。

资源管理层:
有了数据,分析数据需要资源:内存、CPU、磁盘 那么由YARN来负责调度。

数据计算层:
分离线和在线计算,
离线计算:
有MapReduce离线计算 和 Spark Core 内存计算。现在新出了一个Flink???
在MapReduce基础上有两个开发工具Hive进行数据查询,利用SQL语句。
前两者是离线的 都是将日 月 年的数据收集好 然后开始进行计算。
Spark Core 还可以进行实时计算 (主流)

在线计算:
Storm 实时计算,在走下坡路
Spark Streaming 实时计算 实际通过批处理操作进行准实时计算。(主流)

任务调度层

2.7 推荐系统项目框架

第三章 Hadoop 运行环境搭建(开发重点)

3.1 虚拟机环境准备

3.1.1 克隆虚拟机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
克隆成功:
在这里插入图片描述

3.1.2 修改静态IP地址

服务器的IP地址要设置成固定的,首先输入命令:

vim /etc/udev/rules.d/70-persistent-net.rules 

进去三件事,第一件删除划线部分内容在这里插入图片描述
删完:

在这里插入图片描述
第二件事:
将 eth1 改成 eth0
第三件事:将划线部分复制:

在这里插入图片描述
然后保存退出
随后输入命令:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

在这里插入图片描述
进去4件事
第一件把刚才复制的粘贴到 HWADDR= 后面
第二件把 ONBOOT 改为yes
第三件 把 BOOTPROTO 改成static
第四件 把IP地址 网关 DNS1 添加

第一点注意 网关GATEWAY 要和下图网关IP一致 DNS1要和网关GATEWAY保持一致
在这里插入图片描述
在这里插入图片描述
第二点注意 IPADDP=192.168.157.132 的前三个字段一定要和下面两个地方一致:
第一个地方:如下图 子网IP 前三个字段一样:192.168.157
在这里插入图片描述
第二个地方:IP的前三个字段一样。我的是自动获取 有点问题不知如何解决
此外IP的第四个字段132不能和网关IP的第四个字段相同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.3 修改主机名

修改后然后开始修改主机名 继续输入命令:

 vim /etc/sysconfig/network

将hadoop01 改成hadoop02 然后保存退出
在这里插入图片描述

3.1.4 建立主机名和IP地址之间的映射

然后输入命令,建立主机名和IP地址之间的映射

 vim /etc/hosts

是否建立好IP 和主机名对应 没有的话按照下图画圈建立,在集群中,假设有102 103 104 服务器,在每个节点都要保存102 103 104主机名和IP地址之间的映射。然后保存退出 在这里插入图片描述
都好后 重启虚拟机 reboot

然后ifconfig 看IP地址是否修改好。

3.1.5 创建BW用户

网络配置好后,新建一个BW用户和用户组:注意这是在102创建BW用户和用户组,等102环境全部配置好以后,克隆出103 104 ,这两个节点上也拥有BW用户和用户组
在这里插入图片描述
然后设置密码:
在这里插入图片描述

随后登录Xshell

在这里插入图片描述

3.1.6 配置BW用户具有root权限

然后输入:

vim /etc/sudoers

在这里插入图片描述
然后在root下面添加:划线行
在这里插入图片描述
然后 exit 退出root
在这里插入图片描述
到此虚拟机准备全部完成。

3.2 JDK安装

(1)在/opt目录下创建module、software文件夹
在这里插入图片描述
software 文件夹存放所有的jar包
module 文件夹 存放jar包解析后存放的位置。
用BW用户 cd 到opt 然后创建文件夹 发现权限不够 发现opt 属于root 肯定不行。
在这里插入图片描述
重新进入opt 目录 使用 sudo 命令创建 输入密码后创建成功
在这里插入图片描述
然后创建module文件夹
在这里插入图片描述
在这里插入图片描述
(2)修改module、software文件夹的所有者cd

发现创建者还是root 下面更改权限
在这里插入图片描述
(3)将JDK导入到opt目录下面的software文件夹下面

将两个jar包拷贝到 software文件夹下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

拷贝完成:

(4) 在Linux系统下的opt目录中查看软件包是否导入成功
在这里插入图片描述
下面安装jdk
安装两个jdk教程,不知道是否有用

(5)解压JDK到/opt/module目录下

解压:
在这里插入图片描述
(6)配置JDK环境变量

复制安装目录,配置环境变量
在这里插入图片描述
输入指令:

sudo vim /etc/profile

到最后一行 输入划线内容 保存退出。

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

在这里插入图片描述
然后Java并不能用
输入下面命令:

source /etc/profile

然后就可以了。

在这里插入图片描述
这样jdk 安装完成。

3.3 Hadoop 安装

  1. 进入到Hadoop安装包路径下
cd /opt/software/
  1. 解压安装文件到/opt/module下面
 tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

在这里插入图片描述

  1. 将Hadoop添加到环境变量
    (1)获取Hadoop安装路径
[atguigu@hadoop101 hadoop-2.7.2]$ pwd
/opt/module/hadoop-2.7.2

(2)打开/etc/profile文件

[atguigu@hadoop101 hadoop-2.7.2]$ sudo vi /etc/profile

(3) 在profile文件末尾添加JDK路径:(shitf+g)

##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

在这里插入图片描述
安装完成
在这里插入图片描述

3.4 Hadoop 目录结构

在这里插入图片描述
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

第四章 Hadoop 的运行模式

在这里插入图片描述
在这里插入图片描述
前两者学习用 第三者在实际的开发中使用。

4.1 本机模式

4.1.2 官网WorldCount 案例(面试手写!!)

统计单词的个数

  1. 创建在hadoop-2.7.2文件下面创建一个wcinput文件夹
[atguigu@hadoop101 hadoop-2.7.2]$ mkdir wcinput
  1. 在wcinput文件下创建一个wc.input文件
[atguigu@hadoop101 hadoop-2.7.2]$ cd wcinput
[atguigu@hadoop101 wcinput]$ touch wc.input
  1. 编辑wc.input文件
[atguigu@hadoop101 wcinput]$ vi wc.input

在文件中输入如下内容

hadoop yarn
hadoop mapreduce
atguigu
atguigu

保存退出::wq

  1. 回到Hadoop目录/opt/module/hadoop-2.7.2
  2. 执行程序
[atguigu@hadoop101 hadoop-2.7.2]$ hadoop jar
 share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput
  1. 查看结果
[atguigu@hadoop101 hadoop-2.7.2]$ cat wcoutput/part-r-00000
atguigu 2
hadoop  2
mapreduce       1
yarn    1

在这里插入图片描述
在这里插入图片描述
开始执行
在这里插入图片描述
结束后有两个文件夹
在这里插入图片描述
在这里插入图片描述

4.2 伪分布式

4.2.1 启动HDFS并运行MapReduce程序

所有的配置都是按照完全分布式来的 但是只有一台服务器。
首先进行配置集群:

1. 配置集群

(a)配置 /core-site.xml
首先进入 /opt/module/hadoop-2.7.2 这个目录
在这里插入图片描述
然后输入命令:进入配置文件

vim etc/hadoop/core-site.xml

在这里插入图片描述
打开后:
在这里插入图片描述
复制:

<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
    <value>hdfs://hadoop101:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

效果图:然后保存退出
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
默认的是file:/// file 相当于一个本地的文件系统,所以路径都是本地的 什么是本地的:就是在下图的目录下
在这里插入图片描述
如果是hdfs 那么路径就变了 用的是两套不同的协议。
配置的是NameNode的地址

在这里插入图片描述
运行时产生的临时数据用的
默认是啥: 是将文件存放在/tmp下 以后很多的数据默认都是存放在/tmp 路径下 但是这里我们修改到上图所示的路径
在这里插入图片描述
(b)配置 hadoop-env.sh
只要遇到env文件 都要修改JAVA路径
在这里插入图片描述
在这里插入图片描述

export JAVA_HOME=/opt/module/jdk1.8.0_144

在这里插入图片描述
(c)配置:hdfs-site.xml
在这里插入图片描述

<!-- 指定HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

在这里插入图片描述
保存退出到以下目录:
在这里插入图片描述

2. 启动集群

(a)格式化NameNode(第一次启动时格式化,以后就不要总格式化)
输入以下命令:

bin/hdfs namenode -format

在这里插入图片描述
格式化完成
第一次格式化一定不会出错,但是以后格式化很容易出错 按照下面三个步骤走:
在这里插入图片描述
第一步 关掉进程 第二步将data和logs文件夹还是里面的数据删除?,第三步再格式化
思考:为什么不能一直格式化NameNode,格式化NameNode,要注意什么?
在这里插入图片描述
在这里插入图片描述

(b)启动NameNode
所有的启动命令都在 sbin目录下,输入以下指令:

sbin/hadoop-daemon.sh start namenode

启动守护线程。
在这里插入图片描述
查看是否生效:使用查看进程命令

jps 

它输入jdk的命令
在这里插入图片描述
(c)启动DataNode
输入命令:

sbin/hadoop-daemon.sh start datanode

然后查看:
在这里插入图片描述

3. 查看集群

web端查看HDFS文件系统
在浏览器输入:
192.168.186.132:50070
解释:
192.168.186.132 是IP地址
如果打不开,解决方案
注意:如果不能查看,看如下帖子处理
本机是关闭防火墙可以打开网页
在这里插入图片描述
在这里插入图片描述
类似于Linux的根目录系统。
可以在/ 目录下创建目录 使用命令:
其中 bin/hdfs dfs 是固定的 后面跟命令
在这里插入图片描述
在这里插入图片描述

5. 操作集群

(a)在HDFS文件系统上创建一个input文件夹

接下来将本地的文件上传到HDFS文件系统

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/atguigu/input

(b)将测试文件内容上传到文件系统上

[atguigu@hadoop101 hadoop-2.7.2]$bin/hdfs dfs -put wcinput/wc.input /user/atguigu/input/

在这里插入图片描述
在这里插入图片描述
上传成功
(c)查看上传的文件是否正确

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -ls  /user/atguigu/input/
[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat  /user/atguigu/ input/wc.input

或者在网页查看
在这里插入图片描述
Block Size 128M 最大的容量 目前使用了73B

(d)运行MapReduce程序

至此 所有的配置完成 下面运行程序

 [atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output

在这里插入图片描述
此时输入输出用的是HDFS的文件路径 注意output文件夹一定不能提前存在 不然会报错。

(e)查看输出结果

浏览器查看在这里插入图片描述

命令行查看:

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*

在这里插入图片描述
(f)将测试文件内容下载到本地

[atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -get /user/atguigu/output/part-r-00000 ./wcoutput/

(g)删除输出结果

[atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -rm -r /user/atguigu/output
4. Logs 日志查看

日志要经常查看 有助于debug
在这里插入图片描述
说明:在企业中遇到Bug时,经常根据日志提示信息去分析问题、解决Bug。

4.2.2 启动YARN并运行MapReduce程序

在这里插入图片描述

(1)配置集群

(a)配置yarn-env.sh
首先到该目录下
在这里插入图片描述
如果之前退出了要重新启动 namenode 和 datanode
在这里插入图片描述
进入etc/hadoop 目录 打开配置文件:
在这里插入图片描述
将$JAVA_HOME 路径复制

export JAVA_HOME=/opt/module/jdk1.8.0_144

在这里插入图片描述
改这里:
在这里插入图片描述
改后:
在这里插入图片描述
(b)配置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>hadoop02</value>
</property>

修改配置文件:
在这里插入图片描述
进入:
在这里插入图片描述
改完:
在这里插入图片描述
(c)配置:mapred-env.sh
在这里插入图片描述
改完:
在这里插入图片描述
(d)配置: (对mapred-site.xml.template重新命名为) mapred-site.xml
在这里插入图片描述
重命名:

[atguigu@hadoop101 hadoop]$ mv mapred-site.xml.template mapred-site.xml

在这里插入图片描述

在这里插入图片描述
默认本地运行

<!-- 指定MR运行在YARN上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

我们制定在yarn上运行
先进去修改
在这里插入图片描述
修改后:
在这里插入图片描述
至此所有配置文件全部完成。接下来要启动集群

(2)启动集群

(a)启动前必须保证NameNode和DataNode已经启动
在这里插入图片描述
(b)启动ResourceManager
启动命令都在 sbin/ 目录下

在这里插入图片描述
输入命令:

sbin/yarn-daemon.sh start resourcemanager

在这里插入图片描述
(c)启动NodeManager
输入命令:

sbin/yarn-daemon.sh start nodemanager

在这里插入图片描述

(3)集群操作

(a)YARN的浏览器页面查看

然后操作集群 在浏览器输入:

192.168.186.132:8088

总结:50070 查看HDFS
8088 查看 MapReduce

在这里插入图片描述
说明在里面没有跑数据

(b)删除文件系统上的output文件

下面运行一个程序 先把输出文件删除:

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output

本机:

bin/hdfs dfs -rm -r /user/BW2/output

在这里插入图片描述
(c)执行MapReduce程序

输入命令:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/BW2/input /user/BW2/output

在这里插入图片描述
在这里插入图片描述

4.2.3 配置历史服务器

1. 配置

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

  1. 配置mapred-site.xml
[atguigu@hadoop101 hadoop]$ vi mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop02:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop02:19888</value>
</property>

在这里插入图片描述
修改后保存
在这里插入图片描述

2.启动历史服务器
sbin/mr-jobhistory-daemon.sh  start historyserver
3.查看历史服务器是否启动
[atguigu@hadoop101 hadoop-2.7.2]$ jps

在这里插入图片描述

4. 查看JobHistory

然后查看:
在这里插入图片描述
点这里没反应?????没有配置好
但是输入:可以打开
http://192.168.186.132:19888/jobhistory
在这里插入图片描述

4.2.4 配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。
注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。
开启日志聚集功能具体步骤如下:
第一步: 关闭NodeManager 、ResourceManager和HistoryManager
在这里插入图片描述
第二步:配置yarn-site.xml

<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!-- 日志保留时间设置7-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

默认:关闭 所以要开启
在这里插入图片描述
604800 是604800秒 正好是7天

打开文件:
在这里插入图片描述

改完:

在这里插入图片描述

第三步: 刚才停掉的三个进程都重新启动:
在这里插入图片描述
然后再运行下Wordcount 程序
首先 删除输出文件夹output
在这里插入图片描述
然后运行
在这里插入图片描述
然后查看日志:
输入:
http://192.168.186.132:19888/jobhistory
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成。

4.2.5 配置文件说明

在这里插入图片描述
自定义的配置文件优先级比默认的高

4.3 完全分布式运行模式(开发重点)

分析:

4.3.1 虚拟机准备

1)准备3台客户机(关闭防火墙、静态ip、主机名称)

克隆CentOS01 不是克隆CentOS101 !!! 克隆之前一定要在01 上创建用户BW
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三台机器都搞好

4.3.2 编写集群分发脚本xsync

在这里插入图片描述
利用这种方式安装jdk和Hadoop

(3)案例实操

(a)在hadoop101上,将hadoop101中/opt/module目录下的软件拷贝到hadoop102 103 104上。
在这里插入图片描述
一定不要忘了: 号!!!!,并且:和/ 之间不能有空格!!!!!
复制完
在这里插入图片描述
注意:拷贝过来的/opt/module目录,别忘了在hadoop102、hadoop103、hadoop104上修改所有文件的,所有者和所有者组。sudo chown BW:BW -R /opt/module

然后修改module的权限。
在这里插入图片描述
然后将101的配置文件传到102 103 104上。
将hadoop101中/etc/profile文件拷贝到hadoop102的/etc/profile上。

[atguigu@hadoop101 ~]$ sudo scp /etc/profile root@hadoop102:/etc/profile

将hadoop101中/etc/profile文件拷贝到hadoop103的/etc/profile上。

[atguigu@hadoop101 ~]$ sudo scp /etc/profile root@hadoop103:/etc/profile

将hadoop101中/etc/profile文件拷贝到hadoop104的/etc/profile上。

[atguigu@hadoop101 ~]$ sudo scp /etc/profile root@hadoop104:/etc/profile

注意:拷贝过来的配置文件别忘了source一下/etc/profile

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)脚本实现

(a)在/home/BW目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:

[atguigu@hadoop102 ~]$ mkdir bin
[atguigu@hadoop102 ~]$ cd bin/
[atguigu@hadoop102 bin]$ touch xsync
[atguigu@hadoop102 bin]$ vi 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=103; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

(b)修改脚本 xsync 具有执行权限

[atguigu@hadoop102 bin]$ chmod 777 xsync

(c)调用脚本形式:xsync 文件名称

[atguigu@hadoop102 bin]$ xsync /home/atguigu/bin

注意:如果将xsync放到/home/atguigu/bin目录下仍然不能实现全局使用,可以将xsync移动到/usr/local/bin目录下。

4.3.3 集群配置

在这里插入图片描述
NameNode 和 SecondaryNameNode 占用内存一比一 所以不能放到同一个节点上。
ResourceManager 是整个资源的老大 必须避开NameNode 和 SecondaryNameNode,所以只能配置到Hadoop04上。

1.核心配置文件

配置core-site.xml
在102上配置:

[atguigu@hadoop102 hadoop]$ vi core-site.xml

在这里插入图片描述
在该文件中编写如下配置

<!-- 指定HDFS中NameNode的地址 -->
<property>
		<name>fs.defaultFS</name>
      <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

在这里插入图片描述

2.HDFS配置文件

配置hadoop-env.sh
在这里插入图片描述
之前拷贝的时候已经修改过。

配置hdfs-site.xml

[atguigu@hadoop102 hadoop]$ vi hdfs-site.xml

在该文件中编写如下配置

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop05:50090</value>
</property>

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

3.YARN配置文件

配置yarn-env.sh
在这里插入图片描述
之前修改过了 现在不用修改

配置yarn-site.xml

[atguigu@hadoop102 hadoop]$ cp mapred-site.xml.template mapred-site.xml

[atguigu@hadoop102 hadoop]$ vi mapred-site.xml

在这里插入图片描述
在该文件中增加如下配置

<!-- Reducer获取数据的方式 -->
<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop103</value>
</property>

在这里插入图片描述

4.MapReduce配置文件

在这里插入图片描述
之前全部配置好 现在不需要修改。

5 在集群上分发配置好的Hadoop配置文件
[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-2.7.2/
4.查看文件分发情况
[atguigu@hadoop103 hadoop]$ cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

都配置好后 要开始单点启动了

4.3.4 集群单点启动

(1)如果集群是第一次启动,需要格式化NameNode
[atguigu@hadoop102 hadoop-2.7.2]$ hadoop namenode -format

在这里插入图片描述
回到该目录下:
在这里插入图片描述
将data 和logs文件夹删除。
在这里插入图片描述
现在将102的删除了 同时将103 104的按照上述步骤删除。

(2)在hadoop102上启动NameNode

然后回到102上 输入:

[atguigu@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh start namenode

在这里插入图片描述
结束成功:

在这里插入图片描述

[atguigu@hadoop102 hadoop-2.7.2]$ jps
3461 NameNode
(3)在hadoop102、hadoop103以及hadoop104上分别启动DataNode

然后启动102上的namenode 和datanode

[atguigu@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh start datanode
[atguigu@hadoop102 hadoop-2.7.2]$ jps
3461 NameNode
3608 Jps
3561 DataNode
[atguigu@hadoop103 hadoop-2.7.2]$ hadoop-daemon.sh start datanode
[atguigu@hadoop103 hadoop-2.7.2]$ jps
3190 DataNode
3279 Jps
[atguigu@hadoop104 hadoop-2.7.2]$ hadoop-daemon.sh start datanode
[atguigu@hadoop104 hadoop-2.7.2]$ jps
3237 Jps
3163 DataNode

在这里插入图片描述
然后启动103和104的DataNode (注意:103和104没有namenode)

至此102103 104 的namenode和DataNode都启动完成。

验证:成功
在这里插入图片描述

4.3.5 SSH无密登录配置

单点启动比较麻烦。下面设置ssh无密登录配置。
在这里插入图片描述
问题 用BW3普通用户无法登录Hadoop04 但是可以切换到root用户登录Hadoop04???

(1)免密登录原理,如图2-40所示
在这里插入图片描述在这里插入图片描述

进入家目录 发现有一个.ssh 进入 有一个known_hosts 文件 看一下是之前访问过的主机。

(2)生成公钥和私钥:

[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
在这里插入图片描述
在这里插入图片描述
(3)将公钥拷贝到要免密登录的目标机器上

然后将公钥拷贝到103 104

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103
[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

在这里插入图片描述
在这里插入图片描述

拷贝完后 就可以免密登录了。
在这里插入图片描述

在103 和104 里可以看到公钥
在这里插入图片描述
但是这时候访问自己还是需要输入密码 所以继续拷贝一份给自己:
在这里插入图片描述
为什么要设置102的免密登录 由于102上有namenode 它需要去04 和 05上去分发和通信。
同理:
103上也有resourcemanager 它也需要配置免密登录:
在这里插入图片描述
然后将其拷贝到102 103 104上:
在这里插入图片描述

然后在102 的root用户生成密钥拷贝给102 103 104
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.3.6 集群群起

1. 配置slaves
首先进入该目录下 修改slaves文件:

/opt/module/hadoop-2.7.2/etc/hadoop/slaves
[atguigu@hadoop102 hadoop]$ vi slaves

在这里插入图片描述
然后同步所有节点配置文件

[atguigu@hadoop102 hadoop]$ xsync slaves

在这里插入图片描述
在这里插入图片描述
发现:
在这里插入图片描述
在这里插入图片描述
都分发成功。
然后关闭03 04 05 的namenode 和 datanode
03:
在这里插入图片描述
04:
在这里插入图片描述
05:
在这里插入图片描述
2. 启动集群

(1)启动HDFS

然后直接启动hdfs 里面包含namenode 和datanode 输入:

[atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh
[atguigu@hadoop102 hadoop-2.7.2]$ jps
4166 NameNode
4482 Jps
4263 DataNode
[atguigu@hadoop103 hadoop-2.7.2]$ jps
3218 DataNode
3288 Jps
[atguigu@hadoop104 hadoop-2.7.2]$ jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)启动YARN

[atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

HDFS启动完成 现在开始启动YARN

注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。

坑:在102 104启动就挂了 只能必须在103上启动,因为resourcemanager在103上 输入:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
集群群起至此全部完成!!!

集群基本测试

上传一个大文件:
在这里插入图片描述
之前遇到错误:上传后只有102 103有 104没有 查阅是由于104的防火墙没有关闭 :
在这里插入图片描述
在这里插入图片描述
实际的压缩包存在了data里面:还可以拼接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3.7 集群启动/停止方式总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3.8 集群时间同步

crontab定时任务设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先重启服务:
在这里插入图片描述
时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。
在这里插入图片描述
配置时间同步具体实操:

  1. 时间服务器配置(必须root用户)
    (1)检查ntp是否安装

在这里插入图片描述
(2)修改ntp配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在末尾:
在这里插入图片描述
(3)修改/etc/sysconfig/ntpd 文件
在这里插入图片描述
SYNC_HWCLOCK=yes
在这里插入图片描述
(4)重新启动ntpd服务
在这里插入图片描述
102配置好了 下面配置103 104:
在这里插入图片描述
在这里插入图片描述

详细看笔记1 已经在本电脑成功编译好了Hadoop105

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值