day03-Hadoop框架
一、分布式介绍
分布式:将多台服务器集中在一起,每台服务器都实现总体中的不同业务,做不同的事情
服务的运行方式:
- 单机模式也叫本地模式(对服务器要求高、对于的成本也高)
- 使用一台服务器
- 分布式模式
- 使用多台服务器(对服务器要求低,对于的成本也降低)
- 分布式服务一般都有主从分配
- 主服务 —— 管理
- 从服务 —— 干活
二、集群介绍
集群:指一组独立的计算机系统构成的一多处理器系统,它们之间通过网络实现进程间的通信,让若干台计算机联合起来工作(服务),可以是并行的,也可以是做备份。
服务的安装部署方式:
- 单机安装
- 将服务安装到一台服务器上
- 集群安装
- 将服务器安装到多台服务器上(👇图为集群示例)
- 分布式和集群区别
- 分布式
- 主要工作是分解任务,将职能拆解,多个人在一起做不同的事
- 集群
- 主要是将同一个业务,部署在多个服务器上 ,多个人在一起做同样的事
三、Hadoop介绍
3-1 介绍
Hadoop是Apache旗下的一个用Java语言实现开源软件框架,是一个存储和计算大规模数据的软件平台。
Hadoop 的三个核心组件:
HDFS
分布式文件存储
- 负责海量数据的存储
MapReduce
分布式计算
- 负责海量数据的计算
Yarn
分布式资源调度
- 负责给计算任务分配资源
3-2 Hadoop的服务架构说明
MapReduce
计算需要的数据和产生的结果需要HDFS
来进行存储
- 具体是 DataNode 储存数据
- NameNode 只是提供
MapReduce
存储块位置,让MapReduce
知道数据在哪(或存在哪)MapReduce
的运行需要由Yarn
集群来提供资源调度。
开发人员只需要编写计算代码即可,内部的执行过程是Hadoop自己完成。(
别学我,我这是自我麻痹)
3-3 Hadoop部署方式
- 单机部署
对单台服务器设备要求较高,内存大,读取速度要快,同时成本也大
- 集群部署
对单台服务器要求较低,存储可以少一点,读取速度可以慢一点,成本减少
# 为什么单机要比集群效率低?(通常情况下)
单机:一台服务器:内存50G 读取速度500m/s。 实际1台
=>总内存:50G 同一时间读取速度500m/s
集群:一台服务器:内存20G 读取速度200m/s。 实际3台
=>总内存:60G 同一时间读取速度(200*3)m/s
3-4 Hadoop的服务启动
将node1、node2、node3服务器都开机
使用
Finalshell
软件连接node1
虚拟机(自己操作,没有演示)
启动指令
sh start-all.sh
关闭
sh stop-all.sh
查看服务器的启动信息
sh jps
3-5 Hadoop的基本使用
可以访问web页面,在页面中操作
HDFS
使用
ip
地址(HDFS
端口号 9870 )访问:http://192.168.88.100:9870/
使用域名访问,但是需要配置
windos
域名解析文件,如果没有该文件可以自己创建相同名称的文件
- 找到域名解析文件
host
(目录:C:\Windows\System32\drivers\etc)
- 将文件拖拽到桌面
- 选择打开方式
- 添加域名信息,并保存
192.168.88.100 node1 node1.ecut.cn
192.168.88.101 node2 node2.ecut.cn
192.168.88.102 node3 node3.ecut.cn
- 将保存后的文件拖拽到原来文件夹中
- 访问服务器
http://node1:9870/
- 操作
HDFS
- 界面说明
3-6 MapReduce的使用
使用
hadoop
提供的案例代码实现圆周率计算
- 圆周率计算
# 打开对于目录文件
cd /export/server/hadoop/share/hadoop/mapreduce/
# 执行hadoop自带的计算pi的案例代码
hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 2 100
- 第一个参数 (2):代表的是用于计算的
样本数
- 在计算 π 时,这个数字表示将要生成的点的总数。 (我这里的样本数是 2 )
- 每个点都有一个随机的 x 和 y 坐标,范围为 [0, 1)×[0, 1)。
- 该参数越高,计算的 π 值会越接近实际的 π 值。
- 第二个参数 (100):代表的是
每个 Mapper 处理的样本数
- 这意味着每个 Mapper 将处理的样本数为 100。
- 在 Hadoop MapReduce 程序中,通常会对数据进行分片,然后由多台机器并行处理。
扩展:在Hadoop中计算π值通常采用的是蒙特卡洛方法
基本思想:通过随机数的比例来估算圆周率
π
。
原理解析:
- 蒙特卡洛方法:
- 在一个单位正方形内(边长为1),嵌套一个内接的四分之一圆
- 四分之一圆的半径为1,面积为 π*1 2 ^2 2=π
- 正方形的面积为1*1=1
- 如果我们在这个正方形内随机生成N个点,那么落在四分之一圆内的点的比例与圆的面积就会有直接关系
- 点的生成:
- 随机生成N个点((x,y)),其中(x,y)都在区间[ 0,1 ]内
- 判断这些点是否落在四分之一圆内,条件为 ( x 2 ^2 2 + y 2 ^2 2 = 1 )
- π的估算
- 设落在圆内的点数为:M,则可以得到:
- M N ≈ 圆的面积 正方形的面积 = 1 4 π 1 \frac{M}{N} \approx \frac{\text {圆的面积} }{\text {正方形的面积} } = \frac{\frac{1}{4} \pi}{1} NM≈正方形的面积圆的面积=141π
- 由此可以推导出
π
的近似值- π ≈ 4 ⋅ M N \pi \approx 4 \cdot \frac{M}{N} π≈4⋅NM
- 设落在圆内的点数为:M,则可以得到:
使用
hadoop
提供的案例代码实现词频统计
- 词频统计
- 将 word.txt 文件(含有数据)上传
HDFS
- 使用案例代码执行词频统计计算
hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /data /result
- 在
HDFS
上查看计算结果
四、HDFS详解
4-1 HDFS的基本介绍
- HDFS(分布式文件存储系统)
- 以文件的方式存储数据
- 文件在存储数据
一次写入多次读取
- 支持追加写入
- 不支持修改原始数据
- HDFS的架构
- Clinet客户端
- NameNode
- DataNode
- SecondaryNameNode
4-2 HDFS的架构说明
Clinet客户端
负责文件上传,将上传的文件拆分多个块 block,每个块的大小默认是128M
使用客户端操作HDFS
NameNode服务
- 管理者角色,负责管理整个hdfs服务
- 处理所有客户端请求
- 管理HDFS的元数据,包含文件信息
- 文件的存储位置
- 文件大小
- 文件名字
- DataNode信息数据
- 块信息等等数据
DataNode服务
- 从服务,负责具体文件数据的存储
- DataNode启动后会自动和NameNode保持通讯,汇报自身情况
SecondaryNameNode服务
- 协助NameNode对元数据进行持久化存储
- 在NameNode运行期间,会将元数据保存在内存中,一但服务器出现异常,内存数据容易丢失,元数据丢失后就会找不到文件,文件中存储的数据也就无法找回,所以HDFS会让SecondaryNameNode定期将内存上的元数据持久保存在磁盘上
4-3 HDFS的副本机制
HDFS为了保证数的安全可靠,会将块数据存储多份,默认是3副本,也就是会将块数据存储三份
将副本存储在不同的服务器(如上图)
五、Hive概述
hive
本身是一个数据查询工具,可以将文件的文本数据转为结构化数据,使用SQL的方式对结构化数据进行查询计算。
可以使用hive实现数据仓库的搭建
5-1 数据仓库
数据仓库对公司过往海量历史数据进行分析计算,为公司决策提供数据支持。
数据仓库的搭建需要依赖一套完整数据处理流程体系
- 数据采集
- 数据存储
- 数据计算
- 数据分析
- 数据展示
Hive
在数据仓库开发中主要的作用就是将sql
转为MapReduce
计算,降低了开发人员的开发成本