1 / 35
文档名称:

数据库系统课件.ppt

格式:ppt   大小:1,930KB   页数:35页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据库系统课件.ppt

上传人:dlmus1 2018/8/25 文件大小:1.88 MB

下载得到文件列表

数据库系统课件.ppt

相关文档

文档介绍

文档介绍:1
Hadoop入门和原理
2
Hadoop介绍
MapReduce简介及原理
1
MapReduce的类型与格式
2
Pig简介
3
Hadoop集群配置
4
3
MapReduce简介
Mapreduce是一中用于数据处理的编程模型。
例子:用Hadoop处理气象数据,找出每年最高气温
MapReduce工作过程分为两个阶段:map阶段和reduce阶段每个阶段都有键/值对作为输入和输出。程序员还定义两个函数map函数和reduce函数。
用map函数来找出年份和气温。本例map函数只是一个数据准备阶段。通过这种方式建立数据,使得reducer函数能在此基础上进行工作,找出每年最高气温。
思考下面的输入数据
4
MapReduce简介(续)
这些行以键/值对的方式来表示map函数
5
MapReduce简介(续)
Map函数的功能仅仅提取年份和气温(粗体显示),并将其作为输出被发送(气温值已被解释为整数)
(1950, 0)
(1950, 22)
(1950, -11)
(1949, 211)
(1949, 78)
Map函数的输出先有MapReduce框架处理,然后再被发送到reduce函数。这一处理过程根据键来对键/值进行排序和分组。因此,reduce函数会看到如下输入:
(1949, [111, 78])
(1950, [0, 22, -11])
每年的年份后都有一系列气温度数。所有reduce函数现在必须重复这个列表并从中找出最大的度数:
(1949, 111) (1950, 22)
这是最后的输出:全球气温记录中每年的最高气温
6
MapReduce简介(续)
上面的数据流如下图所示。在图的底部是Unix的管道,模拟整个MapReduce的流程。
图1 MapReduce的逻辑数据流
7
MapReduce简介(续)
MapReduce的分布式应用
MapReduce作业(job)是客户端执行的基本单位:包括输入数据,MapReduce程序和配置信息。Hadoop通过把作业分成若干个小任务(task)来工作,包括。两种类型的任务:map任务和reduce任务。
有两种类型的节点控制着作业执行的过程:jobtracker和多个tasktracker。Jobtracker通过调度任务在tasktracker上运行来协调所有运行在系统上的作业。Tasktracker运行任务的同时,把进度报告传送到jobtracker,jobtracker则记录着每项任务的整体进展情况。如果其中一个任务失败,jobtracker可以重新调度任务到另外一个tasktracker。
Hadoop把输入数据划分成等长的小数据发送到MapReduce,成为输入分片(input split)或分片。Hadoop为每个分片(split)创建一个map任务,由它来运行用户自定义的map函数来分析每个分片的记录。
8
MapReduce简介(续)
Map任务把输出写入本地硬盘,而不是HDFS,因为map的输出作为中间输出,中间输出被reduce处理后产生最终的输出,一旦作业完成,map的输出就可以删除了。如果该节点运行的map任务在map输出给reduce任务处理之前崩溃,那么hadoop将在另一个节点上重新运行map任务以再次产生map输出。
Reduce任务并不具备数据本地读取的优势。一个单一的reduce任务往往来自于所有mapper的输出。因此,有序map的输出必须通过网络传输到reduce任务运行的节点,在那里进行合并,然后传递到用户定义的reduce函数中。Reduce的输出通常存储在HDFS中。
对于每个reduce输出的HDFS块,第一个副本存储在本地节点,其他副本存储在其他机架节点中。
9
MapReduce简介(续)
一个单一的reduce任务的整个数据流如图2所示
虚线框表示节点,虚线箭头表示数据传输到一个节点上
实线箭头表示节点之间的数据传输
图2 MapReduce中单一reduce任务的数据流图
10
MapReduce简介(续)
Reduce任务数目不是由输入的大小决定的,而是单独具体指定的。
如果有多个reducer, map任务会对其输出进行分区(partition),为每个reduce任务创建一个分区(partition)。每个分区包含许多键(及其关联的值),但每个键的记录都在同一个分区中。分区可以通过用户定义的partitioner来控制,通常是用默认的分区工具,使用hash函数来形成“木桶”键/值。
多个reduce任务数据流图如图3所示。
图3 多个reduce任务的MapReduce数据流