一.大数据的认识1.定义大数据big data指在一定时间范围内不能以常规软件工具处理存储和计算的大而复杂的数据集。大数据是就是使用单台计算机没法再规定时间内处理完或者压根就没法处理的数据集。2.特性1大量(Volume)——数据规模巨大含义数据的体量非常庞大起步通常以TB太字节PB拍字节甚至EB艾字节为单位远超传统单台服务器或关系型数据库的存储和处理能力。来源社交媒体的图文视频电商交易记录物联网传感器数据各种系统日志等。技术应对这也就是为什么需要分布式存储如你之前问HDFS把大文件切块存到多台机器上2Velocity(高速) ——产生和处理速度快含义包含两层意思一是数据产生的速度极快如双十一购物节每秒几十万笔交易二是要求数据处理的速度极快如实时风控实时推荐必须在毫秒或秒级给出结果。技术应对:传统批处理已经不够用了需要引入流式计算(如kafka,FlinkSpark Streaming)进行实时处理。3Variety(多样)——数据类型繁多含义大数据不仅仅是传统的表格数据。包括三种类型结构化数据高度组织化的数据如关系型数据库中的二维表占比约10%-20%。半结构化数据有一定结构但不符合关系型数据库模型如JSONXMLHTML日志文件。非结构化数据没有固定结构的数据如视频音频图片办公文档占比最大约80%。技术应对催生了NoSQL数据库如MongoDB,HBase以及各类分布式文件系统。4Value(价值) ——价值密度低整体价值高含义这是大数据最核心的特征。以视频监控为例连续录制24小时可能只有几秒钟是有用的如事故发生瞬间。数据量越大单条数据价值密度往往越低。但是通过海量数据的关联分析和挖掘沙里淘金可以得出极具商业价值的宏观法律。技术应对需要强大的数据清洗数据挖掘和机器学习算法5Veracity真实性/准确性——数据质量参差不齐含义由于数据来源广泛充斥着大量的噪声缺失值异常值甚至虚假数据如水军评论错误传感器读数。garbage in,garbage out垃圾进垃圾出如果数据不准确分析结果毫无意义。技术应对需要进行严格的数据治理数据质量校验和清洗机制。二.Hadoop1.架构的选择在大数据处理上Hdoop并非唯一的分布式处理架构但是对于大部分企业来说基于Hadoop已经能够满足绝大部分的数据需求因此才会成为现在的主流选择。2.Hadoop概述生动类比一下北冥有鱼其名为鲲鲲之大一锅炖不下鲲代表海量数据大数据而一锅炖不下就是传统单机服务器面临的窘境存储和算力撑爆了为了解决炖不下的难题Hadoop这位大厨派出了三位核心干将HDFS(存储)MapReduce(计算)YARN调度。1HDFS分布式存储系统——怎么存放这只鲲一个锅单机塞不下1.切块Block:既然一锅炖不下那就把鲲切成块默认每块128MB。把200斤的鲲切成无数个小块。2.分布式存放DataNode:所有锅集群把切好的鲲放到不同的锅里面去。3.多副本备份为了防止某个锅突然坏了还要多备几个锅存放鲲高容错。4.总账本NameNode:所有的鲲都下锅了要有一个负责人来拿个小本本记一下鲲的左胸肉在哪锅鲲的头在哪锅如果厨师要做的话问负责人你要做哪个部位就行相当于一个目录这就是系统底层细节透明的分布是基础架构2MapReduce(分布式计算框架)——怎么把鲲做熟,相当于干活的厨子Map分工总管一声令下所有厨师计算结点同时开火1号锅前的厨子做红烧鱼2号锅前的厨子做清蒸鱼3号锅前的厨子做成水煮鱼4号锅前的厨子做酸菜鱼5号锅前的厨子做剁椒鱼头...,把大任务拆分成无数个小任务大家一起干。Reduce(汇总)每个厨子做完自己的那部分后把菜端到一个桌子上由一个总厨负责拼盘汇总结果最终端出一道全鱼宴这就是分布式计算的核心精髓计算向数据靠拢分而治之。3资源调度框架YARN——谁来指挥这群厨子YARN大总管作用好几万个锅几万个厨子有的想用大火有想用蒸锅有的想停工休息算力资源分配。如果乱成一锅粥不仅做不完菜厨房还会炸掉。资源调度YARN就是后厨的调度员。它负责盯着所有的切菜板炉灶CPU和内存。如果你这组做红烧鱼需要3个灶台它就去分配用完立刻收回给下一组清蒸鱼支持其他菜系生态开放以前Hadoop的后厨只能用MapReduce这把菜刀。现在有了YARN这个调度员后厨甚至可以请来做川菜的Spark厨师或者做快餐的Flink厨师。YARN能“细粒度地管理和调度任务”让大家和谐共处。Hadoop体系就是在你发现“鲲一锅炖不下”时为你提供地一套完整分布式解决方案HDFS负责把鲲切块多备份放不同锅里解决放不下MapReduce负责把做法拆解给所有人同时做解决算不动YARN负责把所有的灶台和切菜板合理分配给不同的任务解决资源乱3.Hadoop标准定义Hadoop 是 Apache软件基金会下一个开源分布式计算平台以 HDFSHadoop Distributed File System、MapReduceHadoop2.0加入了YARNYarn是资源调度框架能够细粒度的管理和调度任务还能够支持其他的计算框架比如spark为核心的 Hadoop 为用户提供了系统底层细节透明的分布式基础架构。hdfs的高容错性、高伸缩性、高效性等优点让用户可以将Hadoop部署在低廉的硬件上形成分布式系统。是一个由 Apache 基金会所开发的分布式系统基础架构主要解决海量数据的储存和海量数据的分析计算问题。广义上说Hadoop 是一个更广泛的概念Hadoop 生态圈。4.分布式通俗点把一整块大东西分成小东西分布式通常指分布式系统把多台独立计算机节点通过网络连接起来让它们分工协作对外表现得像一个整体系统。可以这样理解多节点不是一台机器干活而是多台机器共同完成。靠网络通信节点之间通过消息传递协调而不是共享同一块内存对外像一个系统用户可能感觉不到背后有很多机器。可扩展机器不够就加节点提升处理能力或存储容量。容量某个节点坏了其他节点可以继续工作有协调成本更多要考虑一致性网络延迟分区故障数据复制等问题。5.HDFS产生背景分布式文件管理系统中得一种通过目录树来定位条件适合一次写入多次读出。一个文件经过创建写入和关闭之后就不需要改变。架构概述NameNode(nm):存储文件得元数据如文件名文件目录结构文件属性生成时间副本数文本权限以及每个文件得块列表和块所在的DataNode等配置副本策略处理的客户端的读写请求。DataNode(dn):在本地文件系统存储文件块数据以及块数据的校验和执行数据块的读/写操作Secondary NameNode(2nm)每隔一段时间对NameNode元数据备份并非热备当NameNode挂掉的时候并不能马上替换NameNode并提供服务紧急情况可辅助恢复NameNode。Client:将上传到HDFS的文件切分成块128M/256M与NameNode交互获取文件位置信息与DataNode交互读取写入数据管理HDFS例如NameNode格式化对HDFS增删改查。优缺点优点数据规模能够达到GB TBPB级别文件规模能够处理百万规模以上的文件数量高容错性数据自动给保存多个副本某一个副本丢失之后可以自动恢复适合处理大数据可构建在廉价的机器上通过多副本机制提高可靠性。缺点不适合低延时数据访问毫秒级的存储数据无法高效的对大量小文件进行存储存储大量小文件的话会占用NameNode大量的内存来存储文件目录和块信息。NameNode的内存总是有限的小文件的存储寻址时间会超过读取时间违反HDFS的设计目标不支持并发写入文件随机修改一个文件只能有一个写不允许多个线程同时写仅支持数据追加不支持文件的随机修改。6.写数据流程1概念的部分Client(客户端)负责发起文件写入请求将文件切分为Block,并最终将数据流式发送。NameNode(元数据节点)负责管理文件系统的命名空间Namespace和Block映射信息不负责实际数据的存储。DataNode(数据节点)负责实际数据的存储。在写入过程中多个DataNode会构成一条数据传输管道Pipeline。Block(数据块)HDFS默认的存储单元图中为128M。图中的ss.avi为200M将被物理切分为0-128M和128-200M两个BlockPacket(数据包)数据传输的基本单位默认64KB.Chunk数据片段Packet的组成部分每个Chunk默认512字节并附带4字节的Checksum(校验和)用于数据完整性验证。2流程阶段一元数据交互与节点分配1.请求创建文件客户端DistributedFileSystem向NameNode发起RFC请求请求在指定路径/user/atguigu/ss.avi创建文件2.权限与目录校验NameNode收到请求后检查目录树结构判断目标是否存在父目录是否存在以及客户端是否具备写权限。校验通过后向客户端返回响应。3.请求分配Block客户端开始将文件逻辑切块。向NameNode请求上传第一个Block(0-128M),并询问该Block应存放的DataNode地址。4.返回存储节点列表NameNode根据机架感知策略Rack Awareness,为当前Block分配3个副本节点dn1,dn2,dn3,并将节点列表返回客户端。阶段二构建数据管道5.建立传输管道客户端获取节点列表后并非同时向三个节点发送数据而是串行建立连接。客户端与dn1建立Socket连接dn1请求与dn2建立连接dn2请求与dn3建立连接。由此形成一个链式Pipeline。6.反向ACK应答连接建立完成后dn3向dn2发送确认ACKdn2向dn1发送确认dn1最终向客户端发送确认。只有当整条Pipeline均返回成功客户端才会开始传输数据。阶段三数据流式传输与完成7.流式传输数据Packet客户端开始向dn1发送数据。数据以Packet(64KB)为单位进行发送。每个Packet 内部包含多个512Byte的Chunk以及其对应的4Byte校验和。传输机制dn1收到数据后一边写入本地磁盘先写入内存Bytebuffer,再刷盘blk-1,一边将数据原样转发给dn2;dn2同理转发给dn3形成流水线复制。8.传输完成与元数据更新第一个Block传输完成后客户端继续请求上传第二个Block(循环步骤3-7)。当所有Block传输完毕客户端向NameNode发送完成信号closeNameNode最终提高元数据完成整个文件的写入7.读数据流程阶段一获取元数据1.请求下载文件客户端调用DistributedFileSystem的open()方法向NameNode发起RPC请求请求读取路径为/user/atguigu/ss.avi的文件2.返回目标文件元数据NameNode收到请求后校验权限并查询元数据目录树。然后向客户端返回该文件的元数据信息。注图中返回的信息为{[blk_1,blk_2],[blk_1,blk_2],[blk_1,blk_2]。这表示该文件由blk_1和blk_2两个数据块组成且每个数据块有3个副本块分别存在于dn1,dn2,dn3上。阶段二拉取数据3.请求读取第一个Block:客户端拿到元数据后创建FSDataInputStream。根据就近原则客户端从blk_1的副本列表中挑选一个距离最近的DataNode图中选择了dn1请求读取blk_10-128M4.传输数据DataNode1从磁盘读取对应的blk_1,通过数据流源源不断地发送给客户端。5.请求读取第二个Block:当blk_1读取完毕后客户端接着向拥有blk_2的DataNode发起请求图中选择了dn2请求读取blk_2(128M-200M).6.传输数据DataNode2将blk_2的数据传输给客户端注1.就近原则短路读取客户端在向NameNode请求数据时NameNode会返回包含该Block副本的所有DataNode列表。客户端并非随机选一个而是会计算自己与各个DataNode的网络距离机架感知。优先选择同一机架的节点甚至可以做到“短路读取Short-Circuit Read即客户端直接读取本地DataNode的磁盘文件极大节省网络带宽。2.串行读取Block,并行读取节点读Block是串行如图1-6步所示客户端必须先读完blk_1,才能读取blk_2(因为最终要拼接成一个有序的文件流)。读DataNode是并行HDFS支持客户端并行从多个不同的DataNode节点拉取不同的Block3.异常重试与容错机制步骤4读取过程中DataNode1突然宕机或网络中断客户端不会直接报错。客户端会记录该节点故障——向NameNode报告——自动拥有blk_1的下一个节点如dn2发起请求实现无缝切换保证读取的连续性。4.Checksum校验读数据时DataNode发出的数据同样包含校验和。客户端收到数据后会用FSDataInputStream内部的校验机制进行计算比对确保网络传输过程中数据没有损坏。8.NameNode工作机制Fsimage文件HDFS文件系统源数据的一个永久性的检查 点其中包含HDFS文件系统的所有目录和文件inode的序列化信息。Edits文件存放HDFS文件系统的所欲哦更新操作的路径文件系统客户端执行的所有写操作首先会被记录到Edits文件中默认1小时检查执行一次1分钟检查一次操作次数当操作次数达到100w时SecondaryNameNode执行一次。9.DataNode工作机制10.MapReduce定义MapReduce是一个分布式运算程序的编程框架是用户开发基于Hadoop的数据分析应用的核心框架MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序并发运行在一个Hadoop集群上优缺点优点易于编程用户只需要关心业务逻辑实现框架的接口。良好的扩展性可以动态增加服务器解决计算资源不够的问题。高容错性任何一台机器挂掉可以将任务转移到其他节点适合海量数据计算TB/PB几千台服务器共同计算缺点不擅长实时计算Mysql不擅长流式计算SparklessStreaming/Flink不擅长DAG有向无环图计算出来的结果作为下一次计算的参数迭代计算计算Spark架构概述Map阶段并行处理输入数据Reduce阶段对Map结果进行汇总MapReduce核心思想一个完整的MapReduce程序在分布式运行时有三类实例进程MrAppMaster负责整个程序的过程调度及状态协调MapTask负责Map阶段的整个数据处理流程ReduceTask:负责Reduce阶段的整个数据处理流程
阅读完成 · 觉得有帮助?