版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ch.4.Hadoop
MapReduce基本构架南京大学计算机科学与技术系主讲人:黄宜华2011年春季学期MapReduce海量数据并行处理鸣谢:本课程得到Google公司(北京)中国大学合作部精品课程计划资助Ch.4.
Hadoop
MapReduce基本构架1.Hadoop分布式文件系统HDFS2.HadoopMapReduce的基本工作原理3.分布式结构化数据表HBaseHDFS的基本特征模仿GoogleGFS设计实现存储极大数目的信息(terabytesorpetabytes),将数据保存到大量的节点当中;支持很大的单个文件。提供数据的高可靠性和容错能力,单个或者多个节点不工作,对系统不会造成任何影响,数据仍然可用。通过一定数量的数据复制保证数据存储的可靠性和出错恢复能力。提供对数据的快速访问;并提供良好的可扩展性,通过简单加入更多服务器快速扩充系统容量,服务更多的客户端。与GFS类似,HDFS是MapReduce的底层数据存储支撑,并使得数据尽可能根据其本地局部性进行访问与计算。
1.Hadoop的分布式文件系统HDFSHDFS的基本特征HDFS对顺序读进行了优化,支持大量数据的快速顺序读出,代价是对于随机的访问负载较高。数据支持一次写入,多次读取;不支持已写入数据的更新操作。数据不进行本地缓存(文件很大,且顺序读没有局部性)基于块的文件存储,默认的块的大小是64MB减少元数据的量有利于顺序读写(在磁盘上数据顺序存放)
多副本数据块形式存储,按照块的方式随机选择存储节点,默认副本数目是3Hadoop的分布式文件系统HDFSHDFS基本构架对等于GFS
Master对等于GFS
ChunkServer应用程序HDFS客户端文件名或数据块号数据块号,数据块位置HDFSNameNodeDataNode数据DataNode数据DataNode数据Hadoop的分布式文件系统HDFSHDFS基本实现构架Hadoop的分布式文件系统HDFSHDFS数据分布设计多副本数据块形式存储,按照块的方式随机选择存储节点默认副本数目是3Hadoop的分布式文件系统HDFSHDFS数据分布设计Hadoop的分布式文件系统HDFSHDFS可靠性与出错恢复DataNode节点的检测心跳:NameNode不断检测DataNode是否有效若失效,则寻找新的节点替代,将失效节点数据重新分布集群负载均衡数据一致性:校验和checksum主节点元数据失效MultipleFsImageandEditLogCheckpointHadoop的分布式文件系统HDFSHDFS设计要点命名空间副本选择RackAwareness安全模式刚启动的时候,等待每一个DataNode报告情况退出安全模式的时候才进行副本复制操作NameNode有自己的FsImage和EditLog,前者有自己的文件系统状态,后者是还没有更新的记录Hadoop的分布式文件系统HDFSHDFS的安装和启动下载hadoop-0.20.1.tar.gz(或者最新版本0.21)tarzxvfhadoop-0.20.1.tar.gz,解压后Hadoop系统包括HDFS和所有配置文件都在指定的文件目录中在Linux下进行必要的系统配置设置与Hadoop相关的Java运行环境变量启动Java虚拟机启动Hadoop,则Hadoop和HDFS文件系统开始运行Hadoop的分布式文件系统HDFSHDFS文件系统操作命令建立用户自己的目录,用户目录在/user中,需要建立用-put命令在Linux文件系统与HDFS之间复制数据文件-put等同于-copyFromLocalsomeone@anynode:hadoop$bin/hadoop
dfs-lssomeone@anynode:hadoop$someone@anynode:hadoop$bin/hadoopdfs-ls/Found2itemsdrwxr-xr-x-hadoopsupergroup02008-09-2019:40/hadoopdrwxr-xr-x-hadoopsupergroup02008-09-2020:08/tmpsomeone@anynode:hadoop$bin/hadoop
dfs-mkdir/usersomeone@anynode:hadoop$bin/hadoop
dfs-mkdir/user/someonesomeone@anynode:hadoop$bin/hadoop
dfs-put/home/someone/interestingFile.txt/user/yourUserName/Put上传整个目录someone@anynode:hadoop$bin/hadoop
dfs–putsource-directory
destinationHadoop的分布式文件系统HDFSHDFS文件系统操作命令Command:Assuming:Outcome:bin/hadoopdfs-putfoobarNofile/directorynamed/user/$USER/barexistsinHDFSUploadslocalfilefootoafilenamed/user/$USER/barbin/hadoopdfs-putfoobar/user/$USER/barisadirectoryUploadslocalfilefootoafilenamed/user/$USER/bar/foobin/hadoopdfs-putfoosomedir/somefile/user/$USER/somedirdoesnotexistinHDFSUploadslocalfilefootoafilenamed/user/$USER/somedir/somefile,creatingthemissingdirectorybin/hadoopdfs-putfoobar/user/$USER/barisalreadyafileinHDFSNochangeinHDFS,andanerrorisreturnedtotheuser.Hadoop的分布式文件系统HDFSHDFS文件系统操作命令-lspathListsthecontentsofthedirectoryspecifiedbypath,showingthenames,permissions,owner,sizeandmodificationdateforeachentry.-lsrpathBehaveslike-ls,butrecursivelydisplaysentriesinallsubdirectoriesofpath.-dupathShowsdiskusage,inbytes,forallfileswhichmatchpath;filenamesarereportedwiththefullHDFSprotocolprefix.-duspathLike-du,butprintsasummaryofdiskusageofallfiles/directoriesinthepath.-mvsrcdestMovesthefileordirectoryindicatedbysrctodest,withinHDFS.-cpsrcdestCopiesthefileordirectoryidentifiedbysrctodest,withinHDFS.Hadoop的分布式文件系统HDFSHDFS文件系统操作命令-rmpathRemovesthefileoremptydirectoryidentifiedbypath.-rmrpathRemovesthefileordirectoryidentifiedbypath.Recursivelydeletesanychildentries(i.e.,filesorsubdirectoriesofpath).-putlocalSrcdestCopiesthefileordirectoryfromthelocalfilesystemidentifiedbylocalSrctodestwithintheHDFS.-copyFromLocallocalSrcdestIdenticalto-put-moveFromLocallocalSrcdestCopiesthefileordirectoryfromthelocalfilesystemidentifiedbylocalSrctodestwithinHDFS,thendeletesthelocalcopyonsuccess.Hadoop的分布式文件系统HDFSHDFS文件系统操作命令-get[-crc]srclocalDestCopiesthefileordirectoryinHDFSidentifiedbysrctothelocalfilesystempathidentifiedbylocalDest.-getmergesrclocalDest[addnl]RetrievesallfilesthatmatchthepathsrcinHDFS,andcopiesthemtoasingle,mergedfileinthelocalfilesystemidentifiedbylocalDest.-catfilenameDisplaysthecontentsoffilenameonstdout.-copyToLocal[-crc]srclocalDestIdenticalto-get-moveToLocal[-crc]srclocalDestWorkslike-get,butdeletestheHDFScopyonsuccess.-mkdirpathCreatesadirectorynamedpathinHDFS.Createsanyparentdirectoriesinpaththataremissing(e.g.,likemkdir-pinLinux).Hadoop的分布式文件系统HDFSHDFS文件系统操作命令-setrep[-R][-w]reppathSetsthetargetreplicationfactorforfilesidentifiedbypathtorep.(Theactualreplicationfactorwillmovetowardthetargetovertime)-touchzpathCreatesafileatpathcontainingthecurrenttimeasatimestamp.Failsifafilealreadyexistsatpath,unlessthefileisalreadysize0.-test-[ezd]pathReturns1ifpathexists;haszerolength;orisadirectory,or0otherwise.-stat[format]pathPrintsinformationaboutpath.formatisastringwhichacceptsfilesizeinblocks(%b),filename(%n),blocksize(%o),replication(%r),andmodificationdate(%y,%Y).-tail[-f]fileShowsthelast1KBoffileonstdout.Hadoop的分布式文件系统HDFSHDFS文件系统操作命令-chmod[-R]mode,mode,...path...Changesthefilepermissionsassociatedwithoneormoreobjectsidentifiedbypath....Performschangesrecursivelywith-R.modeisa3-digitoctalmode,or{augo}+/-{rwxX}.Assumesaifnoscopeisspecifiedanddoesnotapplyaumask.-chown[-R][owner][:[group]]path...Setstheowninguserand/orgroupforfilesordirectoriesidentifiedbypath....Setsownerrecursivelyif-Risspecified.-chgrp[-R]grouppath...Setstheowninggroupforfilesordirectoriesidentifiedbypath....Setsgrouprecursivelyif-Risspecified.-helpcmdReturnsusageinformationforoneofthecommandslistedabove.Youmustomittheleading'-'characterincmdHadoop的分布式文件系统HDFSHDFSAdmin命令获得HDFS总体的状态bin/hadoopdfsadmin–reportbin/hadoopdfsadmin-metasavefilename
whatthestateoftheNameNode'smetadataisSafemodeSafemodeisanHDFSstateinwhichthefilesystemismountedread-only;noreplicationisperformed,norcanfilesbecreatedordeleted.bin/hadoopdfsadmin–safemodeenter/leave/get/waitHadoop的分布式文件系统HDFSHDFSAdmin命令更改HDFS成员升级HDFS版本bin/start-dfs.sh–upgrade(第一次运行新版本的时候使用)bin/hadoopdfsadmin–upgradeProgressstatusbin/hadoopdfsadmin–upgradeProgressdetailsbin/hadoopdfsadmin–upgradeProgressforce(onyourownrisk!)bin/start-dfs.sh–rollback(在旧版本重新安装后使用)(onyourownrisk!)帮助bin/admindfsadmin-helpHadoop的分布式文件系统HDFS负载均衡加入一个新节点的步骤配置新节点上的hadoop程序在Master的slaves文件中加入新的slave节点启动slave节点上的DataNode,会自动去联系NameNode,加入到集群中Balancer类用来做负载均衡,默认的均衡参数是10%范围内bin/start-balancer.sh–threshold5bin/stop-balancer.sh随时可以停止负载均衡的工作Hadoop的分布式文件系统HDFS在MapReduce程序中使用HDFS通过的配置选项,HadoopMapReduce程序可以自动从NameNode中获得文件的情况HDFS接口包括:命令行接口HadoopMapReduceJob的隐含的输入Java程序直接操作libhdfs从c/c++程序中操作Hadoop的分布式文件系统HDFSHDFS权限控制与安全特性类似于POSIX的安全特性不完全,主要预防操作失误不是一个强的安全模型,不能保证操作的完全安全性bin/hadoopdfs–chmod,-chown,-chgrp用户:当前登录的用户名,即使用Linux自身设定的用户与组的概念超级用户:TheusernamewhichwasusedtostarttheHadoopprocess(i.e.,theusernamewhoactuallyranbin/start-all.shorbin/start-dfs.sh)isacknowledgedtobethesuperuserforHDFS.IfthisuserinteractswithHDFS,hedoessowithaspecialusernamesuperuser.IfHadoopisshutdownandrestartedunderadifferentusername,thatusernameisthenboundtothesuperuseraccount.超级用户组
配置参数:dfs.permissions.supergroupHadoop的分布式文件系统HDFSHadoopMapReduce基本构架与工作过程2.Hadoop
MapReduce的基本工作原理对等于GoogleMapReduce中的Master对等于GoogleMapReduce中的WorkerdatanodedaemonLinuxfilesystem…tasktrackerslavenodedatanodedaemonLinuxfilesystem…tasktrackerslavenodedatanodedaemonLinuxfilesystem…tasktrackerslavenodenamenodenamenodedaemonjobsubmissionnodejobtrackerHadoop
MapReduce的基本工作原理HadoopMapReduce基本构架与工作过程数据存储与计算节点构架HadoopMapReduce基本工作过程Hadoop
MapReduce的基本工作原理HadoopMapReduce主要组件Hadoop
MapReduce的基本原理文件输入格式InputFormat定义了数据文件如何分割和读取InputFile提供了以下一些功能选择文件或者其它对象,用来作为输入定义InputSplits,将一个文件分开成为任务为RecordReader提供一个工厂,用来读取这个文件有一个抽象的类FileInputFormat,所有的输入格式类都从这个类继承这个类的功能以及特性。当启动一个Hadoop任务的时候,一个输入文件所在的目录被输入到FileInputFormat对象中。FileInputFormat从这个目录中读取所有文件。然后FileInputFormat将这些文件分割为一个或者多个InputSplits。通过在JobConf对象上设置JobConf.setInputFormat设置文件输入的格式HadoopMapReduce主要组件Hadoop
MapReduce的基本工作原理文件输入格式InputFormatInputFormat:Description:Key:Value:TextInputFormatDefaultformat;readslinesoftextfilesThebyteoffsetofthelineThelinecontentsKeyValueTextInputFormatParseslinesintokey-valpairsEverythinguptothefirsttabcharacterTheremainderofthelineSequenceFileInputFormatAHadoop-specifichigh-performancebinaryformatuser-defineduser-definedHadoopMapReduce主要组件Hadoop
MapReduce的基本工作原理输入数据分块InputSplitsInputSplit定义了输入到单个Map
任务的输入数据一个MapReduce程序被统称为
一个Job,可能有上百个任务构成InputSplit将文件分为64MB的大小配置文件hadoop-site.xml中的mapred.min.split.size参数控制这个大小mapred.tasktracker.map.taks.maximum用来控制某一个节点上所有map任务的最大数目HadoopMapReduce主要组件Hadoop
MapReduce的基本工作原理数据记录读入RecordReaderInputSplit定义了一项工作的大小,
但是没有定义如何读取数据RecordReader实际上定义了如何
从数据上转化为一个(key,value)对
的详细方法,并将数据输出到Mapper类中TextInputFormat提供了LineRecordReaderHadoopMapReduce主要组件Hadoop
MapReduce的基本工作原理Mapper每一个Mapper类的实例生成了
一个Java进程(在某一个InputSplit上执行)有两个额外的参数OutputCollector
以及Reporter,前者用来收集中间
结果,后者用来获得环境参数以及设置当前执行的状态。现在用Mapper.Context提供给每一个Mapper函数,用来提供上面两个对象的功能HadoopMapReduce主要组件Hadoop
MapReduce的基本工作原理Combiner合并相同key的键值对,减少partitioner时候的数据通信开销conf.setCombinerClass(Reduce.class);是在本地执行的一个Reducer,满足一定的条件才能够执行。HadoopMapReduce主要组件Hadoop
MapReduce的基本工作原理Partitioner&Shuffle在Map工作完成之后,每一个Map函数会将结果传到对应的Reducer所在的节点,此时,用户可以提供一个Partitioner类,用来决定一个给定的(key,value)对传输的具体位置Sort传输到每一个节点上的所有的Reduce函数接收到得Key,value对会被Hadoop自动排序(即Map生成的结果传送到某一个节点的时候,会被自动排序)HadoopMapReduce主要组件Hadoop
MapReduce的基本工作原理Reducer做用户定义的Reduce操作接收到一个OutputCollector的
类作为输出最新的编程接口是Reducer.ContextHadoopMapReduce主要组件Hadoop
MapReduce的基本工作原理文件输出格式OutputFormat写入到HDFS的所有OutputFormat都继承自FileOutputFormat每一个Reducer都写一个文件到一个共同的输出目录,文件名是part-nnnnn,其中nnnnn是与每一个reducer相关的一个号(partitionid)FileOutputFormat.setOutputPath()JobConf.setOutputFormat()HadoopMapReduce主要组件Hadoop
MapReduce的基本工作原理文件输出格式OutputFormatRecordWriterTextOutputFormat实现了缺省的LineRecordWriter,以”key\tvalue”形式输出一行结果。OutputFormat:DescriptionTextOutputFormatDefault;writeslinesin"key\tvalue"formSequenceFileOutputFormatWritesbinaryfilessuitableforreadingintosubsequentMapReducejobsNullOutputFormatDisregardsitsinputs容错处理与计算性能优化Hadoop
MapReduce的基本工作原理由Hadoop系统自己解决主要方法是将失败的任务进行再次执行TaskTracker会把状态信息汇报给JobTracker,最终由JobTracker决定重新执行哪一个任务为了加快执行的速度,Hadoop也会自动重复执行同一个任务,以最先执行成功的为准(投机执行)mapred.map.tasks.speculative.executionmapred.red
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版农户土地承包流转合同中包含农村电商合作条款范本4篇
- 2025版木枋行业绿色生产与节能减排合同4篇
- 2025年度配电室电气设备安装与调试合同4篇
- 2025年度智能煤场租赁与运营管理合同
- 避孕套妇产科学讲解
- 二零二五年度农产品电商平台数据分析及用户行为研究合同
- 2025年度农产品电商运营托管服务合同4篇
- 二零二五版木结构建筑项目管理与咨询服务合同3篇
- 二零二五年度木门安装与售后服务合同规范范本2篇
- 二零二五年度公务用车全生命周期维护服务合同3篇
- 图像识别领域自适应技术-洞察分析
- 个体户店铺租赁合同
- 礼盒业务销售方案
- 术后肺炎预防和控制专家共识解读课件
- 二十届三中全会精神学习试题及答案(100题)
- 中石化高级职称英语考试
- 小学五年级英语阅读理解(带答案)
- 2024二十届三中全会知识竞赛题库及答案
- 仁爱版初中英语单词(按字母顺序排版)
- (正式版)YS∕T 5040-2024 有色金属矿山工程项目可行性研究报告编制标准
- 小学一年级拼音天天练
评论
0/150
提交评论