当前位置: 首页 > news >正文

Hadoop原理,HDFS架构,MapReduce原理

Hadoop原理,HDFS架构,MapReduce原理

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开
测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库
这oracle比sql安全,强大多了,所以你需要学习,最重要的,你要是考网络警察公务员,这玩意你不会就别去报名了,耽误时间!


文章目录

  • Hadoop原理,HDFS架构,MapReduce原理
    • @[TOC](文章目录)
  • Hadoop是什么?
  • Hadoop概述
  • Hadoop优势
  • Hadoop的生态系统
  • Hadoop集群的部署模式
  • Hadoop的历史版本
  • HDFS的演进
  • HDFS基本概念
  • HDFS的优缺点
  • HDFS主从架构
  • HDFS写原理
  • HDFS读数据的原理
  • HDFS的shell操作
  • MapReduce分布式计算框架
  • map和reduce内部如何合作
  • maptask
  • reducetask
  • shuffle工作原理
  • MapReduce的运行模式
  • MapReduce的性能优化
  • 总结

Hadoop是什么?

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

Hadoop概述

在这里插入图片描述

Hadoop优势

在这里插入图片描述
计算能力
存储能力
廉价计算机组成
高效率,吞吐量高
可靠,容错
数据副本机制基本不会丢

Hadoop的生态系统

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

Hadoop集群的部署模式

在这里插入图片描述

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

Hadoop的历史版本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
收费的牛逼

在这里插入图片描述
主从架构
在这里插入图片描述
在这里插入图片描述

计算类似的
MapReduce
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
yarn来管理分配资源和调度资源
resourcemanager
管理nodemanager
APPmaster,进程去计算
在这里插入图片描述
app计算完,上报给老大
在这里插入图片描述
单点故障依然gg

在这里插入图片描述
在这里插入图片描述
还是备份思想
gg
zookeeper来搞这种管理,美滋滋

这门课牛逼,终于说清楚了这些事情
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不是resource 了

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

HDFS的演进

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
老牛逼了

HDFS基本概念

在这里插入图片描述

不妨设a.txt要存储,它很大很大,一个机子存不了
咱需要拆分成多个block

这样分开存在不同的机子上
支离破碎的文件,需要统一管理,namenode来管理

当客户端访问是,先要问nn,你给我真实的地址,我一个个去读取然后组装就好。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
nn就是老大

datanode
在这里插入图片描述

在这里插入图片描述
block

在这里插入图片描述
在这里插入图片描述
300m那平均分开

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3份一样的数据,分开存储,增加容错性
在这里插入图片描述

HDFS的优缺点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
蓝色dn1丢失
但是dn2和dn3保持数据的完整性
美滋滋
在这里插入图片描述
字节流,好像访问本地文件,效率高

支持超大文件的存储,切片分开存储,都能玩
高数据的吞吐量,不支持修改,支持存储

在这里插入图片描述
由于数据多,分开存,这样的话,速度慢
适合线下处理
尤其是小文件多,元数据量大,很烦人

并发写入不合适,他要备份
一次写入,多次读取

HDFS主从架构

namenode管理datanode
在这里插入图片描述
namenode的元数据是缓存在自己身上的,secondarynamenode辅助管理

datanode经常需要汇报给老大namenode

一个大文件,一般有3个副本
在这里插入图片描述

HDFS写原理

在这里插入图片描述
client客户端的操作

在这里插入图片描述
分步骤玩
在这里插入图片描述

1:客户端发出RPC,请求上传文件
2:nn检查元数据文件的目录树
3:告诉客户端,可以上传
4:上传请求第一个block,一共3个
5:每个block是要3个副本的,nn需要检查dn的信息池,查他的存储量和可用性,找到可用的list,即可用的副本
6:返回可用的datanode可用的列表,dn123
7:客户端收到了列表之后,他就知道存到哪里了,他需要和服务器之间建立pipeline管道,且dn1和dn2之间也要建立管道,dn2和dn3都要建立,这样的话,数据流通道搞出来了,当客户端一旦发送,就能同时发送哦
8:当管道建立好后,返回管道建立完毕的信息,相当于ack,tcp协议连接类似
9:就可以发送了,建立传输数据流,发送数据
10:以package包为单位,慢慢发,64k大小,dn1发送诶dn2,dn2发送给dn3
11:发送完毕,告诉前面确认好了,ack确认信息
12:通知客户端,block发送完毕,请求发送下一个block,以此循环发

懂了吧

HDFS读数据的原理

在这里插入图片描述
1:客户端发RPC请求,获取读取文件block数据所在的位置,往往1文件,是分成了多个block,而且分散存储在不同的服务器上的
2:nn返回block返回datanode的地址列表,比如dn1,dn2,dn3上都有副本
3:当客户端知道了地址,他直接挑选排序靠前的地址列表,距离自己比较近的那个节点,它还能挑选健康的服务器,比如挑选,然后建立通信管道,分别读取,并发读取哦。每次读完,那客户端都要完成校验,发现不完整,还需要从新问nn;
4:读取完成,合成一个完整的文件
在这里插入图片描述

HDFS的shell操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
/根目录
Hadoop fs -ls /目录
这种特定的命令

在这里插入图片描述
这种就是普通Linux之前加一个Hadoop fs
或者dfs fs

在这里插入图片描述
本地路径,目标路径

在这里插入图片描述

MapReduce分布式计算框架

在这里插入图片描述
在这里插入图片描述
HDFS是存储
MapReduce是计算

懂?
yarn是管理
分而治之——MapReduce

在这里插入图片描述
map
reduce

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

map和reduce内部如何合作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
格式化,结构化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

maptask

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

在这里插入图片描述

reducetask

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

shuffle工作原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
blocksize最重要
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
new一个text和int就是kv

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

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

在这里插入图片描述
在这里插入图片描述
k想通,哈希值就相同

就是分区的编号,根key个数相同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

MapReduce的运行模式

在这里插入图片描述
在这里插入图片描述
输入输出
key123各种格式

在这里插入图片描述

MapReduce的性能优化

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


总结

提示:重要经验:

1)
2)学好oracle,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

相关文章:

  • LeetCode Hot之七:438. 找到字符串中所有字母异位词
  • Linux下C++调用python脚本实现LDAP协议通过TNLM认证连接到AD服务器
  • postswigger 靶场(CSRF)攻略-- 1.没有防御措施的 CSRF 漏洞
  • 【Python】 Python 使用 Pillow 处理图像:几何变换
  • C //例 7.12 用选择法对数组中10个整数按由小到大排序。
  • 基于JAX-WS实现RESTful形式的web服务端点(endpoint)
  • 【数据分享】2021-2023年我国主要城市逐月轨道交通运营数据
  • 家庭安全计划 挑战赛| 溺水预防
  • FTP、NFS、SAMBA系统服务一
  • Java: 实现电影信息管理系统 (javaBean)
  • 前端面试之事件循环
  • sqoop笔记(安装、配置及使用)
  • 【架构】后端项目经典分层架构介绍
  • DeepFool: a simple and accurate method to fool deep neural networks
  • 答题猜歌闯关流量主小程序开发
  • [译]Python中的类属性与实例属性的区别
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Android 控件背景颜色处理
  • crontab执行失败的多种原因
  • egg(89)--egg之redis的发布和订阅
  • gulp 教程
  • iOS 系统授权开发
  • k8s如何管理Pod
  • VuePress 静态网站生成
  • 从输入URL到页面加载发生了什么
  • 从伪并行的 Python 多线程说起
  • 基于Android乐音识别(2)
  • 前端存储 - localStorage
  • 设计模式走一遍---观察者模式
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • Spring第一个helloWorld
  • 阿里云ACE认证学习知识点梳理
  • 说说我为什么看好Spring Cloud Alibaba
  • !$boo在php中什么意思,php前戏
  • #android不同版本废弃api,新api。
  • #if #elif #endif
  • $.ajax()
  • (arch)linux 转换文件编码格式
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C语言)fread与fwrite详解
  • (C语言)共用体union的用法举例
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (附源码)计算机毕业设计ssm电影分享网站
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)Thymeleaf用法——Thymeleaf简介
  • (一)基于IDEA的JAVA基础10
  • .NET 设计一套高性能的弱事件机制
  • .NET 中创建支持集合初始化器的类型
  • .net6 webapi log4net完整配置使用流程
  • @Autowired和@Resource的区别
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?