学习_009_Hadoop大数据实战开发

课程说明
内容
课程类型视屏课程
内容类型Hadoop
课程名称Hadoop大数据实战开发
地址https://edu.csdn.net/course/detail/24831
时长2400
费用免费
学习心得

看了那么多的Hadoop课程,除了linux和hadoop安装配置外,内容基本都集中在HDFS和MapReduce上,还有少量的YARN内容。

我主要关注HDFS和MapReduce,因为学习Hadoop的目的不是为了做运维,也不是为了搭建Hadoop系统,是为了数据处理任务的排错和优化。
当前大数据开发平台的产品越来越成熟,以后除了运维外,大数据的工作基本不怎么涉及这些技术,更多的是数据处理方面的内容,如数据分析、挖掘、可视化等数据处理工作。
受限于资源和对任务稳定性的要求,任务排错优化是必不可少的。

了解了HDFS,就能知道一些数据文件导致的错误的原因,了解了MapReduce的过程,就能知道如何优化任务提升效率。
如小文件过多,会占用大量内存,任务读取数速度越会很慢。合适的压缩方式可以节省存储空间,更重要的是能减少加载数据的速度。任务在运行时,会拆分出多个任务,如果任务间计算量差异较大,最后完成的任务拖累整个任务的运行时长。shuffle过程涉及大量的磁盘读写和网络通信,速度比较慢,是任务优化需要重点关注的一个过程。

课程目录和概要
一.大数据概论
  1. 码农眼中的大数据,偏向技术,会关注技术细节,谁在使用
  2. 市场人员眼中的大数据,偏向应用,会关注能做什么,有什么价值
  3. 大数据核心是大量数据的存储和大量数据的计算
二.集群搭建和Hadoop安装部署(这是运维的工作)
三.HDFS入门

HDFS优点:

  1. 处理超大文件,因为分布式计算,可以把超大文件分解成小文件运行,几乎无上限(依赖资源)
  2. 处理非结构化数据
  3. 流式的数据访问
  4. 运行于廉价的商用机器集群上,因为容错性强,所以对硬件要求较低,可以使用便宜的机器集群

HDFS局限性:

  1. 不适合处理低延时数据访问,因为分布式架构组织复杂,效率低(可以使用HBase)
  2. 无法高效存储大量的小文件,因为架构的特性,组织复杂,文件越多效率越低(可以合并小文件)
  3. 不支持多用户写入及任务修改文件,因为架构的特性,单个文件是最小单位,不支持文件内的操作

HDFS特性:

  1. 高容错,可扩展、可配置
  2. 跨平台
  3. shell命令接口
  4. 负载均衡
  5. Wed界面

HDFS数据块是数据单位

  1. 一个文件如果超过数据块的限制,将会被切割
  2. 数据块就像是容器,用来存储数据,按照一定的规范标准
  3. 避免数据过大,同时一个容易可以存多个数据,避免空间浪费
  4. 用数据库切割文件,目的是为了方便后续分布式计算、数据备份、数据寻址等操作

NameNode

  1. 存储元数据
  2. 元数据保存在内存
  3. 保存文件、block、datanode之间的关系

DataNode

  1. 存储文件内容
  2. 文件内容保存在磁盘
  3. 维护了block id到datanode本地文件的映射关系

Hadoop的HA

  1. 之所以很多地方都在提HA,因为这是Hadoop的一个很重要的特性,就是高容错
  2. 通过冗余的设定,可以在问题发生会还能继续运行系统,预留处理问题的时间,不影响业务
四.HDFS接口
  1. hadoop fs的命令可以对文件进行基本操作(创建删除目录,上传下载文件)
  2. FileSystem是java的文件系统接口,可以实现对文件的读、写、查询等操作
  3. 使用java.net.URL可以从Hadoop URL中读取数据
五.HDFS的运行机制
  1. 使用RPC实现文件的读取、写入,确保文件一致性
  2. 创建Standby NameNode实时同步Active NameNode状态确保主节点不可用的时候能及时切换到从节点上
  3. HDFS Federation 是解决 namenode 内存瓶颈问题的水平横向扩展方案,它们之间相互独立且不需要互相协调,各自分工,管理自己的区域
六.Hadoop I/O流操作
  1. HDFS会在数据写入、存储、读取时计算验证校验和,以保证数据完整性。如果出现损坏,可以通过复制正确的副本文件恢复
  2. 压缩数据可以减少存储空间,提升数据传输速度。基于不同的应用场景,可以选择不同的压缩算法(压缩比、解压缩速度、数据是否可拆分)
  3. 将内存中的对象或数据,转换成字节数组,以便于存储(持久化)和网络传输,这就是序列化,反序列化就是将字节数组转换成内存对象。
  4. SequenceFile可以用二进制键值对的方式存储数据,节省空间,也可以作为小文件的容器,包装小文件,提高存储和处理效率
七.初识MapReduce编程模型
  1. MapReduce是一种数据处理的编程模型,支持多种语言,本质是并行运行的,适合处理大规模数据集
  2. 包含Map和Reduce两部分,map用来处理拆分后的数据,reduce用来对map的处理做汇总
  3. MapReduce流程:Input(输入)-》Splitting(拆分)-》Mapping(计算)-》Shuffling(混洗)-》Reduceing(合并)-》Final result(输出)
  4. 所有的Map都完成后,才能进行Reduce阶段,所有的Reduce都完成后,才能输出。如果各map和reduce计算量分布不均,耗时最长任务的就是瓶颈
八.MapReduce运行机制与YARN平台

MapReduce架构

  1. yarn负责资源分配
  2. resourceManage负责接受客户端的作业请求
  3. master.ApplicationMaster负责把计算任务分配给YarnChild,负责监控YarnChild上任务的执行情况
  4. slave.Yarnchild负责执行具体的计算任务

MapReduce作业的运行过程

  1. 提交作业(开始)
  2. 获取作业运行的ID
  3. 拷贝作业运行时所需要的jar以及其他的资源文件
  4. 提交作业(真正的提交)
  5. 初始化作业
  6. 获取分片数据
  7. 创建TaskTracker和Jobtracker通信机制
  8. 获取任务运行的资源
  9. 开辟内存JVM
  10. 运行具体的map或者reduce任务

Shuffle和排序

  1. 为了确保每个reducer的输入都按键排序,map和reduce之间有个排序过程,成为shuffle
  2. shuffle分为map端shuffle和reduce端shuffle两部分
  3. map端的shuffle在map完成写数据到内存后,进行分区、排序、合并,然后再写入磁盘
  4. reduce端的shuffle会拷贝各map的文件合并排序,传给reduce

任务的执行

  1. 一个分片默认值启动一个任务,如果一个任务运行时间过长,系统会启动推测任务,即重复启动相同的任务,避免任务出问题后再重启速度太慢

YARN的架构

  1. ResourceManager:负责资源管理、调度和监控,只有一个
  2. NodeManager:负责单个节点的资源管理和监控,接收AM的命令,像RM汇报
  3. ApplicationMaster:负责管理单个应用程序,向RM申请资源启动任务,负责任务运行和容错
  4. Container:资源(CPU、内存等)的抽象,AM获得了eContainer才能启动任务,AM本身就运行在Container中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值