1 / 37
文档名称:

期ad0op系简答题(8分)25简述 Mapreduce的.pdf

格式:pdf   大小:3,020KB   页数:37页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

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

分享

预览

期ad0op系简答题(8分)25简述 Mapreduce的.pdf

上传人:青山代下 2024/4/19 文件大小:2.95 MB

下载得到文件列表

期ad0op系简答题(8分)25简述 Mapreduce的.pdf

相关文档

文档介绍

文档介绍:该【期ad0op系简答题(8分)25简述 Mapreduce的 】是由【青山代下】上传分享,文档一共【37】页,该文档可以免费在线阅读,需要了解更多关于【期ad0op系简答题(8分)25简述 Mapreduce的 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..ad0op系简答题(8分)、修改/etc/profile文件,(hadoop-、core-、hdfs-、mapred-、yarn-)----》./start-,作用分别是什么Namenode:维护元数据息,当jobClient进行读写请求的时候,返回block和datanode的位置息。:..namenode进行元数据的合并,一定范围内的数据备份。Datanode:存储数据,向namenode发送心跳报告,接收namenode节点的指令以及Block副本的复制ResourceManager:在yarn中,resourceManager负责集群中所有资源的统一管理和分配,接收来自各个节点的资源回报息,并把这些息按照一定的策略分配给各个应用程序。NodeManager:是yarn中每个节点上的代理,他管理hadoop集群中单个计算节点包括与resourcesManager保持通,监督Container的生命周期管理,监控每个Container的资源使用情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务。:管理任务,并将任务分配给taskTrackerTaskreacker:任务的执行方。3写出下面的命令1)杀死一个jobHadoopjoblist拿到job-id,hadoopjob–killjob-id2)删除hdfs上的/tmp/aaa目录Hadoopfs–rmr/tmp/aaa3)加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令加新节点:Hadoop--:Hadoopmradmin–refreshnodesHadoopdfsadmin-refreshnodes4简述hadoop的调度器,并说明其工作方法(1)FIFO:默认调度器,先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。:..)CapacityScheduler:计算能力调度器,支持多个队列,计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列;然后按照作业优先级和提交事件顺序选择,同时考虑用户资源量限制和内存限制。(3)FairScheduler:公平调度器,支持多队列多用户,每个队列中的资源量可以配置,统一队列中的作业公平共享对列中所有资源。除以上三点外:还有新型应用的hadoop调度器(4)适用于异构集群的调度器LATE:当一个节点出现空闲资源且系统中总的备份任务数小于SpeculativeCap时,(1)如果该节点是慢节点(节点得分高于SlowNodeThreshold),则忽略这个请求。(2)对当前正在运行的task按估算的剩余完成时间排序(3)选择剩余完成时间最大且进度低于SlowTaskThreshold的task,为该task启动备份任务。5你认为用java,Streaming,pipe方式开发mapeduce,各有哪些优缺点(1)java写mapreduce可以实现复杂的逻辑,如果需求简单,则显得繁琐。(2)Hiveql基本都是针对hive中的表数据进行编写,但对复杂的逻辑很难进行实现。Partition是shuffle操作中的一个重要过程,作用就是将map的结果,按照规则分发到不同的reduce中进行处理,从而按照分区得到多个输出结果。默认的是reducer=:..)%numReduceTasks;7shuffle阶段你怎么理解的MapReduce确保每个reducer的输入都是按键排序的,系统执行排序的过程称为shuffle。我们可以理解为map产生输出到reduce的消化输入的整个工程。排序阶段:更恰当的说法是合并阶段,因为排序是在map端进行的。这个阶段将合并map输出,维持其顺序排序,循环进行。最后阶段就是reduce阶段,对已排序输出中的每个键调用reduce函数,此阶段的输出直接写到输出文件系统,一般为hdfs。、8具体可查看什么是Zookeeper,Zookeeper的作用是什么,在Hadoop及hbase中具体作用是什么。Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,以FastPaxos算法为基础,实现同步服务,配置维护和命名服务等分布式应用。这比较官方,而我认为zookeeper是hadoop的整体监控系统。如果namenode、Hmaster宕机后,这时候zookeeper重新选出leader,继续服务。作用:(1)加强集群稳定性:实现了高性能,高可靠性和有序的访问。高性能保证了zookeeper能应用在大型的分布式系统上,高可靠性保证它不会由于单一节点的故障而造成任何问题,有序的访问能保证客户端可以实现较为复杂的通过操作。(2)加强集群持续性:客户端连接到一个zookeeper服务器,并且维护tcp连接,并且发送请求,获取回复,获取事件,并且发送连接号,如果这个tcp连接断掉了,那么客户端:..)保证集群有效性:Zookeeper使用数字来对每一个更新进行标记。这样能保证Zookeeper交互的有序。后续的操作可以根据这个顺序实现诸如同步操作这样更高更抽象的服务。(4)保证集群高效:Zookeeper的高效更表现在以读为主的系统上。Zookeeper可以在千台服务器组成的读写比例大约为10:1的分布系统上表现优异。zookeeper在Hadoop及hbase中具体作用一个Zookeeper的集群中,,两个follower的情况下,停掉leader,:Hadoop,使用Zookeeper的事件处理确保整个集群只有一个NameNode,,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,,一个是map任务,一个是reduce任务Map任务处理:对输入文件的每一行解析成key、value对,对每一个键值对调用一次map函数,在map函数中写自己的逻辑,对输入的key、value进行处理,转换成新的key、value输出,对输出的key、value进行分区,对相同分区的数据,按照key进行排序分组,相同key的value放到一个集合中。Reduce任务处理:对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点,这个过程并不是:..reduce,而是reduce主动去获取数据。对多个map任务的输出进行合并、排序,在reduce函数中写自己的逻辑,对输入的key、value处理,转换成新的key、value输出,将reduce输出保存到hdfs中。Mapreduce是一种编程思想,map的作用就是过滤一些原始数据,reduce则是处理这些数据,得到我们想要的结果。10单机(本地)模式中的注意点?在单机模式(standalone)中不会存在守护进程,所有东西都运行在一个JVM上。这里同样没有DFS,使用的是本地文件系统。单机模式适用于开发过程中运行MapReduce程序,这也是最少使用的一个模式。11伪分布模式中的注意点?伪分布式(Pseudo)适用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运行。12VM是否可以称为Pseudo?不是,两个事物,同时Pseudo只针对Hadoop。13全分布模式又有什么注意点?全分布模式通常被用于生产环境,这里我们使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之:..运行的主机,Datanode运行的主机,以及tasktracker运行的主机。在分布式环境下,主节点和从节点会分开。14Hadoop是否遵循UNIX模式?是的,在UNIX用例下,Hadoop还拥有目录。15Hadoop安装在什么目录下?使用hadoop的版本Cloudera和Apache使用相同的目录结构,Hadoop被安装在cd/usr/lib/hadoop-/。、Jobtracker和tasktracker的端口号是?Namenode,70;Jobtracker,30;Tasktracker,60。17Hadoop的核心配置是什么?Hadoop的核心配置通过两个xml文件来完成::..hadoop-;2,hadoop-。这些文件都使用xml格式,因此每个xml中都有一些属性,包括名称和值,但是当下这些文件都已不复存在。18那当下又该如何配置?Hadoop现在拥有3个配置文件:1,core-(用来指定namenode的地址,和产生临时文件的存放目录);2,hdfs-(设置hdfs保存数据副本的数量以及操作权限);3,mapred-(用来指定mapreduce运行在yarn上)。这些文件都保存在etc/hadoop目录下。还有一个yarn-(指定resourcesmannager的地址,nodemanager获取数据的方式)19RAM的溢出因子是?溢出因子(Spillfactor)是临时文件中储存文件的大小,也就是Hadoop-temp目录。?:..21hdfs-?(磁盘或是远端)’”时,系统究竟发生了什么?这意味着Namenode没有运行在你的VM之上。23我们使用Ubuntu及Cloudera,那么我们该去哪里下载Hadoop,或者是默认就与Ubuntu一起安装?这个属于Hadoop的默认配置,你必须从Cloudera或者Edureka的dropbox下载,然后在你的系统上运行。当然,你也可以自己配置,但是你需要一个Linuxbox,Ubuntu或者是RedHat。在Cloudera网站或者是Edureka的Dropbox中有安装步骤。24如何重启Namenode?./hadoop--checkpoint:..30-40分钟,待checkpoint完成后。到主节点上的current文件checkfsimage的修改时间,看是否已经同步成功。然后执行./hadoop-,-,修改其中的JVM参数。./hadoop-,如果不成功就kill-./hadoop-).加载元数据文件fsimage(~10min)2).加载操作日志edits(1~2min)3).存储元数据到fsimage(3~4min),等待块汇报息完成(10~15min),,?:..是否正常工作,使用命令/etc/--namenodestatus或者就是简单的jps。?可以让你知道哪个节点是JobTracker。27/etc/?/etc/(服务)的位置或状态,其实是LINUX特性,和Hadoop关系不大。28如何在浏览器中查找Namenode?如果你确实需要在浏览器中查找Namenode,你不再需要localhost:8021,Namenode的端口号是。29如何从SU转到Cloudera?从SU转到Cloudera只需要键入exit。30启动和关闭命令会用到哪些文件?:..Masters。31Slaves由什么组成?Slaves由主机的列表组成,每台1行,用于说明数据节点。32Masters由什么组成?Masters同样是主机的列表组成,每台一行,用于说明第二Namenode服务器。33hadoop-?hadoop-。34请列出正常的hadoop集群中hadoop都分别需要启动哪些进程,他们的作用分别都是什么,请尽量列的详细一些。namenode:负责管理hdfs中文件块的元数据,响应客户端请求,管理datanode上文件block的均衡,维持副本数量Secondname:主要负责做checkpoint操作;也可以做冷备,对一定范围内数据做快照性备份。Datanode:存储数据块,负责客户端对数据块的io请求Jobtracker:管理任务,并将任务分配给tasktracker。Tasktracker:执行JobTracker分配的任务。:..shell命令(1)杀死一个job答:hadoopjoblist得到job的id,然后执行hadoopjob-killjobId就可以杀死一个指定jobId的job工作了。(2)删除hdfs上的/tmp/aaa目录答:hadoopfs-rmr/tmp/aaa(3),要在conf目录下的excludes文件中列出要下线的datanode机器主机名然后在主节点中执行hadoopdfsadmin-refreshnodesà下线一个datanode删除一个节点的时候,只需要在主节点执行hadoopmradmin-refreshnodes---à下线一个tasktracker/nodemanager36你认为用java,streaming,pipe方式开发map/reduce,各有哪些优点就用过java和hiveQL。Java写mapreduce可以实现复杂的逻辑,如果需求简单,则显得繁琐。HiveQL基本都是针对hive中的表数据进行编写,但对复杂的逻辑(杂)很难进行实现。写起来简单。37请简述hadoop怎样实现二级排序(就是对key和value双排序)第一种方法是,Reducer将给定key的所有值都缓存起来,然后对它们再做一个Reducer内排序。但是,由于Reducer需要保存给定key的所有值,可能会导致出现内存耗尽的错误。:..,生成一个组合key(parable接口或者调用paratorClass函数),这样reduce获取的结果便是先按key排序,后按value排序的结果。这两种方法各有优势,第一种方法编写简单,但并发度小,数据量大的情况下速度慢(有内存耗尽的危险),第二种方法则是将排序的任务交给MapReduce框架shuffle,更符合Hadoop/Reduce的设计思想。我们将编写一个Partitioner,确保拥有相同key(原始key,不包括添加的部分)的所有数据被发往同一个Reducer,parator,以便数据到达Reducer后即按原始key分组。:在map阶段,map函数同时读取两个文件File1和File1,tag=2表示来自文件File在reduce阶段,reduce函数获取key相同的来自File1和File2文件的valuelist,然后对于同一个key,对File1和File2中的数据进行join(笛卡尔乘积)。即:reduce阶段进行实际的连接操作。:..Mapsidejoin是针对以下场景进行的优化:两个待连接表中,有一个表非常大,而另一个表非常小,以至于小表可以直接存放到内存中。这样,我们可以将小表复制多份,让每个maptask内存中存在一份(比如存放到hashtable中),然后只扫描大表:对于大表中的每一条记录key/value,在hashtable中查找是否有相同的key的记录,如果有,则连接后输出即可。为了支持文件的复制,Hadoop提供了一个类DistributedCacheSemiJoin:SemiJoin,也叫半连接,是从分布式数据库中借鉴过来的方法。它的产生动机是:对于reducesidejoin,跨机器的数据传输量非常大,这成了join操作的一个瓶颈,如果能够在map端过滤掉不会参加join操作的数据,则可以节省网络IO。实现方法很简单:选取一个小表,假设是File1,将其参与join的key抽取出来,保存到文件File3中,File3文件一般很小,可以放到内存中。在map阶段,使用DistributedCache将File3复制到各个TaskTracker上,然后将File2中不在File3中的key对应的记录过滤掉,剩下的reduce阶段的工作与reducesidejoin相同。reducesidejoin+BloomFilter:在某些情况下,SemiJoin抽取出来的小表的key集合在内存中仍然存放不下,这时候可以使用BloomFiler以节省空间。:..集合里面。它最重要的两个方法是:add()和contains()。最大的特点是不会存在falsenegative,即:如果contains()返回false,则该元素一定不在集合中,但会存在一定的truenegative,即:如果contains()返回true,则该元素可能在集合中。因而可将小表中的key保存到BloomFilter中,在map阶段过滤大表,可能有一些不在小表中的记录没有过滤掉(但是在小表中的记录一定不会过滤掉),这没关系,只不过增加了少量的网络IO而已。partition的主要作用将map阶段产生的所有kv对分配给不同的reducertask处理,可以将reduce阶段的处理负载进行分摊。40用mapreduce怎么处理数据倾斜问题数据倾斜:map/reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完,此称之为数据倾斜。用hadoop程序进行数据关联时,常碰到数据倾斜的情况,这里提供一种解决方法。:..类,用key和value相加取hash值:方式1:源代码:publicintgetPartition(Kkey,Vvalue,intnumReduceTasks){return(()&)%numReduceTasks;}修改后publicintgetPartition(Kkey,Vvalue,intnumReduceTasks){return(((key).hashCode()+())&)%numReduceTasks;}方式2:lassHashPartitioner<K,V>extendsPartitioner<K,V>{privateintaa=0;/**Use{***@linkObject#hashCode()}topartition.*/publicintgetPartition(Kkey,Vvalue,intnumReduceTasks){return(()+(aa++)&)%numReduceTasks;}41hadoop框架怎么来优化(1)从应用程序角度进行优化。由于mapreduce是迭代逐行解析数据文件的,怎样在迭代的情况下,编写高效率的应用程序,是一种优化思路。(2)对Hadoop参数进行调优。当前hadoop系统有190多个配置参数,怎样调整这些参数,使hadoop作业运行尽可能的快,也是一种优化思路。(3)从系统实现角度进行优化。这种优化难度是最大的,它是从hadoop实现机制角度,发现当前Hadoop设计和实现上的缺点,然后进行源码级地修改。该方法虽难度大,但往往效果明显。(4)linux内核参数调整从应用程序角度进行优化(1)避免不必要的reduce任务如果mapreduce程序中reduce是不必要的,那么我们可以在map中处理数据,Reducer设置为:..reduce任务。(3)根据处理数据特征使用最适合和简洁的Writable类型Text对象使用起来很方便,但它在由数值转换到文本或是由UTF8字符串转换到文本时都是低效的,且会消耗大量的CPU时间。当处理那些非文本的数据时,可以使用二进制的Writable类型,如IntWritable,FloatWritable等。二进制writable好处:避免文件转换的消耗;使maptask中间结果占用更少的空间。对参数进行调优查看linux的服务,可以关闭不必要的服务ntsysv停止打印服务#/etc/#chkconfigcupsoff关闭ipv6#vim/etc/modprobe.-pf-10offaliasipv6off调整文件最大打开数查看:ulimit-a结果:openfiles(-n)1024临时修改:ulimit-n4096持久修改:vi/etc/security/:*softnofile*hardnofile*softnproc*hardnproc:..内核参数vi/etc/=#,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。表示物理内存使用到90%(100-10=90)的时候才使用swap交换区关闭noatimevi/etc/fstab/dev/sda2/dataext3noatime,nodiratime00设置readaheadbufferblockdev--setraREADAHEAD512/dev/sda一下是修改mapred--,默认都是2<property><name></name>#++++maptask的最大数<value>2</value></property><property><name></name>#++++reducetask的最大数<value>2</value></property>调整心跳间隔集群规模小于300时,,:..,可以改成推测执行优化机制采用了典型的以空间换时间的优化策略,它同时启动多个相同task(备份任务)处理相同的数据块,哪个完成的早,则采用哪个task的结果,这样可防止拖后腿Task任务出现,进而提高作业计算速度,但是,这样却会占用更多的资源,在集群资源紧缺的情况下,设计合理的推测执行机制可在多用少量资源情况下,减少大作业的计算时间。,即0%,即0%:..,表示只能启动一个task,若为-1,,也就是10分钟。%时,开始启动reduce任务跳过坏记录当任务失败次数达到该值时,才会进入skipmode,即启用跳过坏记录数功能,也就是先试几次,,,${}/_logs/42我们在开发分布式计算job的时候,是否可以去掉reduce阶段可以,例如我们的集群就是为了存储文件而设计的,不涉及到数据的计算,就可以将mapReduce都省掉