课程说明项内容课程类型视屏课程内容类型Hadoop课程名称Hadoop大数据实战开发地址https://edu.csdn.net/course/detail/24831时长2400费用免费学习心得看了那么多的Hadoop课程除了linux和hadoop安装配置外内容基本都集中在HDFS和MapReduce上还有少量的YARN内容。我主要关注HDFS和MapReduce因为学习Hadoop的目的不是为了做运维也不是为了搭建Hadoop系统是为了数据处理任务的排错和优化。当前大数据开发平台的产品越来越成熟以后除了运维外大数据的工作基本不怎么涉及这些技术更多的是数据处理方面的内容如数据分析、挖掘、可视化等数据处理工作。受限于资源和对任务稳定性的要求任务排错优化是必不可少的。了解了HDFS就能知道一些数据文件导致的错误的原因了解了MapReduce的过程就能知道如何优化任务提升效率。如小文件过多会占用大量内存任务读取数速度越会很慢。合适的压缩方式可以节省存储空间更重要的是能减少加载数据的速度。任务在运行时会拆分出多个任务如果任务间计算量差异较大最后完成的任务拖累整个任务的运行时长。shuffle过程涉及大量的磁盘读写和网络通信速度比较慢是任务优化需要重点关注的一个过程。课程目录和概要一.大数据概论码农眼中的大数据偏向技术会关注技术细节谁在使用市场人员眼中的大数据偏向应用会关注能做什么有什么价值大数据核心是大量数据的存储和大量数据的计算二.集群搭建和Hadoop安装部署这是运维的工作三.HDFS入门HDFS优点处理超大文件因为分布式计算可以把超大文件分解成小文件运行几乎无上限依赖资源处理非结构化数据流式的数据访问运行于廉价的商用机器集群上因为容错性强所以对硬件要求较低可以使用便宜的机器集群HDFS局限性不适合处理低延时数据访问因为分布式架构组织复杂效率低可以使用HBase无法高效存储大量的小文件因为架构的特性组织复杂文件越多效率越低可以合并小文件不支持多用户写入及任务修改文件因为架构的特性单个文件是最小单位不支持文件内的操作HDFS特性高容错可扩展、可配置跨平台shell命令接口负载均衡Wed界面HDFS数据块是数据单位一个文件如果超过数据块的限制将会被切割数据块就像是容器用来存储数据按照一定的规范标准避免数据过大同时一个容易可以存多个数据避免空间浪费用数据库切割文件目的是为了方便后续分布式计算、数据备份、数据寻址等操作NameNode存储元数据元数据保存在内存保存文件、block、datanode之间的关系DataNode存储文件内容文件内容保存在磁盘维护了block id到datanode本地文件的映射关系Hadoop的HA之所以很多地方都在提HA因为这是Hadoop的一个很重要的特性就是高容错通过冗余的设定可以在问题发生会还能继续运行系统预留处理问题的时间不影响业务四.HDFS接口hadoop fs的命令可以对文件进行基本操作创建删除目录上传下载文件FileSystem是java的文件系统接口可以实现对文件的读、写、查询等操作使用java.net.URL可以从Hadoop URL中读取数据五.HDFS的运行机制使用RPC实现文件的读取、写入确保文件一致性创建Standby NameNode实时同步Active NameNode状态确保主节点不可用的时候能及时切换到从节点上HDFS Federation 是解决 namenode 内存瓶颈问题的水平横向扩展方案它们之间相互独立且不需要互相协调各自分工管理自己的区域六.Hadoop I/O流操作HDFS会在数据写入、存储、读取时计算验证校验和以保证数据完整性。如果出现损坏可以通过复制正确的副本文件恢复压缩数据可以减少存储空间提升数据传输速度。基于不同的应用场景可以选择不同的压缩算法压缩比、解压缩速度、数据是否可拆分将内存中的对象或数据转换成字节数组以便于存储持久化和网络传输这就是序列化反序列化就是将字节数组转换成内存对象。SequenceFile可以用二进制键值对的方式存储数据节省空间也可以作为小文件的容器包装小文件提高存储和处理效率七.初识MapReduce编程模型MapReduce是一种数据处理的编程模型支持多种语言本质是并行运行的适合处理大规模数据集包含Map和Reduce两部分map用来处理拆分后的数据reduce用来对map的处理做汇总MapReduce流程Input输入-》Splitting拆分-》Mapping计算-》Shuffling混洗-》Reduceing合并-》Final result输出所有的Map都完成后才能进行Reduce阶段所有的Reduce都完成后才能输出。如果各map和reduce计算量分布不均耗时最长任务的就是瓶颈八.MapReduce运行机制与YARN平台MapReduce架构yarn负责资源分配resourceManage负责接受客户端的作业请求master.ApplicationMaster负责把计算任务分配给YarnChild负责监控YarnChild上任务的执行情况slave.Yarnchild负责执行具体的计算任务MapReduce作业的运行过程提交作业开始获取作业运行的ID拷贝作业运行时所需要的jar以及其他的资源文件提交作业真正的提交初始化作业获取分片数据创建TaskTracker和Jobtracker通信机制获取任务运行的资源开辟内存JVM运行具体的map或者reduce任务Shuffle和排序为了确保每个reducer的输入都按键排序map和reduce之间有个排序过程成为shuffleshuffle分为map端shuffle和reduce端shuffle两部分map端的shuffle在map完成写数据到内存后进行分区、排序、合并然后再写入磁盘reduce端的shuffle会拷贝各map的文件合并排序传给reduce任务的执行一个分片默认值启动一个任务如果一个任务运行时间过长系统会启动推测任务即重复启动相同的任务避免任务出问题后再重启速度太慢YARN的架构ResourceManager负责资源管理、调度和监控只有一个NodeManager负责单个节点的资源管理和监控接收AM的命令像RM汇报ApplicationMaster负责管理单个应用程序向RM申请资源启动任务负责任务运行和容错Container资源CPU、内存等的抽象AM获得了eContainer才能启动任务AM本身就运行在Container中