学习_008_Hadoop从初级到高手

该博客介绍了Hadoop的学习心得,包括Hadoop的部署、MapReduce编程、Map和Reduce的详细解析,以及Hadoop的高可用性。通过学习,理解了Hadoop的存储、计算和调度机制,MapReduce的完整过程,数据倾斜问题及其解决方案,以及Hadoop的HA实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

课程说明
内容
课程类型视屏课程
内容类型Hadoop
课程名称hadoop从初级到高手
地址https://edu.youkuaiyun.com/course/detail/6841
时长1500
费用免费
学习心得

这个视频课程讲的非常详细,先把课程内容结构列出,再用流程图的方式讲解过程细节,再进行实际编码操作,最后验证数据,总结回顾。
因为我最主要的是了解Hadoop的结构、原理、过程。并不需要了解Hadoop的搭建、配置、MapReduce的编程,所以跳过的比较多。课程1500分钟,双倍速度播放,一共用了大概5个小时近300分钟的时间。虽然没有上机操作,但收获还是很多的。

  1. 更清楚了Hadoop存储、计算、调度之间的关系,HDFS不只是存储,更重要的工作是文件管理,自动实现分布式的文件读、写、存、备份、容错等功能
  2. 理解了MapReduce计算的完整过程,这有利于以后数据处理任务开发时的排错和优化
  3. 了解了数据处理中常见的数据倾斜问题发生的原理和处理方式
  4. 终于知道了为什么都说Hadoop扩展性强,成本低,易管理,高可用,强容错。通过把文件、存储甚至是计算资源切分成更小单位后重组的方式,实现了部分变更不影响整体,避免了部分问题引发全面崩溃,实现了部分新增扩展整体资源上限的能力。这就像是把原先的一根链条变成了一张大网,链条任意缓解断裂,整个链条就断裂了。但一张网的某些节点断裂,并不会太影响这张网的作用。能这样做,也是因为资源充足,可以冗余备份。
课程目录和概要
一.Hadoop的部署和配置

1.Hadoop组成

  • Common
  • HDFS(分布式文件系统)
  • MapReduce(MR编程模型)
  • YARN(资源调度框架)

2.Hadoop的部署模式

  • Local(本地)
  • Pseudo(伪分布式)
  • Full(完全分布式)

3.Hadoop的管理

  • 配额管理(目录配额/空间配额)
  • 快照管理(记录的是数据的差异)
  • 镜像管理(记录的是复制的数据)

4.Hadoop数据写入流程剖析

  • client联系Namenode
  • 数据先写入client的缓冲区
  • 缓冲区有两个队列
  • send是发送队列(数据发送后会进入ack队列)
  • ack是确认队列(收到消息的回执会删除数据)
  • 通过packet(64K)的方式发送,内部有chunk(512b+4b)
  • 通过pipeline,写入dn1后,自动写入dn2和dn3

5.各种压缩算法效能评测

  • 如何在HDFS中进行数据压缩以实现高效存储?(这篇文章写得更详细)
  • http://blog.itpub.net/31545816/viewspace-2215281/
二.MapReduce的编程

1.Map负责变换(对数据切分转换为kv格式)

  • 输出的数据是kv格式
  • Map的数量取决于split的结果

2.Reduce负责聚合(对kv数据按k进行聚合)

  • Map的输出是Reduce的输入
  • 输入输出的数据都是kv格式
  • Reduce的数量可以自行指定

3.Shuffle负责混洗(核心机制:数据分区,排序,局部聚合,缓存,拉取,再合并 排序)

  • Hadoop学习之路(二十三)MapReduce中的shuffle详解(这篇文章写得更详细)
  • https://www.cnblogs.com/qingyunzong/p/8615024.html
  • Map和Reduce中间有Shuffle的过程(混洗)
三.Map和Reduce详解

1.排序

  • 部分排序(Map输出的数据在单个Reduce里基于key有序)
  • 全排序(所有Reduce的key都有序)
  • 二次排序(Reduce里的key和value都有序)

2.连接查询(内连接,外连接,全连接)

  • Map端连接(数据到达Map处理函数之前进行合并,效率远高于Reduce端连接,适合一大一小表可以都加载到内存中)
  • Reduce端连接(通过二次排序,所有数据都要经过Shuffle,非常消耗资源,能解决两个大表的问题)

3.数据倾斜(大量的数据聚集在少数几个节点运算)

  • Map较少产生倾斜,Reduce的倾斜主要是经过hashpartitioner后大部分数落入了少数几个Reduce中
  • 硬倾斜:大量数据的key相同,落入到相同的Redduce中
  • 软倾斜:输入的key不同,经过分组计算落入到了相同的Reduce中

4.数据倾斜解决方法

  • 重新设置key,可解决硬倾斜
  • 重新设计分区类(放弃hash分区,使用随机分区)
四.MapReduce全流程详解

1.InputFormat(输入)

  • getSplits()
  • createReader()
  • isSplits()

2.RecordReader(阅读器)

  • nextKV()

3.Map

  • run()
  • setup()
  • loop:map
  • cleanup()
  • Partitioner
  • combiner

4.Reduce

  • shot:sortsortComparator(key - value)
  • group:groupComparator
  • run()
  • setup
  • loop:reduce
  • clean()

5.OutputFormat

  • getRecordWriter()

6.Writer

  • write(key,value)
五.Hadoop的高可用(HA)
  1. Hadoop的HA(高可用)实现方式就是 冗余+故障自动转移
  2. 异地多活,一个出故障了,立即切换另一个,两个同时出故障几率太小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值