大数据与分布式计算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大数据与分布式计算
HDFS
Hadoop Distributed File System
1990年,一个普通的硬盘驱动器可存储1370 MB的数据并拥有4.4 MB/s的传输速度 ,所以,只需五分钟的时间就可以读取整个磁 盘的数据。
20年过去了,1 TB级别的磁盘驱动器是很正常的,但是数据传输的速 度却在100 MB/s左右。所以它需要花两个半小时以上的时间读取 整个驱动器的数据。
• 执行MapReduce时有两种模式
– 本地模式
– 分布式模式
Client
Metastore
Driver Compiler
Hadoop
Hive编译器
Client
Metastore
Driver Compiler
Hadoop
Spark
Spark生态系统
Spark
Spark是整个BDAS的核心组件,是一个大数据分布式编程框 架,不仅实现了MapReduce 的算子map函数和reduce函数及计算模型,还提供更为丰富 的算子,如filter、join、 groupByKey等。Spark将分布式数据抽象为弹性分布式数据 集(RDD),实现了应用任务调 度、RPC、序列化和压缩,并为运行在其上的上层组件提供 API。其底层采用Scala这种函数式语言书写而成,并且所提 供的API深度借鉴Scala函数式的编程思想,提供与Scala类似 的编程接口。
222 <1,1>
111 <2,25>
Map user
Shuffle Sort
Reduce
userid age gender
key value
key value
111 25 female 222 32 male
111 <2,25> 222 <2,32>
222 <1,1> 222 <2,32>
了解Hive的意义
分而治之(Divide and Conquer)
MapReduce特性
• 自动实现分布式并行计算 • 容错 • 提供状态监控工具 • 模型抽象简洁,程序员易用
MapReduce
它由称为map和reduce的两部分用户程序组成 ,然后利用框架在计算机集群上面根据 需求运行多个程序实例来处理各个子任 务,然后再对结果进行归并。
Client Driver Compiler
Hadoop
Hive执行流程
• 操作符(Operator)是Hive的最小处理单元 • 每个操作符处理代表HDFS操作或MR作业 • 编译器把Hive SQL转换成一组操作符
Client
Metastore
Driver Compiler
Hadoop
Spark任务处理流程
Spark SQL
• Spark SQL提供在大数据上的SQL查询功能,类似于Shark在 整个生态系统的角色,它们可以统称为SQL on Spark。之前 ,Shark的查询编译和优化器依赖于Hive,使得Shark不得不
• 维护一套Hive分支,而Spark SQL使用Catalyst做查询解析和 优化器,并在底层使用Spark作为执行引擎实现SQL的 Operator。用户可以在Spark上直接书写SQL,相当于为 Spark扩充了
文件
• 文件切分成块(默认大小64M),以块为单位,每 个块有多个副本存储在不同的机器上,副本数可在 文件生成时指定(默认3)
• NameNode是主节点,存储文件的元数据如文件名, 文件目录结构,文件属性(生成时间,副本数,文件权 限),以及每个文件的块列表以及块所在的 DataNode等等
• DataNode在本地文件系统存储文件块数据,以及块 数据的校验和
设计目标
假设: 节点失效是常态
理想: 1. 任何一个节点失效, 不影响HDFS服务 2. HDFS可以自动完成副 本的复制
HDFS主要组件的功能
NameNode • 存储元数据
•元数据保存在内存中 • 保存文件,block ,datanode 之间的映射关系
百度文库
DataNode
• 存储文件内容 •文件内容保存在磁盘 •维护了block id到datanode本 地文件的映射关系
Hive QL – Join in Map Reduce
page_view
key value
key value
pageid userid time
111 <1,1>
111 <1,1>
1 111 9:08:01 2 111 9:08:13
111 <1,2>
111 <1,2>
1 222 9:08:14
applications. HDFS creates multiple replicas of
data blocks and distributes them on compute nodes throughout a cluster to enable reliable, extremely rapid computations.
• 可以创建、删除、移动或重命名文件,当文件创建 、写入和关闭之后不能修改文件内容。
分而治之(Divide and Conquer)
分而治之(Divide and Conquer)
分而治之(Divide and Conquer)
MapReduce
MapReduce:大规模数据处理
• 处理海量数据(>1TB) • 上百/上千CPU实现并行处理 • 简单地实现以上目的 • 移动计算比移动数据更划算
磁盘利用率 100% 50% 50% (N-1)/N (N-2)/N
HDFS系统架构
什么是HDFS?
• Hadoop Distributed File System
– Hadoop Distributed File System (HDFS) is the primary storage system used by Hadoop
• Apache Log Format • Columnar Storage Format
Hive QL – Join
INSERT OVERWRITE TABLE pv_users SELECT pv.pageid, u.age FROM page_view pv
JOIN user u ON (pv.userid = u.userid);
• Worker:从节点,负责控制计算节点,启动 Executor或Driver。在YARN模式中为 NodeManager,负责计算节点的控制。
• Driver:运行Application的main()函数并创建 SparkContext。
• Executor:执行器,在worker node上执行任务的组件 、用于启动线程池运行任务。每个Application拥有独立 的一组Executors。
• SparkContext:整个应用的上下文,控制应用的生命周 期。
• RDD:Spark的基本计算单元,一组RDD可形成执行的 有向无环图RDD Graph。
• DAG Scheduler:根据作业(Job)构建基于Stage的DAG ,并提交Stage给TaskScheduler。
• TaskScheduler:将任务(Task)分发给Executor执行。
• Extensibility
– Pluggable Map-reduce scripts – Pluggable User Defined Functions – Pluggable User Defined Types
• Complex object types: List of Maps
– Pluggable Data Formats
• Hive是一个很方便的工具,一般的业务人员 就可以很快上手。
• M/R任务的数量控制着语句的执行时间。 • 如何减少M/R的任务数量? • 在写HQL时我们能做什么? • Hive如何把HQL转化为M/R job。 • Hive在转化过程中做了哪些优化。
Hive架构
Metastore
Hive操作符
操作符 TableScanOperator ReduceSinkOperator JoinOperator SelectOperator FileSinkOperator FilterOperator GroupByOperator MapJoinOperator LimitOperator UnionOperator
• 丰富的API用于流数据计算。
GraphX
• GraphX基于BSP模型,在Spark之上封装类似 Pregel的接口,进行大规模同步全局的图
• 计算,尤其是当用户进行多轮迭代时,基于 Spark内存计算的优势尤为明显。
Tachyon
• Tachyon是一个分布式内存文件系统,可以 理解为内存中的HDFS。为了提供更高的性
从一个驱动器上读取所有的数据需要很长的时间,写甚至更慢。 如何解决?
磁盘损坏数据丢失怎么办?
如果需要存储计算1000T数据怎么办?
常用RAID技术
RAID类型 RAID0 RAID1 RAID10 RAID5 RAID6
访问速度 很快 很慢 中等 较快 较快
数据可靠性 很低 很高 很高 较高 较(RAID5)高
WordCount
MapReduce
• 物理上
MapReduce
MapReduce
Hive
• SQL
– Sub-queries in from clause – Equi-joins
• Inner • Left, Right, full Outer
– Multi-table Insert – Multi-group-by
描述 从表中读取数据 生成到reduce端的结果数据 Join两份数据 减少输出列
生成结果,输出数据到文件 过滤输入数据 GroupBy分组操作 MapJoin Hint或者由优化器决定采用MapJoin Limit限制行数操作 Union操作
Hive执行流程
• Hive通过ExecMapper和ExecReducer来执行 MapReduce任务。
• SparkEnv:线程级别的上下文,存储运行时的重要 组件的引用。SparkEnv内创建并包含如下一些重要 组件的引用。
– ·MapOutPutTracker:负责Shuffle元信息的存储。 ·BroadcastManager:负责广播变量的控制与元信息的存 储。
– ·BlockManager:负责存储管理、创建和查找块。
– ·MetricsSystem:监控运行时性能指标信息。
– ·SparkConf:负责存储配置信息。
Spark运行逻辑
• 在Spark应用中,整个执行流程在逻辑上会形成 有向无环图(DAG)。
• Action算子触发之后,将所有累积的算子形成 一个有向无环图,然后由调度器调度该图上的 任务进行运算。Spark的调度方式与MapReduce 有所不同。Spark根据RDD之间不同的依赖关系 切分形成不同的阶段(Stage),一个阶段包含 一系列函数执行流水线。
• 一套SQL算子,这无疑更加丰富了Spark的算子和功能,同 时Spark SQL不断兼容不同的持久化存储(如HDFS、Hive等 ),为其发展奠定广阔的空间。
Spark Streaming
• Spark Streaming通过将流数据按指定时间片 累积为RDD,然后将每个RDD进行批处
• 理,进而实现大规模的流数据处理。其吞吐 量能够超越现有主流流处理框架Storm,并 提供
• 能,将数据存储剥离Java Heap。用户可以基 于Tachyon实现RDD或者文件的跨应用共享 ,
• 并提供高容错机制,保证数据的可靠性。
Spark架构
Spark的基本组件。
• ClusterManager:在Standalone模式中即为Master (主节点),控制整个集群,监控Worker。在 YARN模式中为资源管理器。
HDFS设计目标
• HDFS以流式数据访问模式存储超大文件,运 行于商用硬件集群上。
• 超大文件 • 流式数据访问
– 一次写入多次读取
• 商用硬件
不适合HDFS的场景
• 低延迟的数据访问 • 大量小文件
– 超过NameNode的处理能力
• 多用户任意写入修改文件
• HDFS为了做到可靠性(reliability)创建了多份数据块( data blocks)的复制(replicas),并将它们放置在服务器 群的计算节点中(compute nodes),MapReduce就可以在它们 所在的节点上处理这些数据了。
HDFS
Hadoop Distributed File System
1990年,一个普通的硬盘驱动器可存储1370 MB的数据并拥有4.4 MB/s的传输速度 ,所以,只需五分钟的时间就可以读取整个磁 盘的数据。
20年过去了,1 TB级别的磁盘驱动器是很正常的,但是数据传输的速 度却在100 MB/s左右。所以它需要花两个半小时以上的时间读取 整个驱动器的数据。
• 执行MapReduce时有两种模式
– 本地模式
– 分布式模式
Client
Metastore
Driver Compiler
Hadoop
Hive编译器
Client
Metastore
Driver Compiler
Hadoop
Spark
Spark生态系统
Spark
Spark是整个BDAS的核心组件,是一个大数据分布式编程框 架,不仅实现了MapReduce 的算子map函数和reduce函数及计算模型,还提供更为丰富 的算子,如filter、join、 groupByKey等。Spark将分布式数据抽象为弹性分布式数据 集(RDD),实现了应用任务调 度、RPC、序列化和压缩,并为运行在其上的上层组件提供 API。其底层采用Scala这种函数式语言书写而成,并且所提 供的API深度借鉴Scala函数式的编程思想,提供与Scala类似 的编程接口。
222 <1,1>
111 <2,25>
Map user
Shuffle Sort
Reduce
userid age gender
key value
key value
111 25 female 222 32 male
111 <2,25> 222 <2,32>
222 <1,1> 222 <2,32>
了解Hive的意义
分而治之(Divide and Conquer)
MapReduce特性
• 自动实现分布式并行计算 • 容错 • 提供状态监控工具 • 模型抽象简洁,程序员易用
MapReduce
它由称为map和reduce的两部分用户程序组成 ,然后利用框架在计算机集群上面根据 需求运行多个程序实例来处理各个子任 务,然后再对结果进行归并。
Client Driver Compiler
Hadoop
Hive执行流程
• 操作符(Operator)是Hive的最小处理单元 • 每个操作符处理代表HDFS操作或MR作业 • 编译器把Hive SQL转换成一组操作符
Client
Metastore
Driver Compiler
Hadoop
Spark任务处理流程
Spark SQL
• Spark SQL提供在大数据上的SQL查询功能,类似于Shark在 整个生态系统的角色,它们可以统称为SQL on Spark。之前 ,Shark的查询编译和优化器依赖于Hive,使得Shark不得不
• 维护一套Hive分支,而Spark SQL使用Catalyst做查询解析和 优化器,并在底层使用Spark作为执行引擎实现SQL的 Operator。用户可以在Spark上直接书写SQL,相当于为 Spark扩充了
文件
• 文件切分成块(默认大小64M),以块为单位,每 个块有多个副本存储在不同的机器上,副本数可在 文件生成时指定(默认3)
• NameNode是主节点,存储文件的元数据如文件名, 文件目录结构,文件属性(生成时间,副本数,文件权 限),以及每个文件的块列表以及块所在的 DataNode等等
• DataNode在本地文件系统存储文件块数据,以及块 数据的校验和
设计目标
假设: 节点失效是常态
理想: 1. 任何一个节点失效, 不影响HDFS服务 2. HDFS可以自动完成副 本的复制
HDFS主要组件的功能
NameNode • 存储元数据
•元数据保存在内存中 • 保存文件,block ,datanode 之间的映射关系
百度文库
DataNode
• 存储文件内容 •文件内容保存在磁盘 •维护了block id到datanode本 地文件的映射关系
Hive QL – Join in Map Reduce
page_view
key value
key value
pageid userid time
111 <1,1>
111 <1,1>
1 111 9:08:01 2 111 9:08:13
111 <1,2>
111 <1,2>
1 222 9:08:14
applications. HDFS creates multiple replicas of
data blocks and distributes them on compute nodes throughout a cluster to enable reliable, extremely rapid computations.
• 可以创建、删除、移动或重命名文件,当文件创建 、写入和关闭之后不能修改文件内容。
分而治之(Divide and Conquer)
分而治之(Divide and Conquer)
分而治之(Divide and Conquer)
MapReduce
MapReduce:大规模数据处理
• 处理海量数据(>1TB) • 上百/上千CPU实现并行处理 • 简单地实现以上目的 • 移动计算比移动数据更划算
磁盘利用率 100% 50% 50% (N-1)/N (N-2)/N
HDFS系统架构
什么是HDFS?
• Hadoop Distributed File System
– Hadoop Distributed File System (HDFS) is the primary storage system used by Hadoop
• Apache Log Format • Columnar Storage Format
Hive QL – Join
INSERT OVERWRITE TABLE pv_users SELECT pv.pageid, u.age FROM page_view pv
JOIN user u ON (pv.userid = u.userid);
• Worker:从节点,负责控制计算节点,启动 Executor或Driver。在YARN模式中为 NodeManager,负责计算节点的控制。
• Driver:运行Application的main()函数并创建 SparkContext。
• Executor:执行器,在worker node上执行任务的组件 、用于启动线程池运行任务。每个Application拥有独立 的一组Executors。
• SparkContext:整个应用的上下文,控制应用的生命周 期。
• RDD:Spark的基本计算单元,一组RDD可形成执行的 有向无环图RDD Graph。
• DAG Scheduler:根据作业(Job)构建基于Stage的DAG ,并提交Stage给TaskScheduler。
• TaskScheduler:将任务(Task)分发给Executor执行。
• Extensibility
– Pluggable Map-reduce scripts – Pluggable User Defined Functions – Pluggable User Defined Types
• Complex object types: List of Maps
– Pluggable Data Formats
• Hive是一个很方便的工具,一般的业务人员 就可以很快上手。
• M/R任务的数量控制着语句的执行时间。 • 如何减少M/R的任务数量? • 在写HQL时我们能做什么? • Hive如何把HQL转化为M/R job。 • Hive在转化过程中做了哪些优化。
Hive架构
Metastore
Hive操作符
操作符 TableScanOperator ReduceSinkOperator JoinOperator SelectOperator FileSinkOperator FilterOperator GroupByOperator MapJoinOperator LimitOperator UnionOperator
• 丰富的API用于流数据计算。
GraphX
• GraphX基于BSP模型,在Spark之上封装类似 Pregel的接口,进行大规模同步全局的图
• 计算,尤其是当用户进行多轮迭代时,基于 Spark内存计算的优势尤为明显。
Tachyon
• Tachyon是一个分布式内存文件系统,可以 理解为内存中的HDFS。为了提供更高的性
从一个驱动器上读取所有的数据需要很长的时间,写甚至更慢。 如何解决?
磁盘损坏数据丢失怎么办?
如果需要存储计算1000T数据怎么办?
常用RAID技术
RAID类型 RAID0 RAID1 RAID10 RAID5 RAID6
访问速度 很快 很慢 中等 较快 较快
数据可靠性 很低 很高 很高 较高 较(RAID5)高
WordCount
MapReduce
• 物理上
MapReduce
MapReduce
Hive
• SQL
– Sub-queries in from clause – Equi-joins
• Inner • Left, Right, full Outer
– Multi-table Insert – Multi-group-by
描述 从表中读取数据 生成到reduce端的结果数据 Join两份数据 减少输出列
生成结果,输出数据到文件 过滤输入数据 GroupBy分组操作 MapJoin Hint或者由优化器决定采用MapJoin Limit限制行数操作 Union操作
Hive执行流程
• Hive通过ExecMapper和ExecReducer来执行 MapReduce任务。
• SparkEnv:线程级别的上下文,存储运行时的重要 组件的引用。SparkEnv内创建并包含如下一些重要 组件的引用。
– ·MapOutPutTracker:负责Shuffle元信息的存储。 ·BroadcastManager:负责广播变量的控制与元信息的存 储。
– ·BlockManager:负责存储管理、创建和查找块。
– ·MetricsSystem:监控运行时性能指标信息。
– ·SparkConf:负责存储配置信息。
Spark运行逻辑
• 在Spark应用中,整个执行流程在逻辑上会形成 有向无环图(DAG)。
• Action算子触发之后,将所有累积的算子形成 一个有向无环图,然后由调度器调度该图上的 任务进行运算。Spark的调度方式与MapReduce 有所不同。Spark根据RDD之间不同的依赖关系 切分形成不同的阶段(Stage),一个阶段包含 一系列函数执行流水线。
• 一套SQL算子,这无疑更加丰富了Spark的算子和功能,同 时Spark SQL不断兼容不同的持久化存储(如HDFS、Hive等 ),为其发展奠定广阔的空间。
Spark Streaming
• Spark Streaming通过将流数据按指定时间片 累积为RDD,然后将每个RDD进行批处
• 理,进而实现大规模的流数据处理。其吞吐 量能够超越现有主流流处理框架Storm,并 提供
• 能,将数据存储剥离Java Heap。用户可以基 于Tachyon实现RDD或者文件的跨应用共享 ,
• 并提供高容错机制,保证数据的可靠性。
Spark架构
Spark的基本组件。
• ClusterManager:在Standalone模式中即为Master (主节点),控制整个集群,监控Worker。在 YARN模式中为资源管理器。
HDFS设计目标
• HDFS以流式数据访问模式存储超大文件,运 行于商用硬件集群上。
• 超大文件 • 流式数据访问
– 一次写入多次读取
• 商用硬件
不适合HDFS的场景
• 低延迟的数据访问 • 大量小文件
– 超过NameNode的处理能力
• 多用户任意写入修改文件
• HDFS为了做到可靠性(reliability)创建了多份数据块( data blocks)的复制(replicas),并将它们放置在服务器 群的计算节点中(compute nodes),MapReduce就可以在它们 所在的节点上处理这些数据了。