Hadoop大数据开发与性能调优实战培训课程Hadoop组件详解课件_第1页
Hadoop大数据开发与性能调优实战培训课程Hadoop组件详解课件_第2页
Hadoop大数据开发与性能调优实战培训课程Hadoop组件详解课件_第3页
Hadoop大数据开发与性能调优实战培训课程Hadoop组件详解课件_第4页
Hadoop大数据开发与性能调优实战培训课程Hadoop组件详解课件_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

Hadoop之HDFS和MapReduceHadoop之HDFS和MapReduce1掌握mapreduce原理和开发123理解HDFS原理3应用举例讲解培训目标掌握mapreduce原理和开发123理解HDFS原理3应用2123存储并管理PB级数据处理非结构化数据注重数据处理的吞吐量(时间不敏感)HDFS适合做什么?4应用模式为:write-once-read-many存取模式123存储并管理PB级数据处理非结构化数据注重数据处理的吞吐3123存储小文件(不建议使用)大量的随机读(不建议使用)需要对文件的修改(不支持)HDFS不适合做什么?123存储小文件(不建议使用)大量的随机读(不建议使用)4Hadoop的特点扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据并且线性扩展。成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。可靠性(Reliable):hadoop能自动地维护数据的多份副本,并且在任务失败后能自动地重新部署(redeploy)计算任务。Hadoop的特点扩容能力(Scalable):能可靠地(r5Hadoop集群的物理分布Hadoop集群的物理分布6HDFSHDFS7Namenode是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件和目录的元信息以及每个文件对应的数据块列表。接收用户的操作请求。NN包括:fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。edits:操作日志文件。fstime:保存最近一次checkpoint的时间以上这些文件是保存在linux的文件系统中Namenode是整个文件系统的管理节点。它维护着整个文件系8SecondaryNameNodeHA的一个解决方案。但不支持热备。执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,同时重置NameNode的edits。合并策略是根据时间和根据editslog变换大小。默认是安装在NameNode节点上,可以通过配置启动在其他节点。SecondaryNameNodeHA的一个解决方案。但不支9DataNode一个Block(数据块)在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用并把失效节点上的block备份到其他机器上面,保证副本数为3。DataNode一个Block(数据块)在DataNode以10Block文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3),因为硬件错误是常态。因此需要冗余。NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等DataNode在本地文件系统存储文件块数据,以及块数据的校验Block文件切分成块(默认大小64M),以块为单位,每个块11Block的副本放置策略第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点第二个副本:放置在于第一个副本相同的机架的节点上第三个副本:与第二个副本不同集群的节点更多副本:随机节点Block的副本放置策略第一个副本:放置在上传文件的DN;如12HDFS读写流程HDFS读写流程13HDFS读写流程读文件流程client端发送读文件请求给namenode,如果文件不存在,返回错误信息,否则,将该文件对应的block及其所在datanode位置发送给clientclient收到文件位置信息后,与不同datanode建立socket连接并行获取数据。写文件流程client端发送写文件请求,namenode检查文件是否存在,如果已存在,直接返回错误信息,否则,发送给client一些可用datanode节点client将文件分块,并行存储到不同节点上datanode上,发送完成后,client同时发送信息给namenode和datanodenamenode收到的client信息后,发送确信信息给datanodedatanode同时收到namenode和datanode的确认信息后,提交写操作。HDFS读写流程读文件流程1415HDFS为了做到可靠性(reliability)创建了多份数据块(datablocks)的复制(replicas),并将它们放置在服务器群的计算节点中(computenodes),MapReduce就可以在它们所在的节点上处理这些数据了。15HDFS为了做到可靠性(reliability)创建了多15数据损坏处理当DN读取block的时候,它会计算checksum;如果计算后的checksum,与block创建时值不一样,说明该block

已经损坏。client读取其它DN上的block;NN标记该块已经损坏,然后复制block达到预期设置的文件备份数;数据损坏处理当DN读取block的时候,它会计算checks16HDFS安全模式Namenode启动时会先经过一个“安全模式”阶段安全模式阶段不会产生数据写在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数HDFS安全模式Namenode启动时会先经过一个“安全模式17HDFS文件权限与Linux文件权限类似r:read;w:write;x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsanHDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁HDFS文件权限与Linux文件权限类似18HDFS回收站删除文件时,其实是放入回收站/trash回收站里的文件可以快速恢复可以设置一个时间阈值,当回收站里文件的存放时间超过这个阈值,就被彻底删除,并且释放占用的数据块修改core-site.xml<property><name>erval</name><value>1440</value><description>Numberofminutesbetweentrashcheckpoints.Ifzero,thetrashfeatureisdisabled.</description></property>HDFS回收站删除文件时,其实是放入回收站/trash19HDFS开发常用命令-help[cmd] //显示命令的帮助信息-ls(r)<path> //显示当前目录下所有文件-du(s)<path> //显示目录中所有文件大小-count[-q]<path> //显示目录中文件数量-mv<src><dst> //移动多个文件到目标目录-cp<src><dst> //复制多个文件到目标目录-rm(r) //删除文件(夹)-put<localsrc><dst> //本地文件复制到hdfs-copyFromLocal //同put-moveFromLocal //从本地文件移动到hdfs-get[-ignoreCrc]<src><localdst> //复制文件到本地,可以忽略crc校验-getmerge<src><localdst> //将源目录中的所有文件排序合并到一个文件中-cat<src> //在终端显示文件内容-text<src> //在终端显示文件内容-copyToLocal[-ignoreCrc]<src><localdst> //复制到本地-moveToLocal<src><localdst>-mkdir<path> //创建文件夹-touchz<path> //创建一个空文件HDFS开发常用命令-help[cmd] //显示命令的帮20MapReduceMapReduce2122WhyMapReduce为什么我们不能使用数据库加上更多磁盘来做大规模的批量分析?为什么我们需要MapReduce?这个问题的答案来自于磁盘驱动器的一个发展趋势:寻址时间的提高速度远远慢于传输速率的提高速度。寻址就是将磁头移动到特定位置进行读写操作的工序。它的特点是磁盘操作有延迟。关系型数据库和MapReduce的比较:22WhyMapReduce为什么我们不能使用数据库加上22WhyMap/Reduce?二、DivideandConquer(分而治之)WhyMap/Reduce?二、Divideand23MapReduce特性自动实现分布式并行计算容错提供状态监控工具模型抽象简洁,程序员易用MapReduce特性自动实现分布式并行计算24Hadoop大数据开发与性能调优实战培训课程Hadoop组件详解25MapReduce执行流程MapReduce执行流程26JobTracker(JT)和TaskTracker(TT)简介JobTracker(JT)和TaskTracker(TT)27JobTracker失败1)JobTracker失败在所有的失败中是最严重的一种。2)hadoop没有处理jobtracker失败的机制。--它是一个单点故障。3)在未来的新版本中可以运行多个JobTracker。4)可以使用ZooKeeper来协作JobTracker。JobTracker失败1)JobTracker失败在所有的28TaskTracker失败1)一个TaskTracker由于崩溃或运行过于缓慢而失败,它会向JobTracker发送“心跳”。2)如果有未完成的作业,JobTracker会重新把这些任务分配到其他的TaskTracker上面运行。3)即使TaskTracker没有失败也可以被JobTracker列入黑名单。TaskTracker失败1)一个TaskTracker由于29CombinerInputSplitsMapperPartitioner&Shuffle&SortInputFormatReducerRecordReaderMapReduce核心组件CombinerInputSplitsMapperParti30文件输入格式InputFormat定义了数据文件如何分割和读取InputFile提供了以下一些功能选择文件或者其它对象,用来作为输入定义InputSplits,将一个文件分为不同任务为RecordReader提供一个工厂,用来读取这个文件有一个抽象的类FileInputFormat,FileInputFormat从这个目录中读取所有文件,然后FileInputFormat将这些文件分割为多个InputSplits。通过在JobConf对象上设置JobConf.setInputFormat设置文件输入的格式文件输入格式InputFormat定义了数据文件如何分割和读31输入数据分块InputSplitsInputSplit定义了输入到单个Map任务的输入数据一个MapReduce程序被统称为一个Job,可能有上百个任务构成InputSplit将文件分为64MB的大配置文件hadoop-site.xml中的mapred.min.split.size参数控制这个大小mapred.tasktracker.map.taks.maximum用来控制某一个节点上所有map任务的最大数目输入数据分块InputSplitsInputSplit定义了32数据记录读入RecordReaderInputSplit定义了一个数据分块,但是没有定义如何读取数据记录RecordReader实际上定义了如何将数据记录转化为一个(key,value)对的详细方法,并将数据记录传给Mapper类TextInputFormat提供了LineRecordReader,读入一个文本行数据记录数据记录读入RecordReaderInputSplit定义33Mapper每一个Mapper类的实例生成了一个Java进程,负责处理某一个InputSplit上的数据有两个额外的参数OutputCollector以及Reporter,前者用来收集中间结果,后者用来获得环境参数以及设置当前执行的状态。现在的版本用Mapper.Context提供给每一个Mapper函数,用来提供上面两个对象的功能Mapper每一个Mapper类的实例生成了一个Java进程34Combiner合并相同key的键值对,减少partitioner时候的数据通信开销conf.setCombinerClass(Reduce.class);是在本地执行的一个Reducer,满足一定的条件才能够执行。Combiner35Partitioner&Shuffle&SortPartitioner&Shuffle在Map工作完成之后,每一个Map函数会将结果传到对应的Reducer所在的节点,此时,用户可以提供一个Partitioner类,用来决定一个给定的(key,value)对传给哪个节点Sort传输到每一个Reducer节点上的、将被所有的Reduce函数接收到的Key,value对会被Hadoop自动排序(即Map生成的结果传送到某一个节点的时候,会被自动排序)Partitioner&Shuffle&SortPart36Reducer做用户定义的Reduce操作接收到一个OutputCollector的类作为输出新版本的编程接口是Reducer.ContextReducer做用户定义的Reduce操作37文件输出格式OutputFormat写入到HDFS的所有OutputFormat都继承自FileOutputFormat每一个Reducer都写一个文件到一个共同的输出目录,文件名是part-nnnnn,其中nnnnn是与每一个reducer相关的一个号(partitionid)FileOutputFormat.setOutputPath()JobConf.setOutputFormat()文件输出格式OutputFormat写入到HDFS的所有Ou38MapReduceMapReduce39MapReduceMapReduce40MapReduceJobTracker一直在等待JobClient提交作业TaskTracker每隔3秒向JobTracker发送心跳heartbeat询问有没有任务可做,如果有,让其派发任务给它执行这是一道pull过程:slave主动向master拉生意MapReduceJobTracker一直在等待JobCli41MapReduce特点:Fault-tolerant容错,很重要!M/RFailuresTaskfails Tryagain? Tryagainsomewhereelse? Reportfailure只有当map处理全部结束后,reduce过程才能够开始Map需要考虑数据局部性,Reduce无需考虑数据局部性MapReduce特点:Fault-tolerant容错,42单一Reduce处理单一Reduce处理43多个Reduce处理多个Reduce处理44无Reduce处理无Reduce处理45Hadoop平台应用特点多种应用共用一个Hadoop平台生产性应用:数据加载,统计值计算,垃圾数据分析等批作业:机器学习等交互式作业:SQL查询、样本采集等不同应用对硬件资源要求不同I/O密集型作业,如:机器学习算法CPU密集型作业:如:过滤,统计值计算,正则匹配等作业之间存在依赖关系如何提高Hadoop平台资源利用效率?作业合理调度、监控Hadoop平台应用特点多种应用共用一个Hadoop平台46MapReduceMapReduce的应用:【1】日志分析【2】排序【3】搜索、搜索引擎,创建索引【4】广告计算,广告优化、分析,点击流分析,链接分析【5】搜索关键字进行内容分类【6】计数,统计值计算,统计数据,过滤,分析,查询【7】垃圾数据分析【8】数据分析【9】机器学习【10】数据挖掘【11】大规模图像转换(纽约时报使用Hadoop和EC2在36个小时内将4TB的TIFF图像—包括405K大TIFF图像,3.3MSGML文章和405KXML文件—转换为800K适合在Web上使用的PNG图像)

MapReduceMapReduce的应用:47精彩案例精彩案例48案例1:数据仓库构建Hadoop前的数据仓库流程Perl/Python、Shell、awk案例1:数据仓库构建Hadoop前的数据仓库流程49精彩案例Hadoop后的数据仓库流程Hive、Pig、MR、工作流

精彩案例Hadoop后的数据仓库流程50案例2:Yahoo2010年10月,Yahoo拥有>38000台服务器,有超过4000个以上的服务器集群,数据总量达到了170PB,每日的数据增量在10TB以上。案例2:Yahoo2010年10月,Yahoo拥有>380051Yahoo应用揭秘Yahoo的Hadoop应用包含有搜索、日志处理(Analytics,Reporting,Buzz)、用户建模、内容优化,垃圾邮件过滤器以及广告计算等。网络分析。Yahoo目前有超过100亿个网页,1PB的网页数据内容,2万亿条链接,每日面临这300TB的数据输出。在应用Hadoop前,实施这一过程最少1个月的时间,但应用后仅需要2天Yahoo应用揭秘Yahoo的Hadoop应用包含有搜索、日52Yahoo应用揭秘Yahoo搜索。服务器上保留有用户3年来的搜索记录,这个数据是由超过10TB。如果数据重整,之前需要1个月的时间进行处理,而在有了Hadoop后仅仅需要30分钟Hadoop也非万能,它采用Java实现,Java的IO处理虽然没有性能瓶颈,但是对于CPU密集型的任务是一个麻烦,因此,有些算法效率不会提高很多。Yahoo应用揭秘Yahoo搜索。服务器上保留有用户3年来的53案例3:FacebookWebServersScribeMidTierFilersProductionHive-HadoopClusterOracleRACFederatedMySQLScribe-HadoopClustersAdhocHive-HadoopClusterHivereplication案例3:FacebookWebServersScribe5455Facebook数据仓库Hadoop基础平台自动化ETL元数据发现日志查询(HIVE)特殊工作流和扩展报表工具监控和报警55Facebook数据仓库Hadoop基础平台55Facebook任务统计每天任务统计10TB压缩数据新增/天135TB扫描数据总量/天7500+任务/天80K计算小时/天95%Hadoop任务使用HiveFacebook任务统计每天任务统计56Facebook应用报表天/周的展示、点击统计汇总用户参与度计算

战略决策服务Adhoc分析机器学习(ad方向)Facebook应用报表57案例4:Taobao案例4:Taobao58ThanksThanks59演讲完毕,谢谢观看!演讲完毕,谢谢观看!60Hadoop之HDFS和MapReduceHadoop之HDFS和MapReduce61掌握mapreduce原理和开发123理解HDFS原理3应用举例讲解培训目标掌握mapreduce原理和开发123理解HDFS原理3应用62123存储并管理PB级数据处理非结构化数据注重数据处理的吞吐量(时间不敏感)HDFS适合做什么?4应用模式为:write-once-read-many存取模式123存储并管理PB级数据处理非结构化数据注重数据处理的吞吐63123存储小文件(不建议使用)大量的随机读(不建议使用)需要对文件的修改(不支持)HDFS不适合做什么?123存储小文件(不建议使用)大量的随机读(不建议使用)64Hadoop的特点扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据并且线性扩展。成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。可靠性(Reliable):hadoop能自动地维护数据的多份副本,并且在任务失败后能自动地重新部署(redeploy)计算任务。Hadoop的特点扩容能力(Scalable):能可靠地(r65Hadoop集群的物理分布Hadoop集群的物理分布66HDFSHDFS67Namenode是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件和目录的元信息以及每个文件对应的数据块列表。接收用户的操作请求。NN包括:fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。edits:操作日志文件。fstime:保存最近一次checkpoint的时间以上这些文件是保存在linux的文件系统中Namenode是整个文件系统的管理节点。它维护着整个文件系68SecondaryNameNodeHA的一个解决方案。但不支持热备。执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,同时重置NameNode的edits。合并策略是根据时间和根据editslog变换大小。默认是安装在NameNode节点上,可以通过配置启动在其他节点。SecondaryNameNodeHA的一个解决方案。但不支69DataNode一个Block(数据块)在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用并把失效节点上的block备份到其他机器上面,保证副本数为3。DataNode一个Block(数据块)在DataNode以70Block文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3),因为硬件错误是常态。因此需要冗余。NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等DataNode在本地文件系统存储文件块数据,以及块数据的校验Block文件切分成块(默认大小64M),以块为单位,每个块71Block的副本放置策略第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点第二个副本:放置在于第一个副本相同的机架的节点上第三个副本:与第二个副本不同集群的节点更多副本:随机节点Block的副本放置策略第一个副本:放置在上传文件的DN;如72HDFS读写流程HDFS读写流程73HDFS读写流程读文件流程client端发送读文件请求给namenode,如果文件不存在,返回错误信息,否则,将该文件对应的block及其所在datanode位置发送给clientclient收到文件位置信息后,与不同datanode建立socket连接并行获取数据。写文件流程client端发送写文件请求,namenode检查文件是否存在,如果已存在,直接返回错误信息,否则,发送给client一些可用datanode节点client将文件分块,并行存储到不同节点上datanode上,发送完成后,client同时发送信息给namenode和datanodenamenode收到的client信息后,发送确信信息给datanodedatanode同时收到namenode和datanode的确认信息后,提交写操作。HDFS读写流程读文件流程7475HDFS为了做到可靠性(reliability)创建了多份数据块(datablocks)的复制(replicas),并将它们放置在服务器群的计算节点中(computenodes),MapReduce就可以在它们所在的节点上处理这些数据了。15HDFS为了做到可靠性(reliability)创建了多75数据损坏处理当DN读取block的时候,它会计算checksum;如果计算后的checksum,与block创建时值不一样,说明该block

已经损坏。client读取其它DN上的block;NN标记该块已经损坏,然后复制block达到预期设置的文件备份数;数据损坏处理当DN读取block的时候,它会计算checks76HDFS安全模式Namenode启动时会先经过一个“安全模式”阶段安全模式阶段不会产生数据写在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数HDFS安全模式Namenode启动时会先经过一个“安全模式77HDFS文件权限与Linux文件权限类似r:read;w:write;x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsanHDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁HDFS文件权限与Linux文件权限类似78HDFS回收站删除文件时,其实是放入回收站/trash回收站里的文件可以快速恢复可以设置一个时间阈值,当回收站里文件的存放时间超过这个阈值,就被彻底删除,并且释放占用的数据块修改core-site.xml<property><name>erval</name><value>1440</value><description>Numberofminutesbetweentrashcheckpoints.Ifzero,thetrashfeatureisdisabled.</description></property>HDFS回收站删除文件时,其实是放入回收站/trash79HDFS开发常用命令-help[cmd] //显示命令的帮助信息-ls(r)<path> //显示当前目录下所有文件-du(s)<path> //显示目录中所有文件大小-count[-q]<path> //显示目录中文件数量-mv<src><dst> //移动多个文件到目标目录-cp<src><dst> //复制多个文件到目标目录-rm(r) //删除文件(夹)-put<localsrc><dst> //本地文件复制到hdfs-copyFromLocal //同put-moveFromLocal //从本地文件移动到hdfs-get[-ignoreCrc]<src><localdst> //复制文件到本地,可以忽略crc校验-getmerge<src><localdst> //将源目录中的所有文件排序合并到一个文件中-cat<src> //在终端显示文件内容-text<src> //在终端显示文件内容-copyToLocal[-ignoreCrc]<src><localdst> //复制到本地-moveToLocal<src><localdst>-mkdir<path> //创建文件夹-touchz<path> //创建一个空文件HDFS开发常用命令-help[cmd] //显示命令的帮80MapReduceMapReduce8182WhyMapReduce为什么我们不能使用数据库加上更多磁盘来做大规模的批量分析?为什么我们需要MapReduce?这个问题的答案来自于磁盘驱动器的一个发展趋势:寻址时间的提高速度远远慢于传输速率的提高速度。寻址就是将磁头移动到特定位置进行读写操作的工序。它的特点是磁盘操作有延迟。关系型数据库和MapReduce的比较:22WhyMapReduce为什么我们不能使用数据库加上82WhyMap/Reduce?二、DivideandConquer(分而治之)WhyMap/Reduce?二、Divideand83MapReduce特性自动实现分布式并行计算容错提供状态监控工具模型抽象简洁,程序员易用MapReduce特性自动实现分布式并行计算84Hadoop大数据开发与性能调优实战培训课程Hadoop组件详解85MapReduce执行流程MapReduce执行流程86JobTracker(JT)和TaskTracker(TT)简介JobTracker(JT)和TaskTracker(TT)87JobTracker失败1)JobTracker失败在所有的失败中是最严重的一种。2)hadoop没有处理jobtracker失败的机制。--它是一个单点故障。3)在未来的新版本中可以运行多个JobTracker。4)可以使用ZooKeeper来协作JobTracker。JobTracker失败1)JobTracker失败在所有的88TaskTracker失败1)一个TaskTracker由于崩溃或运行过于缓慢而失败,它会向JobTracker发送“心跳”。2)如果有未完成的作业,JobTracker会重新把这些任务分配到其他的TaskTracker上面运行。3)即使TaskTracker没有失败也可以被JobTracker列入黑名单。TaskTracker失败1)一个TaskTracker由于89CombinerInputSplitsMapperPartitioner&Shuffle&SortInputFormatReducerRecordReaderMapReduce核心组件CombinerInputSplitsMapperParti90文件输入格式InputFormat定义了数据文件如何分割和读取InputFile提供了以下一些功能选择文件或者其它对象,用来作为输入定义InputSplits,将一个文件分为不同任务为RecordReader提供一个工厂,用来读取这个文件有一个抽象的类FileInputFormat,FileInputFormat从这个目录中读取所有文件,然后FileInputFormat将这些文件分割为多个InputSplits。通过在JobConf对象上设置JobConf.setInputFormat设置文件输入的格式文件输入格式InputFormat定义了数据文件如何分割和读91输入数据分块InputSplitsInputSplit定义了输入到单个Map任务的输入数据一个MapReduce程序被统称为一个Job,可能有上百个任务构成InputSplit将文件分为64MB的大配置文件hadoop-site.xml中的mapred.min.split.size参数控制这个大小mapred.tasktracker.map.taks.maximum用来控制某一个节点上所有map任务的最大数目输入数据分块InputSplitsInputSplit定义了92数据记录读入RecordReaderInputSplit定义了一个数据分块,但是没有定义如何读取数据记录RecordReader实际上定义了如何将数据记录转化为一个(key,value)对的详细方法,并将数据记录传给Mapper类TextInputFormat提供了LineRecordReader,读入一个文本行数据记录数据记录读入RecordReaderInputSplit定义93Mapper每一个Mapper类的实例生成了一个Java进程,负责处理某一个InputSplit上的数据有两个额外的参数OutputCollector以及Reporter,前者用来收集中间结果,后者用来获得环境参数以及设置当前执行的状态。现在的版本用Mapper.Context提供给每一个Mapper函数,用来提供上面两个对象的功能Mapper每一个Mapper类的实例生成了一个Java进程94Combiner合并相同key的键值对,减少partitioner时候的数据通信开销conf.setCombinerClass(Reduce.class);是在本地执行的一个Reducer,满足一定的条件才能够执行。Combiner95Partitioner&Shuffle&SortPartitioner&Shuffle在Map工作完成之后,每一个Map函数会将结果传到对应的Reducer所在的节点,此时,用户可以提供一个Partitioner类,用来决定一个给定的(key,value)对传给哪个节点Sort传输到每一个Reducer节点上的、将被所有的Reduce函数接收到的Key,value对会被Hadoop自动排序(即Map生成的结果传送到某一个节点的时候,会被自动排序)Partitioner&Shuffle&SortPart96Reducer做用户定义的Reduce操作接收到一个OutputCollector的类作为输出新版本的编程接口是Reducer.ContextReducer做用户定义的Reduce操作97文件输出格式OutputFormat写入到HDFS的所有OutputFormat都继承自FileOutputFormat每一个Reducer都写一个文件到一个共同的输出目录,文件名是part-nnnnn,其中nnnnn是与每一个reducer相关的一个号(partitionid)FileOutputFormat.setOutputPath()JobConf.setOutputFormat()文件输出格式OutputFormat写入到HDFS的所有Ou98MapReduceMapReduce99MapReduceMapReduce100MapReduceJobTracker一直在等待JobClient提交作业TaskTracker每隔3秒向JobTracker发送心跳heartbeat询问有没有任务可做,如果有,让其派发任务给它执行这是一道pull过程:slave主动向master拉生意MapReduceJobTracker一直在等待JobCli101MapReduce特点:Fault-tolerant容错,很重要!M/RFailuresTaskfails Tryagain? Tryagainsomewhereelse? Reportfailure只有当map处理全部结束后,reduce过程才能够开始Map需要考虑数据局部性,Reduce无需考虑数据局部性MapReduce特点:Fault-tolerant容错,102单一Reduce处理单一Reduce处理103多个Reduce处理多个Reduce处理104无Reduce处理无Reduce处理105Hadoop平台应用特点多种应用共用一个Hadoop平台生产性应用:数据

温馨提示

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

评论

0/150

提交评论