大数据与分布式计算-课件_第1页
大数据与分布式计算-课件_第2页
大数据与分布式计算-课件_第3页
大数据与分布式计算-课件_第4页
大数据与分布式计算-课件_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大数据与分布式计算1大数据与分布式计算1HDFSHadoopDistributedFileSystem2HDFSHadoopDistributedFileSy1990年,一个普通的硬盘驱动器可存储1370MB的数据并拥有4.4MB/s的传输速度,所以,只需五分钟的时间就可以读取整个磁盘的数据。20年过去了,1TB级别的磁盘驱动器是很正常的,但是数据传输的速度却在100MB/s左右。所以它需要花两个半小时以上的时间读取整个驱动器的数据。从一个驱动器上读取所有的数据需要很长的时间,写甚至更慢。如何解决?磁盘损坏数据丢失怎么办?如果需要存储计算1000T数据怎么办?31990年,一个普通的硬盘驱动器可存储13常用RAID技术4常用RAID技术455HDFS系统架构6HDFS系统架构677什么是HDFS?HadoopDistributedFileSystemHadoopDistributedFileSystem(HDFS)istheprimarystoragesystemusedbyHadoopapplications.HDFScreatesmultiplereplicas

ofdatablocksanddistributesthemoncomputenodesthroughoutaclustertoenablereliable,extremelyrapidcomputations.8什么是HDFS?HadoopDistributedFilHDFS设计目标HDFS以流式数据访问模式存储超大文件,运行于商用硬件集群上。9HDFS设计目标HDFS以流式数据访问模式存储超大文件,运行超大文件流式数据访问一次写入多次读取商用硬件10超大文件10不适合HDFS的场景低延迟的数据访问大量小文件超过NameNode的处理能力多用户任意写入修改文件11不适合HDFS的场景低延迟的数据访问11HDFS为了做到可靠性(reliability)创建了多份数据块(datablocks)的复制(replicas),并将它们放置在服务器群的计算节点中(computenodes),MapReduce就可以在它们所在的节点上处理这些数据了。12HDFS为了做到可靠性(reliability)创建了多份数设计目标假设:节点失效是常态理想:1.任何一个节点失效,不影响HDFS服务2.HDFS可以自动完成副本的复制13设计目标假设:13HDFS主要组件的功能

14HDFS主要组件的功能14文件文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等DataNode在本地文件系统存储文件块数据,以及块数据的校验和可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。15文件文件切分成块(默认大小64M),以块为单位,每个块有多个分而治之(DivideandConquer)16分而治之(DivideandConquer)16分而治之(DivideandConquer)17分而治之(DivideandConquer)17分而治之(DivideandConquer)18分而治之(DivideandConquer)18MapReduce19MapReduce19MapReduce:大规模数据处理处理海量数据(>1TB)上百/上千CPU实现并行处理简单地实现以上目的移动计算比移动数据更划算

分而治之(DivideandConquer)20MapReduce:大规模数据处理处理海量数据(>1TB)2MapReduce特性自动实现分布式并行计算容错提供状态监控工具模型抽象简洁,程序员易用21MapReduce特性自动实现分布式并行计算21MapReduce它由称为map和reduce的两部分用户程序组成,然后利用框架在计算机集群上面根据需求运行多个程序实例来处理各个子任务,然后再对结果进行归并。22MapReduce它由称为map和reduce的两部分用户程2323WordCount24WordCount24252526262727282829293030MapReduce31MapReduce31MapReduce物理上32MapReduce物理上32MapReduce33MapReduce3334343535Hive36Hive36373738383939SQLSub-queriesinfromclauseEqui-joinsInnerLeft,Right,fullOuterMulti-tableInsertMulti-group-by40SQL40ExtensibilityPluggableMap-reducescriptsPluggableUserDefinedFunctionsPluggableUserDefinedTypesComplexobjecttypes:ListofMapsPluggableDataFormatsApacheLogFormatColumnarStorageFormat41Extensibility41HiveQL–JoinINSERTOVERWRITETABLEpv_usersSELECTpv.pageid,u.ageFROMpage_viewpv JOINuseru ON(pv.userid=u.userid);42HiveQL–Join42HiveQL–JoininMapReducepage_viewuserpv_usersMapShuffleSortReduce43HiveQL–JoininMapReducepa了解Hive的意义• Hive是一个很方便的工具,一般的业务人员就可以很快上手。

• M/R任务的数量控制着语句的执行时间。

• 如何减少M/R的任务数量?

• 在写HQL时我们能做什么?

• Hive如何把HQL转化为M/R

job。

• Hive在转化过程中做了哪些优化。

44了解Hive的意义• Hive是一个很方便的工具,一般的业

Driver

Compiler

Hadoop

Hive架构

Client

Metastore

45

DriverCompilerHadoop4646

Driver

Compiler

Hadoop

Hive执行流程• 操作符(Operator)是Hive的最小处理单元

• 每个操作符处理代表HDFS操作或MR作业

• 编译器把Hive

SQL转换成一组操作符

Client

Metastore

47 DriverHadoop Hive执行流程MetaHive操作符操作符TableScanOperator

ReduceSinkOperator

JoinOperator

SelectOperator

FileSinkOperator

FilterOperator

GroupByOperator

MapJoinOperator

LimitOperator

UnionOperator

描述从表中读取数据生成到reduce端的结果数据Join两份数据减少输出列生成结果,输出数据到文件过滤输入数据GroupBy分组操作MapJoin

Hint或者由优化器决定采用MapJoin

Limit限制行数操作Union操作48Hive操作符操作符描述48

Hive执行流程• Hive通过ExecMapper和ExecReducer来执行

MapReduce任务。

• 执行MapReduce时有两种模式

– 本地模式

– 分布式模式

Driver

Compiler

Hadoop

Client

Metastore

49 Hive执行流程– 分布式模式

Driver

Driver

Compiler

Hadoop

Hive编译器

Client

Metastore

50 DriverHadoopHive编译器MetastSpark51Spark51Spark生态系统52Spark生态系统52SparkSpark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map函数和reduce函数及计算模型,还提供更为丰富的算子,如filter、join、groupByKey等。Spark将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。其底层采用Scala这种函数式语言书写而成,并且所提供的API深度借鉴Scala函数式的编程思想,提供与Scala类似的编程接口。53SparkSpark是整个BDAS的核心组件,是一个大数据分Spark任务处理流程54Spark任务处理流程54SparkSQLSparkSQL提供在大数据上的SQL查询功能,类似于Shark在整个生态系统的角色,它们可以统称为SQLonSpark。之前,Shark的查询编译和优化器依赖于Hive,使得Shark不得不维护一套Hive分支,而SparkSQL使用Catalyst做查询解析和优化器,并在底层使用Spark作为执行引擎实现SQL的Operator。用户可以在Spark上直接书写SQL,相当于为Spark扩充了一套SQL算子,这无疑更加丰富了Spark的算子和功能,同时SparkSQL不断兼容不同的持久化存储(如HDFS、Hive等),为其发展奠定广阔的空间。55SparkSQLSparkSQL提供在大数据上的SQL查SparkStreamingSparkStreaming通过将流数据按指定时间片累积为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理。其吞吐量能够超越现有主流流处理框架Storm,并提供丰富的API用于流数据计算。56SparkStreamingSparkStreamingGraphXGraphX基于BSP模型,在Spark之上封装类似Pregel的接口,进行大规模同步全局的图计算,尤其是当用户进行多轮迭代时,基于Spark内存计算的优势尤为明显。57GraphXGraphX基于BSP模型,在Spark之上封装TachyonTachyon是一个分布式内存文件系统,可以理解为内存中的HDFS。为了提供更高的性能,将数据存储剥离JavaHeap。用户可以基于Tachyon实现RDD或者文件的跨应用共享,并提供高容错机制,保证数据的可靠性。58TachyonTachyon是一个分布式内存文件系统,可以理Spark架构59Spark架构59Spark的基本组件。ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器。Worker:从节点,负责控制计算节点,启动Executor或Driver。在YARN模式中为NodeManager,负责计算节点的控制。Driver:运行Application的main()函数并创建SparkContext。60Spark的基本组件。ClusterManager:在StaExecutor:执行器,在workernode上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。SparkContext:整个应用的上下文,控制应用的生命周期。RDD:Spark的基本计算单元,一组RDD可形成执行的有向无环图RDDGraph。DAGScheduler:根据作业(Job)构建基于Stage的DAG,并提交Stage给TaskScheduler。TaskScheduler:将任务(Task)分发给Executor执行。61Executor:执行器,在workernode上执行任务SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。SparkEnv内创建并包含如下一些重要组件的引用。·MapOutPutTracker:负责Shuffle元信息的存储。·BroadcastManager:负责广播变量的控制与元信息的存储。·BlockManager:负责存储管理、创建和查找块。·MetricsSystem:监控运行时性能指标信息。·SparkConf:负责存储配置信息。62SparkEnv:线程级别的上下文,存储运行时的重要组件的引Spark运行逻辑在Spark应用中,整个执行流程在逻辑上会形成有向无环图(DAG)。Action算子触发之后,将所有累积的算子形成一个有向无环图,然后由调度器调度该图上的任务进行运算。Spark的调度方式与MapReduce有所不同。Spark根据RDD之间不同的依赖关系切分形成不同的阶段(Stage),一个阶段包含一系列函数执行流水线。63Spark运行逻辑在Spark应用中,整个执行流程在逻辑上会6464知识回顾KnowledgeReview知识回顾KnowledgeReview大数据与分布式计算66大数据与分布式计算1HDFSHadoopDistributedFileSystem67HDFSHadoopDistributedFileSy1990年,一个普通的硬盘驱动器可存储1370MB的数据并拥有4.4MB/s的传输速度,所以,只需五分钟的时间就可以读取整个磁盘的数据。20年过去了,1TB级别的磁盘驱动器是很正常的,但是数据传输的速度却在100MB/s左右。所以它需要花两个半小时以上的时间读取整个驱动器的数据。从一个驱动器上读取所有的数据需要很长的时间,写甚至更慢。如何解决?磁盘损坏数据丢失怎么办?如果需要存储计算1000T数据怎么办?681990年,一个普通的硬盘驱动器可存储13常用RAID技术69常用RAID技术4705HDFS系统架构71HDFS系统架构6727什么是HDFS?HadoopDistributedFileSystemHadoopDistributedFileSystem(HDFS)istheprimarystoragesystemusedbyHadoopapplications.HDFScreatesmultiplereplicas

ofdatablocksanddistributesthemoncomputenodesthroughoutaclustertoenablereliable,extremelyrapidcomputations.73什么是HDFS?HadoopDistributedFilHDFS设计目标HDFS以流式数据访问模式存储超大文件,运行于商用硬件集群上。74HDFS设计目标HDFS以流式数据访问模式存储超大文件,运行超大文件流式数据访问一次写入多次读取商用硬件75超大文件10不适合HDFS的场景低延迟的数据访问大量小文件超过NameNode的处理能力多用户任意写入修改文件76不适合HDFS的场景低延迟的数据访问11HDFS为了做到可靠性(reliability)创建了多份数据块(datablocks)的复制(replicas),并将它们放置在服务器群的计算节点中(computenodes),MapReduce就可以在它们所在的节点上处理这些数据了。77HDFS为了做到可靠性(reliability)创建了多份数设计目标假设:节点失效是常态理想:1.任何一个节点失效,不影响HDFS服务2.HDFS可以自动完成副本的复制78设计目标假设:13HDFS主要组件的功能

79HDFS主要组件的功能14文件文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等DataNode在本地文件系统存储文件块数据,以及块数据的校验和可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。80文件文件切分成块(默认大小64M),以块为单位,每个块有多个分而治之(DivideandConquer)81分而治之(DivideandConquer)16分而治之(DivideandConquer)82分而治之(DivideandConquer)17分而治之(DivideandConquer)83分而治之(DivideandConquer)18MapReduce84MapReduce19MapReduce:大规模数据处理处理海量数据(>1TB)上百/上千CPU实现并行处理简单地实现以上目的移动计算比移动数据更划算

分而治之(DivideandConquer)85MapReduce:大规模数据处理处理海量数据(>1TB)2MapReduce特性自动实现分布式并行计算容错提供状态监控工具模型抽象简洁,程序员易用86MapReduce特性自动实现分布式并行计算21MapReduce它由称为map和reduce的两部分用户程序组成,然后利用框架在计算机集群上面根据需求运行多个程序实例来处理各个子任务,然后再对结果进行归并。87MapReduce它由称为map和reduce的两部分用户程8823WordCount89WordCount24902591269227932894299530MapReduce96MapReduce31MapReduce物理上97MapReduce物理上32MapReduce98MapReduce33993410035Hive101Hive36102371033810439SQLSub-queriesinfromclauseEqui-joinsInnerLeft,Right,fullOuterMulti-tableInsertMulti-group-by105SQL40ExtensibilityPluggableMap-reducescriptsPluggableUserDefinedFunctionsPluggableUserDefinedTypesComplexobjecttypes:ListofMapsPluggableDataFormatsApacheLogFormatColumnarStorageFormat106Extensibility41HiveQL–JoinINSERTOVERWRITETABLEpv_usersSELECTpv.pageid,u.ageFROMpage_viewpv JOINuseru ON(pv.userid=u.userid);107HiveQL–Join42HiveQL–JoininMapReducepage_viewuserpv_usersMapShuffleSortReduce108HiveQL–JoininMapReducepa了解Hive的意义• Hive是一个很方便的工具,一般的业务人员就可以很快上手。

• M/R任务的数量控制着语句的执行时间。

• 如何减少M/R的任务数量?

• 在写HQL时我们能做什么?

• Hive如何把HQL转化为M/R

job。

• Hive在转化过程中做了哪些优化。

109了解Hive的意义• Hive是一个很方便的工具,一般的业

Driver

Compiler

Hadoop

Hive架构

Client

Metastore

110

DriverCompilerHadoop11146

Driver

Compiler

Hadoop

Hive执行流程• 操作符(Operator)是Hive的最小处理单元

• 每个操作符处理代表HDFS操作或MR作业

• 编译器把Hive

SQL转换成一组操作符

Client

Metastore

112 DriverHadoop Hive执行流程MetaHive操作符操作符TableScanOperator

ReduceSinkOperator

JoinOperator

SelectOperator

FileSinkOperator

FilterOperator

GroupByOperator

MapJoinOperator

LimitOperator

UnionOperator

描述从表中读取数据生成到reduce端的结果数据Join两份数据减少输出列生成结果,输出数据到文件过滤输入数据GroupBy分组操作MapJoin

Hint或者由优化器决定采用MapJoin

Limit限制行数操作Union操作113Hive操作符操作符描述48

Hive执行流程• Hive通过ExecMapper和ExecReducer来执行

MapReduce任务。

• 执行MapReduce时有两种模式

– 本地模式

– 分布式模式

Driver

Compiler

Hadoop

Client

Metastore

114 Hive执行流程– 分布式模式

Driver

Driver

Compiler

Hadoop

Hive编译器

Client

Metastore

115 DriverHadoopHive编译器MetastSpark116Spark51Spark生态系统117Spark生态系统52SparkSpark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map函数和reduce函数及计算模型,还提供更为丰富的算子,如filter、join、groupByKey等。Spark将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。其底层采用Scala这种函数式语言书写而成,并且所提供的API深度借鉴Scala函数式的编程思想,提供与Scala类似的编程接口。118SparkSpark是整个BDAS的核心组件,是一个大数据分Spark任务处理流程119Spark任务处理流程54SparkSQLSparkSQL提供在大数据上的SQL查询功能,类似于Shark在整个生态系统的角色,它们可以统称为SQLonSpark。之前,Shark的查询编译和优化器依赖于Hive,使得Shark不得不维护一套Hive分支,而SparkSQL使用Catalyst做查询解析和优化器,并在底层使用Spark作为执行引擎实现SQL的Operator。用户可以在Spark上直接书写SQL,相当于为Spark扩充了一套SQL算子,这无疑更加丰富了Spark的算子和功能,同时SparkSQL不断兼容不同的持久化存储(如HDFS、Hive等),为其发展奠定广阔的空间。120SparkSQLSparkSQL提供在大数据上的SQL查SparkStreamingSparkStreaming通过将流数据按指定时间片累积为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理。其吞吐量能够超越现有主流流处理框架Storm,并提供丰富的API用于流数据计算。121SparkStreamingSparkStreamingGraphXGraphX基于BSP模型,在Spark之上封装类似Pregel的接口,进行大规模同步全局的图计算,尤其是当用户进行多轮迭代时,基于Spark内存计算的优势尤为明显。122GraphXGraphX基于BSP模型,在Spark之上封装TachyonTachyon是一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论