《大数据导论》课件-第一章_第1页
《大数据导论》课件-第一章_第2页
《大数据导论》课件-第一章_第3页
《大数据导论》课件-第一章_第4页
《大数据导论》课件-第一章_第5页
已阅读5页,还剩151页未读 继续免费阅读

下载本文档

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

文档简介

大数据导论DataNode大数据导论目录01DataNode的职责02机架感知与副本冗余存储策略03机架感知职责:(1)存储数据块(2)负责客户端对数据块的IO请求(3)DataNode定时和NameNode进行心跳通信,接受NameNode的指令。数据块大小:Hadoop1.x默认64MB,Hadoop2.x默认128MBDataNode的职责(Slave)例子:上传一个大于128M的文件(例子为206M)hdfsdfs-puthadoop-2.7.3.tar.gz/user/hadoop查看实际数据块文件。DataNode(2)机架感知与副本冗余存储策略Rack1Rack2Rack3block128MBblock副本一block副本二block副本三安全效率DataNode(3)机架感知(副本冗余存储策略)默认为副本数为3第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点。第二个副本:放置在与第一个副本不同的机架的节点上。第三个副本:与第二个副本相同机架的其他节点上。更多副本:随机节点SecondaryNameNode大数据导论目录01SecondaryNameNode的职责02合并过程03检查点

定期地创建命名空间的检查点(CheckPoint)操作:把edits中最新的状态信息合并到fsimage文件中,防止edits过大。也可以做冷备,对一定范围内数据做快照性备份。SecondaryNameNode的职责合并过程editsfsimagefsimage.ckpt(2)复制fsimage和edits(4)复制fsimage.ckpt(3)合并edits和fsimageSecondaryNameNodefsimageedits.newfsimage.ckpteditsfsimageedits(1)生成新的edits.new(5)替换fsimage和editsNameNode检查点(checkpoint)什么时候进行合并?1)每隔60分钟(node.checkpoint.period)2)当edits文件达到100万条事务(node.checkpoint.txns)只要达到这两个条件之一就可以触发检查点操作。检查点的作用(合并的作用)是什么?可以减少namenode的启动时间检查点(checkpoint)初识YARN大数据导论目录01YARN-进程

02YARN-Web界面03什么是YARN04YARN的架构

05Yarn在Hadoop生态圈的位置YARN-进程YARN-Web界面什么是YARNYARN:YetAnotherResourceNegotiator,另一种资源协调者。最初是为了改善MapReduce的实现,但也是一种资源调度框架,具有通用性,可为上层应用提供统一的资源管理和调度,可以支持其他的分布式计算模式(如Spark)。它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。YARN在Hadoop生态圈中位置Ambari(安装部署工具)Zookeeper(分布式协调服务)HBase(分布式数据库)HDFS(分布式存储系统)YARN(资源调度框架)MapReduce(离线计算)...HivePigMahout...Sqoop(数据库ETL工具)Flume(日志采集)数据分析引擎机器学习算法库数据采集引擎HDFS工作原理大数据导论目录01数据上传过程02数据下载过程03HDFS容错数据上传过程hdfsdfs-put1.mp4/movie文件大小:160MBDistributedFileSystemNameNodeFSDataOutputStreamDataNode1DataNode2DataNode3Client1.创建文件请求2.请求创建文件元数据1000M内存5.满了?生成fsimage4.缓存元信息3.创建元信息文件名:1.mp4路径:/movie大小:160MB数据块:2个数据块位置:数据块1:DN1DN3DN1数据块2:DN2DN3DN28.上传第一个数据块9.水平复制,达到冗余度要求7.创建输出流10.循环,上传所有数据块服务端客户端LRU算法6.返回元信息数据下载过程hdfsdfs-get/movie/1.mp4.DistributedFileSystemNameNodeFSDataInputStreamDataNode1DataNode2Client1.请求2.获取文件元数据1000M内存3.在内存中查找文件名:1.mp4路径:/movie大小:160MB数据块:2个数据块位置:数据块1:DN1DN3DN1数据块2:DN2DN3DN26.创建输入流7.多线程下载所有数据块客户端5.返回元信息

HDFS具有较高的容错性,可以兼容廉价的硬件,它把硬件出错看作一种常态,而不是异常,并设计了相应的机制检测数据错误和进行自动恢复,主要包括以下几种情形:名称节点出错数据节点出错数据出错HDFS容错1、NameNode出错:用SecondaryNameNode备份的fsimage恢复

HA(HighAvailability)高可用:多个NameNode2、DataNode出错:DataNode与NameNode通过“心跳”报告状态,失效后会启动数据冗余复制。3、数据出错:采用md5和sha1对数据块进行校验。HDFS容错操作HDFS大数据导论通过WebConsole通过Shell命令通过JavaAPIHDFS访问方式NameNodeweb管理端口50070,可以查看文件系统概况,数据节点信息,快照,目录结构及文件属性等。通过WebConsole通过WebConsole通过WebConsoleHDFS启动过程通过Shell命令操作命令01hdfsdfs管理命令02hdfsdfsadmin其他03namenode-formathdfszkfchdfsfsckhdfsbalancerhdfsoivhdfsoevhdfssnapshotDiff比较快照lsSnapshottableDir通过Shell命令hadoop@node1:~$hdfsdfs [-appendToFile<localsrc>...<dst>] [-cat[-ignoreCrc]<src>...] [-checksum<src>...] [-chgrp[-R]GROUPPATH...] [-chmod[-R]<MODE[,MODE]...|OCTALMODE>PATH...] [-chown[-R][OWNER][:[GROUP]]PATH...] [-copyFromLocal[-f][-p][-l]<localsrc>...<dst>] [-copyToLocal[-p][-ignoreCrc][-crc]<src>...<localdst>] [-count[-q][-h]<path>...] [-cp[-f][-p|-p[topax]]<src>...<dst>] [-createSnapshot<snapshotDir>[<snapshotName>]] [-deleteSnapshot<snapshotDir><snapshotName>] [-df[-h][<path>...]] [-du[-s][-h]<path>...] [-expunge](清空回收站) [-find<path>...<expression>...] [-get[-p][-ignoreCrc][-crc]<src>...<localdst>] [-getfacl[-R]<path>] [-getfattr[-R]{-nname|-d}[-een]<path>](获取文件扩展属性) [-getmerge[-nl]<src><localdst>] [-help[cmd...]]通过Shell命令hadoop@node1:~$hdfsdfsadmin [-report[-live][-dead][-decommissioning]] [-safemode<enter|leave|get|wait>] [-saveNamespace] [-rollEdits] [-restoreFailedStoragetrue|false|check] [-refreshNodes] [-setQuota<quota><dirname>...<dirname>] [-clrQuota<dirname>...<dirname>] [-setSpaceQuota<quota>[-storageType<storagetype>]<dirname>...<dirname>] [-clrSpaceQuota[-storageType<storagetype>]<dirname>...<dirname>] [-finalizeUpgrade] [-rollingUpgrade[<query|prepare|finalize>]] [-refreshServiceAcl] [-refreshUserToGroupsMappings] [-refreshSuperUserGroupsConfiguration] [-refreshCallQueue] [-refresh<host:ipc_port><key>[arg1..argn] [-reconfig<datanode|...><host:ipc_port><start|status>] [-printTopology] [-refreshNamenodesdatanode_host:ipc_port] [-deleteBlockPooldatanode_host:ipc_portblockpoolId[force]] [-setBalancerBandwidth<bandwidthinbytespersecond>] [-fetchImage<localdirectory>] [-allowSnapshot<snapshotDir>] [-disallowSnapshot<snapshotDir>] [-shutdownDatanode<datanode_host:ipc_port>[upgrade]] [-getDatanodeInfo<datanode_host:ipc_port>] [-metasavefilename] [-triggerBlockReport[-incremental]<datanode_host:ipc_port>] [-help[cmd]]Configuration类该类的对象封装了配置信息FileSystem类文件系统类,可使用该类的方法树对文件/目录进行操作,一般通过FileSystem的静态方法get获得一个文件系统对象FSDataInputStream和FSDataOutputStream类HDFS中的输入输出流。分别通过FileSystem的open方法和create方法获得以上类均来自java包:org.apache.hadoop.fs通过JAVAAPIHDFS高级功能大数据导论目录01安全模式02回收站05HA(高可用)03快照04配额安全模式是HDFS所处的一种特殊状态,在处于这种状态时,文件系统只接受读数据请求,不能对文件进行写,删除等操作。查看当前状态:hdfsdfsadmin-safemodeget进入安全模式:hdfsdfsadmin-safemodeenter强制离开安全模式:hdfsdfsadmin-safemodeleave一直等待直到安全模式结束:hdfsdfsadmin-safemodewait安全模式HDFS为每一个用户都创建了回收站,这个类似操作系统的回收站。位置是/user/用户名/.Trash/。操作演示:1、列出某目录下的文件hdfsdfs-ls2、把其中的一个文件file1删除hdfsdfs-rmfile13、到回收站可看到刚才删除的file1hdfsdfs-ls/user/hadoop/.Trash/Current/tmp4、把file1从回收站移动到/home/haoop/目录下hdfsdfs-mv/user/hadoop/.Trash/Current/tmp/file1

/home/hadoop/5、到/home/hadoop/查看即可看到恢复的文件file1hdfsdfs-ls/tmp/sqoop1回收站快照功能默认禁用,开启或禁用快照功能,需要针对目录操作,命令如下(<snapshotDir>表示某个目录):hdfsdfsadmin-allowSnapshot<snapshotDir>hdfsdfsadmin-disallowSnapshot<snapshotDir>创建快照、删除快照、重命名快照的命令如下:hdfsdfs-createSnapshot<snapshotDir>[<snapshotName>]hdfsdfs-deleteSnapshot<snapshotDir><snapshotName>hdfsdfs-renameSnapshot<snapshotDir><oldName><newName>快照HDFS提供了两种配额的命令(hdfsdfsadmin)(1)setQuotahdfsdfsadmin-setQuota<quota><dirname>...<dirname>setQuota指的是对HDFS中某个目录设置文件和目录数量之和的最大值。(2)setSpaceQuotahdfsdfsadmin-setSpaceQuota<quota><dirname>...<dirname>setSpaceQuota针对的是设置HDFS中某个目录可用存储空间大小,单位是byte。清除配额的命令为:hdfsdfsadmin-clrQuota<dirname>...<dirname>hdfsdfsadmin-clrSpaceQuota<dirname>...<dirname>配额NameNode是集群的主,有单点失效的问题。

NameNode

DataNode

DataNode

DataNode

DataNode......HDFSClient出故障了整个集群将不可用HA(HighAvailability高可用)配置两个NameNode,一个为活跃状态,一个为备用状态。故障时马上切换NameNodeDataNodeDataNodeDataNodeDataNode......HDFSClientNameNodeStandbyActiveHA(HighAvailability高可用)YARN架构大数据导论目录01YARN架构图

02Container(容器)03ResourceManager04NodeManager05ApplicationMasterResourceManager(Scheduler、ApplicationManager)ClientNodeManagerYARN架构ContainerApplicationMasterNodeManagerContainerApplicationNodeManagerContainerApplicationYARN中资源包括内存、CPU、磁盘输入输出等等。Container是YARN中资源的抽象,它封装了某个节点上的多维度资源。Container(容器)ResourceManager负责整个系统的资源分配和管理,是一个全局的资源管理器。主要由两个组件构成:调度器和应用程序管理器:调度器(Scheduler):

调度器根据资源情况为应用程序分配封装在Container中的资源。应用程序管理器(ApplicationManager):

应用程序管理器负责管理整个系统中所有应用程序。ResourceManager(资源管理器)NodeManager是每个节点上的资源和任务管理器。定时向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态;接收并处理来自ApplicationManager的Container启动/停止等请求。NodeManager(节点管理器)ApplicationMaster是一个详细的框架库,它结合从ResourceManager获得的资源和NodeManager协同工作来运行和监控任务。用户提交的每一个应用程序均包含一个ApplicationMaster。主要功能包括:1)、与ResourceManager调度器协商以获取抽象资源(Container);2)、负责应用的监控,跟踪应用执行状态,重启失败任务等;3)、并且与NodeManager协同工作完成Task的执行和监控。备注:MRAppMaster是MapReduce时的ApplicationMaster的一种实现。ApplicationMaster(主应用)YARN运行机制大数据导论目录01Application运行机制

02任务进度监控03MapReduce与YARN的对比04YARN对MapReduce运行性能的提升

YARN中应用(Application)运行机制(流程)ApplicationClientclientnodeResurceManagerresourcemanagernodenodemanagernodeNodeManager2a:初始化容器2b:启动4:资源不够?申请新资源nodemanagernodeNodeManager1:提交YARNApplicationApplication(应用进程)5b:启动容器容器ApplicationMaster5a:资源拿到了?启动容器3.计算资源够不够,够,则运行任务YARN中任务进度监控ApplicationClientclientnodeResurceManagerresourcemanagernodenodemanagernodeNodeManagernodemanagernodeNodeManagerApplication(应用进程)容器容器ApplicationMastera.向自己的ApplicationMaster报告进度和状态b.汇聚作业视图获取状态MapReduce1与YARN组成对比分工MapReduce1YARN(1)作业调度(2)任务进度监控(跟踪任务、重启失败的任务;记录任务流水)JobTrackerResourceManager→作业调度ApplicationMaster→任务进度监控任务执行(或节点资源管理)TaskTrackerNodeManager资源调配单元(cpu,内存等)Slot(槽)Container(容器)

YARN对MapReduce运行性能提升主要特点:ResourceManager与ApplicationMaster分离性能提升:可以扩展支持10000个节点,100000个任务YARN调度器大数据导论目录01FIFOScheduler02CapatitySchedule03FairScheduleYARN调度器类似一个工厂,接到很多订单,比如一个订单是1W件,一个是100件等等,工人是有限的,采用什么样的策略来安排达到资源利用率最高?这就是调度器所要考虑的。YARN调度器分三种:(1)FIFOScheduler→先进先出调度器(2)CapacityScheduler→容器调度器(3)FairScheduler→公平调度器FIFOScheduler最简单的调度器job1运行完后,job2才能获取到资源CapacitySchedule分成多个队列,每个队列占用一定资源可以看作是FIFOScheduler的多队列版本。每个队列可以限制资源使用量。但是,队列间的资源分配以使用量作排列依据,使得容量小的队列有竞争优势。注意:如果不限制某队列最大容量,则运行过程中,它可以占用全部资源。CapacityScheduleYARN默认采用CapacityScheduler

FairScheduler刚开始,job1占用100%资源job2提交后,job1、job2各占50%job2运行完后,job1又占100%假设每个任务具有相同的优先级,平均分配系统的资源三种调度器比较调度器工作方法FIFOScheduler(1)单队列(2)先进先出的原则CapacityScheduler(1)多队列。(2)计算能力调度器,选择资源使用量占用最小、优先级高的先执行。(3)多用户的情况下,可以最大化集群的吞吐和利用率。FairScheduler(1)多队列。(2)公平调度,所有的job具有相同的资源MapReduce概述大数据导论目录01MapReduce是什么02MapReduce设计思想03MapReduce特点04MapReduce不擅长的场景MapReduce是什么MapReduce是一种简化并行计算的编程模型,用于进行大数据量的计算。

MapReduce设计思想MapReduce采用“分而治之”的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个子节点共同完成,然后整合各个子节点的中间结果,得到最终的计算结果。简而言之,MapReduce就是“分散任务,汇总结果”

MapReduce特点易于编程良好的扩展性高容错性擅长对PB级以上海量数据进行离线处理

MapReduce不擅长的场景(1)实时计算MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。(2)流式计算

流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。(3)DAG(有向图)计算

多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,降低使用性能。MapReduce编程模型大数据导论目录01初识MapReduce模型

02MapReduce示例03MapReduce编程模型输入一个大文件,通过Split之后,将其分为多个分片每个文件分片由单独的机器去处理,这就是Map方法将各个机器计算的结果进行汇总并得到最终结果,这就是Reduce方法初识MapReduce模型从MapReduce自身的命名特点可以看出,MapReduce由两个阶段组成:Map和Reduce。用户只需要编写map()和reduce()两个函数,即可完成分布式程序的设计。MapReduce示例1+2+3+4+5+6+7+8+9+10大任务:1+2+3+4小任务:5+6+78+9+10split10182755<k1,v1><k2,v2><k3,v3><k4,v4>Map阶段Reduce阶段Split从一个简单示例看MapReduce编程模型MapReduce编程模型Input<k2,v2>map()<k1,v1><k1,v1><k1,v1><k1,v1><k2,v2><k2,v2><k2,v2><k3,v3><k3,v3><k3,v3>reduce()<k4,v4><k4,v4><k4,v4>Map输入Map输出Reduce输入Reduce输出ShuffleOutputHDFS/HBaseHDFS/HBasemap()map()map()InputFormatOutputFormatMapReduce编程模型概论大数据导论目录01MapReduce大致工作流程02MapReduce模型要点主要分为八个步骤(1)对输入文件进行切片规划。(2)启动相应数量的MapTask进程。(3)调用InputFormat中的RecordReader,读一行数据并封装为<k1,v1>,并将<k1,v1>传给map函数。(4)调用自定义的map函数计算,并输出<k2,v2>。(5)收集map的输出,进行分区和排序(shuffle)。(6)ReduceTask任务启动,并从map端拉取数据。ReduceTask获取到输入数据<k3,v3>。(7)ReduceTask调用自定义的reduce函数进行计算,得到输出<k4,v4>。(8)调用Outputformat的RecordWriter将结果数据输出。MapReduce大致工作流程(1)任务Job=Map+Reduce(2)Map的输出是Reduce的输入(3)所有的输入和输出都是<Key,Value>形式

<k1,v1>是Map的输入,<k2,v2>是Map的输出

<k3,v3>是Reduce的输入,<k4,v4>是Reduce的输出(4)k2=k3,v3是一个集合,v3的元素就是v2(5)所有的输入和输出的数据类型必须是hadoop的数据类型(实现Writable接口)

Integer->IntWritableLong->LongWritableString->Textnull->NullWritable(6)MapReduce处理的数据都是HDFS的数据(或HBase)MapReduce模型要点MapReduce编程模型实例大数据导论MapReduce编程实例下面结合案例,加深对MapReduce模型的理解。案例一:WordCount程序案例:WordCount程序(1)分析WordCount的数据处理的过程hadoopjarhadoop-mapreduce-examples-2.7.3.jarwordcount/input/data.txt/output/wordcount输入/input/data.txtagoodbeginningishalfthebattlewherethereisawillthereisaway.............................................................................Mapk1:偏移量LongWritablev1:数据Text<k1,v1>k2:单词Text

v2:1IntWritable<k2,v2>Reducewherethereisawillthereisawayagoodbeginningishalfthebattlek3:单词Text

v3:1IntWritable<k3,v3>k4:单词Text

v4:频率IntWritable<k4,v4>a 3battle 1beginning 1good 1half 1is 3the 1there 2way 1where 1will 1hdfs对v3求和输出分词a1good1beginning1is1half1the1battle1where1there1is1a1will1there1is1a1way1a(1,1,1)battle (1)beginning (1)good (1)half (1)is(1,1,1)the (1)there(1,1)way (1)where (1)will (1)(1)相同的k2,会作为reducer的同一个k3输入,v3是v2组成的集合。groupby(2)k3互不相同。distinct(3)k3按默认排序。orderbyMapReduce输入格式大数据导论目录01物理分片02逻辑分片MapReduce编程模型Input<k2,v2>map()<k1,v1><k1,v1><k1,v1><k1,v1><k2,v2><k2,v2><k2,v2><k3,v3><k3,v3><k3,v3>reduce()<k4,v4><k4,v4><k4,v4>Map输入Map输出Reduce输入Reduce输出ShuffleOutputHDFS/HBaseHDFS/HBasemap()map()map()InputFormatOutputFormatMapReduce的输入格式(1)认识:物理分片(按200个字分片)MapReduce的输入格式(1)认识:物理分片(按128MB分片)会出现如下情形:MapReduce的输入格式(2)认识:逻辑分片(按200个字分片),第二个分片把“淡淡的”给了第一个分片MapReduce的输入格式(3)有了逻辑分片,就可以获取一行一行的数据了MapReduce的输入格式InputFormat提供以下两个功能(1)数据切分,获得SplitInput(逻辑切片),FileInputFormat.getSplits()获取到。(2)为Mapper提供输入数据。有多少个SplitInput,就有多少个MapperTextInputFormat是默认InputFormatFileInputSplit[]getSplit()RecordReader读取<k1,v1><k1,v1><k1,v1>MapReduce的输出格式大数据导论目录01MapReduce的输出格式02分区的概念MapReduce编程模型Input<k2,v2>map()<k1,v1><k1,v1><k1,v1><k1,v1><k2,v2><k2,v2><k2,v2><k3,v3><k3,v3><k3,v3>reduce()<k4,v4><k4,v4><k4,v4>Map输入Map输出Reduce输入Reduce输出ShuffleOutputHDFS/HBaseHDFS/HBasemap()map()map()InputFormatOutputFormatMapReduce的输出格式OutputFormat主要用于描述输出数据的格式,通过RecordWriter能够将用户提供的key/value对写入特定格式的文件中(1)TextOutputFormt调用toString()方法把它们转换为字符串(2)NullWritable来省略输出的key或value分区Partition(1)什么是分区以MySQL数据库为例,解释什么是分区分区1分区条件:sal<1500分区2分区条件:1500<=sal<=2500分区3分区条件:sal>2500通过查看SQL的执行计划,得知是否提高了查询的效率查询:工资:1500~2500之间的员工select*fromEMPwheresal>=1500andsal<=2500分区Partition(1)什么是分区Partition定义:Mapper任务划分数据的过程称作Partition。负责实现数据的类称作Partitioner,默认的分区是Hash分区(HashPartition)。Partition作用:将map阶段产生的所有<key,value>对分配给不同的Reducer处理,可以将Reduce阶段的处理负载进行分摊。→Partition的数量决定Reducer的数量。分区Partition(2)Hash分区基本原理---关联知识:后面的Hive桶表计算某个值的hash值,如果结果相同,则放入同一个分区Hash分区的作用:把数据打散进行存放,最终是为了避免热块数据:123456789要求:尽量把数据打散hash运算:

123012301(对4求余数)0123481592637合并Combiner大数据导论目录01Combiner概述02使用Combiner案例03Combiner使用场景

Combiner概述是一种特殊Reducer,在Mapper端,先执行一次Reducer作用:----->减少Mapper输出到Reduce的数据量,缓解网络传输瓶颈,提高reducer的执行效率。

需要注意的问题:一定要谨慎使用Combiner有些情况不能使用Combiner---->如:求平均值保证引入Combiner以后,不能改变原来的逻辑

使用Combiner差异1.没有CombinerMapper的输出Reduce阶段12345(1,2,3,4,5)求和2.有Combiner12345(1,2,3)求和(4,5)69(6,9)Combiner阶段Mapper的输出Reduce阶段1515增加Combiner的WordCount输入/input/data.txtagoodbeginningishalfthebattlewherethereisawillthereisawayMapperk1:偏移量LongWritablev1:数据Text<k1,v1>k2:单词Text

v2:1IntWritable<k2,v2>a1good1beginning1is1half1the1battle1where1there1is1a1will1there1is1a1way1Combinerwherethereisawillthereisawayagoodbeginningishalfthebattlek3:单词Text

v3:1IntWritable<k3,v3>a(1,2)good(1)beginning(1)is(1,1,1)k4:单词Text

v4:频率IntWritable<k4,v4>a 3battle 1beginning 1good 1half 1is 3the 1there 2way 1where 1will 1对v3求和splitReducera(1,1)--->a2使用场景Mapper输出123Reducer(1,2,3)2Mapper输出123(1.5,3)不是21.5求平均值求平均值求平均值MapReduce工作机制大数据导论目录01作业运行机制02作业工作原理03状态更新的传递流程MapReduce作业运行机制整个过程涉及五个独立的实体:(1)客户端:提交MapReduce作业(2)YARNResourceManager:负责协调集群上计算机资源的分配(3)YARNNodeManager:负责启动和监视集群中机器上的计算容器(container)(4)MapReduce的ApplicationMaster,负责协调运行MapReduce作业的任务。它和MapReduce任务在容器中运行,这些容器由资源管理器分配并由节点管理器进行管理。(5)分布式文件系统(一般为HDFS):共享作业文件MapReduce作业工作原理MapReduceprogramJob1.runjobclientJVMclientnodeResurceManager2:获取JobIDresourcemanagernode4:提交Job(JobID/数据元信息)MRAppMasternodemanagernodeSharedFileSystem(e.g.HDFS)3a:分片,将Jar文件/分片保存到以JobID命名的目录。NodeManager5a:分配容器5b:启动6:初始化Job(谁来执行/需要多少资源)7:获取分片,创建map/reduce8:资源不够?申请新资源nodemanagernodeNodeManager9a:资源拿到了?启动容器MapReduceprogramJob1:请求执行JobMapTaskorReduceTaskYarnChild11:运行9b:启动10:获取分片/配置/Jar文件,保存到本地taskJVM3b:获取到数据元信息。状态更新在MapReduce中的传递流程MapReduceprogramJob1.轮询获取状态clientJVMclientnodeResurceManagerresourcemanagernodeMRAppMasternodemanagernodeSharedFileSystem(e.g.HDFS)NodeManagernodemanagernodeNodeManagerMapTaskorReduceTaskYarnChildtaskJVM2:获取状态a.向自己的MRAppMaster报告进度和状态b.汇聚作业视图状态更新在MapReduce中的传递流程--总结(1)map任务或reduce任务运行时,向自己的MRAppMaster报告进度和状态。(2)MRAppMaster形成一个作业的汇聚视图(3)客户端每秒钟轮询一次MRAppMaster获取最新状态。MapReduce的核心(Shuffle)大数据导论目录01MapReduce的核心(Shuffle)MapReduce编程模型Input<k2,v2>map()<k1,v1><k1,v1><k1,v1><k1,v1><k2,v2><k2,v2><k2,v2><k3,v3><k3,v3><k3,v3>reduce()<k4,v4><k4,v4><k4,v4>Map输入Map输出Reduce输入Reduce输出ShuffleOutputHDFS/HBaseHDFS/HBasemap()map()map()Shuffle(MapReduce的核心)MapReduce确保每个reducer的输入都是按键排序的。系统执行排序、将map输出作为输入传给reducer的过程称为Shuffle。Shuffle是MapReduce奇迹发生的地方。数据块(128MB)InputSplitMap缓冲区(100M)80%满-->溢写12313分区排序123213合并数据块(128MB)InputSplitMap缓冲区(100M)80%满-->溢写12313分区排序213合并数据块(128MB)InputSplitMap缓冲区(100M)80%满-->溢写12313分区排序213合并123CombinerReduceHDFS①②③④⑤⑥MapReduce大概6次IO操作Shuffle大概4次IO操作hadoop部署前期准备大数据导论目录01关闭防火墙02修改映射03免密登陆配置修改主机名修改主机名(master、slave01、slave02)hostnamectlset-hostanemXXX重启生效关闭防火墙systemctlstatusfirewalld #查看开启状态systemctlstopfirewalld #临时关闭防火墙systemctldisablefirewalld #关闭防火墙开机自启setenforce0sed-i's/SELINUX=enforce/SELINUX=disabled/g'/etc/selinux/config配置主机映射vi/etc/hosts配置免密登入ssh-keygen-trsa ##输入后回车三下免密登入只要在一台设备上配置就可以?A.对B.错练习Java、hadoop环境变量的配置大数据导论目录01Java环境配置02Hadoop环境配置jdk环境配置安装上传文件:yum-yinstalllrzszrz-y解压jdk压缩包到/usr/local/src/tarzxvfjdk-8u201-linux-x64.tar-C/usr/local/src更名为jdkmvjdk1.8.0_201jdk配置环境变量vi/etc/profile在尾行插入以下字符串exportJAVA_HOME=/usr/local/src/jdk ##/usr/local/src/jdk自己的解压路径exportPATH=$PATH:$JAVA_HOME/binHadoop环境变量的配置tar-zxvfhadoop-2.6.0.tar.gz-C/usr/local/src///改名字mvhadoop-2.6.0hadoop环境变量配置vi/etc/profile完成以后如下图执行以下命令让环境变量生效(每次更改环境变量文件都需要source才能生效)source/etc/profile配置主机映射vi/etc/hosts配置免密登入ssh-keygen-trsa ##输入后回车三下免密登入只要在一台设备上配置就可以?A.对B.错练习hadoop组件hdfs配置大数据导论目录hadoop组件hdfs配置hadoop文件配置进入到这个文件cd/usr/local/src/hadoop/etc/hadoop/配置yarn-env.sh的jdk路径(23行左右)exportJAVA_HOME=/usr/local/src/jdk配置hadoop-env.sh的jdk路径(大概在25行)exportJAVA_HOME=/usr/local/src/jdk配置hdfs-site.xml<property><name>dfs.replication</name><value>3</value></property><property><name>node.secondary.http-address</name><value>master:50090</value></property><property><name>dfs.namnode.http-address</name><value>master:50070</value></property><property><name>dfs.permissions.enabled</name><value>false</value></property><property><name>.dir</name><value>/usr/local/src/hadoop/data/name</value></property><property><name>dfs.datanode.data.dir</name><value>/usr/local/src/hadoop/data/data</value></property>配置core-site.xml<property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value></property><property> <name>hadoop.tmp.dir</name> <value>/usr/local/src/hadoop/tmp/</value></property>配置mapred-site.xml先把mapred-site.xml.template文件改为mapred-site.xmlmvmapred-site.xml.templatemapred-site.xml<property> <name></name> <value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>master:19888</value></property>配置slavesmasterslave01salve02分发以上所有配置文件到另外两台节点,使之全部节点文件同步scp/etc/profileroot@slave1:/etc/profilescp/etc/profileroot@slave2:/etc/profile格式化namnode主节点hdfsnamenode-format开始启动start-dfs.shHadoop习题讲解大数据导论目录Zookeeper组件搭建配置1、在HDFS中负责保存文件数据的节点被称为(B)A.NameNodeB.DataNodeC.SecondaryNameNodeD.NodeManager2、考虑到安全和效率,Hadoop设计了机架感知功能,下面关于机架感知说法正确的是(C)A.三个冗余备份可在同一个机架上B.三个冗余备份在不同的机架上C.三个冗余备份其中有两个在同一个机架上,另外一个备份在不同的机架上D.上述说法都不对3、从HDFS下载文件,正确的shell命令是(A)A.hdfsdfsgetB.hdfsdfs-appendToFileC.hdfsdfsputD.hdfsdfscopyFromLocal4、HDFS的是基于流数据模式访问和处理超大文件的需求而开发的,具有高容错、高可靠性、高可扩展性、高吞吐率等特征,适合的读写任务是:(c)4、一饮写入,少次读写B、多次写入,少次读写C、一次写入,多次读写D、多次写入,多次读写5、HDFS中block默认保存几份(c)A.1B.2C.3D.46、现有一个安装2.7.7版本的Hadoop集群,在不修改Hadoop默认配置的情况下,存储100个每个200M的mp4文件,请问最终会在整个HDFS集群中产生多少个数据块(包括副本)(B)А.200B.600C.400D.12007、Namenode的Web界面默认占用哪个端口是(A)。A.50070B.8088C.50090D.90008、SecondaryNameNode的Web界面默认占用哪个端口是(C)A.50070B.8088C.50090

温馨提示

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

评论

0/150

提交评论