游客tuz4n35h6jtbg个人页面-阿里云开发者社区

个人头像照片 游客tuz4n35h6jtbg TA的个人档案
0
1625

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
  • 高分内容
  • 最新动态
  • 文章
  • 问答
正在加载, 请稍后...
暂无更多信息

2021年12月

  • 12.12 21:51:22
    回答了问题 2021-12-12 21:51:22

    MapReduce的主要功能有哪些呢?

    1)数据划分和计算任务调度: 系统自动将一个作业(Job)待处理的大数据划分为很多个数据块,每个数据块对应于一个计算任务(Task),并自动 调度计算节点来处理相应的数据块。作业和任务调度功能主要负责分配和调度计算节点(Map节点或Reduce节点),同时负责监控这些节点的执行状态,并 负责Map节点执行的同步控制。

    2)数据/代码互定位: 为了减少数据通信,一个基本原则是本地化数据处理,即一个计算节点尽可能处理其本地磁盘上所分布存储的数据,这实现了代码向 数据的迁移;当无法进行这种本地化数据处理时,再寻找其他可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻 找可用节点以减少通信延迟。

    3)系统优化: 为了减少数据通信开销,中间结果数据进入Reduce节点前会进行一定的合并处理;一个Reduce节点所处理的数据可能会来自多个 Map节点,为了避免Reduce计算阶段发生数据相关性,Map节点输出的中间结果需使用一定的策略进行适当的划分处理,保证相关性数据发送到同一个 Reduce节点;此外,系统还进行一些计算性能优化处理,如对最慢的计算任务采用多备份执行、选最快完成者作为结果。

    4)出错检测和恢复: 以低端商用服务器构成的大规模MapReduce计算集群中,节点硬件(主机、磁盘、内存等)出错和软件出错是常态,因此 MapReduce需要能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务。同时,系统还将维护数据存储的可靠性,用多备份冗余存储机制提 高数据存储的可靠性,并能及时检测和恢复出错的数据。

    踩0 评论0
  • 12.12 21:50:16
    回答了问题 2021-12-12 21:50:16

    MapReduce的用途有哪些呢?

    在Google,MapReduce用在非常广泛的应用程序中,包括“分布grep,分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习,基于统计的机器翻译...”值得注意的是,MapReduce实现以后,它被用来重新生成Google的整个索引,并取代老的ad hoc程序去更新索引。 MapReduce会生成大量的临时文件,为了提高效率,它利用Google文件系统来管理和访问这些文件。 在谷歌,超过一万个不同的项目已经采用MapReduce来实现,包括大规模的算法图形处理、文字处理、数据挖掘、机器学习、统计机器翻译以及众多其他领域。

    踩0 评论0
  • 12.12 21:48:57
    回答了问题 2021-12-12 21:48:57

    为什么说MapReduce分布可靠呢?

    MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性的返回它所完成的工作和最新的状态。如果一个节点保持沉默超过一个预设的时间间隔,主节点(类同Google File System中的主服务器)记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。每个操作使用命名文件的原子操作以确保不会发生并行线程间的冲突;当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。(避免副作用)。

    踩0 评论0
  • 12.12 21:47:48
    回答了问题 2021-12-12 21:47:48

    MapReduce的映射和化简分别是什么呢?

    简单说来,一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成绩的列表)的每一个元素进行指定的操作(比如前面的例子里,有人发现所有学生的成绩都被高估了一分,它可以定义一个“减一”的映射函数,用来修正这个错误。)。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。

    而化简操作指的是对一个列表的元素进行适当的合并(继续看前面的例子,如果有人想知道班级的平均分该怎么做?它可以定义一个化简函数,通过让列表中的元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均分。)。虽然他不如映射函数那么并行,但是因为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。

    踩0 评论0
  • 12.12 21:45:46
    回答了问题 2021-12-12 21:45:46

    MapReduce的由来是怎样的呢?

    MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。Google公司设计MapReduce的初衷主要是为了解决其搜索引擎中大规模网页数据的并行化处理。Google公司发明了MapReduce之后首先用其重新改写了其搜索引擎中的Web文档索引处理系统。但由于MapReduce可以普遍应用于很多大规模数据的计算问题,因此自发明MapReduce以后,Google公司内部进一步将其广泛应用于很多大规模数据处理问题。Google公司内有上万个各种不同的算法问题和程序都使用MapReduce进行处理。 2003年和2004年,Google公司在国际会议上分别发表了两篇关于Google分布式文件系统和MapReduce的论文,公布了Google的GFS和MapReduce的基本原理和主要设计思想。 Hadoop的思想来源于Google的几篇论文,Google的那篇MapReduce论文里说:Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional languages。这句话提到了MapReduce思想的渊源,大致意思是,MapReduce的灵感来源于函数式语言(比如Lisp)中的内置函数map和reduce。函数式语言也算是阳春白雪了,离我们普通开发者总是很远。简单来说,在函数式语言里,map表示对一个列表(List)中的每个元素做计算,reduce表示对一个列表中的每个元素做迭代计算。它们具体的计算是通过传入的函数来实现的,map和reduce提供的是计算的框架。不过从这样的解释到现实中的MapReduce还太远,仍然需要一个跳跃。再仔细看,reduce既然能做迭代计算,那就表示列表中的元素是相关的,比如我想对列表中的所有元素做相加求和,那么列表中至少都应该是数值吧。而map是对列表中每个元素做单独处理的,这表示列表中可以是杂乱无章的数据。这样看来,就有点联系了。在MapReduce里,Map处理的是原始数据,自然是杂乱无章的,每条数据之间互相没有关系;到了Reduce阶段,数据是以key后面跟着若干个value来组织的,这些value有相关性,至少它们都在一个key下面,于是就符合函数式语言里map和reduce的基本思想了。 [2] 这样我们就可以把MapReduce理解为,把一堆杂乱无章的数据按照某种特征归纳起来,然后处理并得到最后的结果。Map面对的是杂乱无章的互不相关的数据,它解析每个数据,从中提取出key和value,也就是提取了数据的特征。经过MapReduce的Shuffle阶段之后,在Reduce阶段看到的都是已经归纳好的数据了,在此基础上我们可以做进一步的处理以便得到结果。这就回到了最初,终于知道MapReduce为何要这样设计。 [2] 2004年,开源项目Lucene(搜索索引程序库)和Nutch(搜索引擎)的创始人Doug Cutting发现MapReduce正是其所需要的解决大规模Web数据处理的重要技术,因而模仿Google MapReduce,基于Java设计开发了一个称为Hadoop的开源MapReduce并行计算框架和系统。自此,Hadoop成为Apache开源组织下最重要的项目,自其推出后很快得到了全球学术界和工业界的普遍关注,并得到推广和普及应用。 MapReduce的推出给大数据并行处理带来了巨大的革命性影响,使其已经成为事实上的大数据处理的工业标准。尽管MapReduce还有很多局限性,但人们普遍公认,MapReduce是到最为成功、最广为接受和最易于使用的大数据并行处理技术。MapReduce的发展普及和带来的巨大影响远远超出了发明者和开源社区当初的意料,以至于马里兰大学教授、2010年出版的《Data-Intensive Text Processing with MapReduce》一书的作者Jimmy Lin在书中提出:MapReduce改变了我们组织大规模计算的方式,它代表了第一个有别于冯·诺依曼结构的计算模型,是在集群规模而非单个机器上组织大规模计算的新的抽象模型上的第一个重大突破,是到所见到的最为成功的基于大规模计算资源的计算模型。

    踩0 评论0
  • 12.12 21:44:38
    回答了问题 2021-12-12 21:44:38

    MapReduce隐含了那三层含义呢?

    MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:

    1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。

    2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。

    3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。

    踩0 评论0
  • 12.12 21:39:03
    回答了问题 2021-12-12 21:39:03

    mapreduce 客户端对 map 阶段并行度规划的基本逻辑是怎样的呢?

    将待处理数据执行逻辑切片(即按照一个特定切片大小,将待处理数据划分成逻辑上的多 个 split),然后每一个 split 分配一个 mapTask 并行实例处理 这段逻辑及形成的切片规划描述文件,是由 FileInputFormat实现类的 getSplits()方法完成的。 该方法返回的是 List , InputSplit 封装了每一个逻辑切片的信息,包括长度和位置 信息,而 getSplits()方法返回一组 InputSplit

    踩0 评论0
  • 12.12 21:35:51
    回答了问题 2021-12-12 21:35:51

    mapreduce的核心程序运行机制是什么?

    一个完整的 mapreduce 程序在分布式运行时有两类实例进程: (1) MRAppMaster:负责整个程序的过程调度及状态协调 (该进程在yarn节点上)

    (2) Yarnchild:负责 map 阶段的整个数据处理流程

    (3) Yarnchild:负责 reduce 阶段的整个数据处理流程

    以上两个阶段 maptask 和 reducetask 的进程都是 yarnchild,并不是说这 maptask 和 reducetask 就跑在同一个 yarnchild 进行里 (Yarnchild进程在运行该命令的节点上)

    踩0 评论0
  • 12.12 21:34:35
    回答了问题 2021-12-12 21:34:35

    WordCount 的业务逻辑是什么?

    1、 maptask 阶段处理每个数据分块的单词统计分析,思路是每遇到一个单词则把其转换成 一个 key-value 对,比如单词 hello,就转换成<’hello’,1>发送给 reducetask 去汇总

    2、 reducetask 阶段将接受 maptask 的结果, 来做汇总计数

    踩0 评论0
  • 12.12 21:32:47
    回答了问题 2021-12-12 21:32:47

    为什么我们需要mapreduce 呢?

    (1) 海量数据在单机上处理因为硬件资源限制,无法胜任

    (2) 而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度

    (3) 引入 MapReduce 框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将 分布式计算中的复杂性交由框架来处理

    踩0 评论0
  • 12.12 21:30:32
    回答了问题 2021-12-12 21:30:32

    hadoop 的四大组件分别是什么呢?

    1.HDFS:分布式存储系统

    2.MapReduce:分布式计算系统

    3.YARN: hadoop 的资源调度系统

    4.Common: 以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等

    踩0 评论0
  • 12.12 21:22:23
    回答了问题 2021-12-12 21:22:23

    在运行mapreduce任务中,经常调整的参数有哪些呢?

    在运行mapreduce任务中,经常调整的参数有:

    1.mapred.reduce.tasks:手动设置reduce个数

    2.mapreduce.map.output.compress:map输出结果是否压缩

    3.mapreduce.map.output.compress.codec

    4.mapreduce.output.fileoutputformat.compress:job输出结果是否压缩

    5.mapreduce.output.fileoutputformat.compress.type

    6.mapreduce.output.fileoutputformat.compress.codec

    踩0 评论0
  • 12.12 21:19:47
    回答了问题 2021-12-12 21:19:47

    mapreduce 怎么给操作系统调优呢?

    1.增大打开文件数据和网络连接上限,调整内核参数net.core.somaxconn,提高读写速度和网络带宽使用率

    2.适当调整epoll的文件描述符上限,提高Hadoop RPC并发

    3.关闭swap。如果进程内存不足,系统会将内存中的部分数据暂时写入磁盘,当需要时再将磁盘上的数据动态换置到内存中,这样会降低进程执行效率

    4.增加预读缓存区大小。预读可以减少磁盘寻道次数和I/O等待时间

    5.设置openfile

    踩0 评论0
  • 12.12 21:16:48
    回答了问题 2021-12-12 21:16:48

    mapreduce如何指定运行时memory的大小呢?

    hadoop jar hadoop-core-0.1.0-SNAPSHOT.jar cn.hadoop.mapreduce.WordCount -D mapreduce.map.memory.mb=2048 /home/input/ /home/output/

    mapreduce.map.memory.mb=2048 :指定这个mapreduce任务运行时内存的大小

    /home/input :指定的输入hdfs路径

    /home/output:指定的输出hdfs路径

    踩0 评论0
  • 12.12 21:15:46
    回答了问题 2021-12-12 21:15:46

    mapreduce如何指定运行时cpu的个数呢?

    hadoop jar hadoop-core-0.1.0-SNAPSHOT.jar cn.hadoop.mapreduce.WordCount -D mapreduce.map.cpu.vcores=2 /home/input /home/output

    -D mapreduce.map.cpu.vcores=2 :指定这个mapreduce任务运行时cpu的个数

    /home/input :指定的输入hdfs路径

    /home/output:指定的输出hdfs路径

    踩0 评论0
  • 12.12 21:12:41
    回答了问题 2021-12-12 21:12:41

    MapReduce的数据倾斜现象有哪些呢?

    1.数据频率倾斜:某一个区域的数据量要远远大于其他区域。

    2.数据大小倾斜:部分记录的大小远远大于平均值。

    踩0 评论0
  • 12.12 21:08:51
    回答了问题 2021-12-12 21:08:51

    MapReduce在IO传输中该如何优化方法呢?

    1.采用数据压缩的方式,减少网络IO的时间。安装Snappy和LZO压缩编码器。

    2.使用SequeceFile二进制文件。

    踩0 评论0
  • 12.12 21:04:04
    回答了问题 2021-12-12 21:04:04

    MapReduce在Reduce阶段该如何优化方法呢?

    1.合理设置Map和Reduce数:两个都不能设置太少,也不能设置太多。

    2.设置Map、Reduce共存:调整slowstart.completedmaps参数,使Map运行到一定程度后,Reduce也开始运行,减少Reduce的等待时间。

    3.规避使用Reduce。

    4.合理设置Reduce端的Buffer。

    踩0 评论0
  • 12.12 20:57:55
    回答了问题 2021-12-12 20:57:55

    MapReduce在Map阶段该如何优化方法呢?

    1.减少Spill次数:通过调整io.sort.mb及sort.spill.percent参数值,增大触发Spill的内存上限,减少Spill次数,从而减少磁盘IO.

    2.减少合并次数:通过调整io.sort.factor参数,增大Merge的文件数目,减少Merge的次数,从而缩短MR处理时间。

    3.在Map之后,不影响业务逻辑前提下,先进行Combine处理,减少I/O。

    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2021-12-12

    MapReduce的主要功能有哪些呢?

    1)数据划分和计算任务调度: 系统自动将一个作业(Job)待处理的大数据划分为很多个数据块,每个数据块对应于一个计算任务(Task),并自动 调度计算节点来处理相应的数据块。作业和任务调度功能主要负责分配和调度计算节点(Map节点或Reduce节点),同时负责监控这些节点的执行状态,并 负责Map节点执行的同步控制。

    2)数据/代码互定位: 为了减少数据通信,一个基本原则是本地化数据处理,即一个计算节点尽可能处理其本地磁盘上所分布存储的数据,这实现了代码向 数据的迁移;当无法进行这种本地化数据处理时,再寻找其他可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻 找可用节点以减少通信延迟。

    3)系统优化: 为了减少数据通信开销,中间结果数据进入Reduce节点前会进行一定的合并处理;一个Reduce节点所处理的数据可能会来自多个 Map节点,为了避免Reduce计算阶段发生数据相关性,Map节点输出的中间结果需使用一定的策略进行适当的划分处理,保证相关性数据发送到同一个 Reduce节点;此外,系统还进行一些计算性能优化处理,如对最慢的计算任务采用多备份执行、选最快完成者作为结果。

    4)出错检测和恢复: 以低端商用服务器构成的大规模MapReduce计算集群中,节点硬件(主机、磁盘、内存等)出错和软件出错是常态,因此 MapReduce需要能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务。同时,系统还将维护数据存储的可靠性,用多备份冗余存储机制提 高数据存储的可靠性,并能及时检测和恢复出错的数据。

    踩0 评论0
  • 回答了问题 2021-12-12

    MapReduce的用途有哪些呢?

    在Google,MapReduce用在非常广泛的应用程序中,包括“分布grep,分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习,基于统计的机器翻译...”值得注意的是,MapReduce实现以后,它被用来重新生成Google的整个索引,并取代老的ad hoc程序去更新索引。 MapReduce会生成大量的临时文件,为了提高效率,它利用Google文件系统来管理和访问这些文件。 在谷歌,超过一万个不同的项目已经采用MapReduce来实现,包括大规模的算法图形处理、文字处理、数据挖掘、机器学习、统计机器翻译以及众多其他领域。

    踩0 评论0
  • 回答了问题 2021-12-12

    为什么说MapReduce分布可靠呢?

    MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性的返回它所完成的工作和最新的状态。如果一个节点保持沉默超过一个预设的时间间隔,主节点(类同Google File System中的主服务器)记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。每个操作使用命名文件的原子操作以确保不会发生并行线程间的冲突;当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。(避免副作用)。

    踩0 评论0
  • 回答了问题 2021-12-12

    MapReduce的映射和化简分别是什么呢?

    简单说来,一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成绩的列表)的每一个元素进行指定的操作(比如前面的例子里,有人发现所有学生的成绩都被高估了一分,它可以定义一个“减一”的映射函数,用来修正这个错误。)。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。

    而化简操作指的是对一个列表的元素进行适当的合并(继续看前面的例子,如果有人想知道班级的平均分该怎么做?它可以定义一个化简函数,通过让列表中的元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均分。)。虽然他不如映射函数那么并行,但是因为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。

    踩0 评论0
  • 回答了问题 2021-12-12

    MapReduce的由来是怎样的呢?

    MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。Google公司设计MapReduce的初衷主要是为了解决其搜索引擎中大规模网页数据的并行化处理。Google公司发明了MapReduce之后首先用其重新改写了其搜索引擎中的Web文档索引处理系统。但由于MapReduce可以普遍应用于很多大规模数据的计算问题,因此自发明MapReduce以后,Google公司内部进一步将其广泛应用于很多大规模数据处理问题。Google公司内有上万个各种不同的算法问题和程序都使用MapReduce进行处理。 2003年和2004年,Google公司在国际会议上分别发表了两篇关于Google分布式文件系统和MapReduce的论文,公布了Google的GFS和MapReduce的基本原理和主要设计思想。 Hadoop的思想来源于Google的几篇论文,Google的那篇MapReduce论文里说:Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional languages。这句话提到了MapReduce思想的渊源,大致意思是,MapReduce的灵感来源于函数式语言(比如Lisp)中的内置函数map和reduce。函数式语言也算是阳春白雪了,离我们普通开发者总是很远。简单来说,在函数式语言里,map表示对一个列表(List)中的每个元素做计算,reduce表示对一个列表中的每个元素做迭代计算。它们具体的计算是通过传入的函数来实现的,map和reduce提供的是计算的框架。不过从这样的解释到现实中的MapReduce还太远,仍然需要一个跳跃。再仔细看,reduce既然能做迭代计算,那就表示列表中的元素是相关的,比如我想对列表中的所有元素做相加求和,那么列表中至少都应该是数值吧。而map是对列表中每个元素做单独处理的,这表示列表中可以是杂乱无章的数据。这样看来,就有点联系了。在MapReduce里,Map处理的是原始数据,自然是杂乱无章的,每条数据之间互相没有关系;到了Reduce阶段,数据是以key后面跟着若干个value来组织的,这些value有相关性,至少它们都在一个key下面,于是就符合函数式语言里map和reduce的基本思想了。 [2] 这样我们就可以把MapReduce理解为,把一堆杂乱无章的数据按照某种特征归纳起来,然后处理并得到最后的结果。Map面对的是杂乱无章的互不相关的数据,它解析每个数据,从中提取出key和value,也就是提取了数据的特征。经过MapReduce的Shuffle阶段之后,在Reduce阶段看到的都是已经归纳好的数据了,在此基础上我们可以做进一步的处理以便得到结果。这就回到了最初,终于知道MapReduce为何要这样设计。 [2] 2004年,开源项目Lucene(搜索索引程序库)和Nutch(搜索引擎)的创始人Doug Cutting发现MapReduce正是其所需要的解决大规模Web数据处理的重要技术,因而模仿Google MapReduce,基于Java设计开发了一个称为Hadoop的开源MapReduce并行计算框架和系统。自此,Hadoop成为Apache开源组织下最重要的项目,自其推出后很快得到了全球学术界和工业界的普遍关注,并得到推广和普及应用。 MapReduce的推出给大数据并行处理带来了巨大的革命性影响,使其已经成为事实上的大数据处理的工业标准。尽管MapReduce还有很多局限性,但人们普遍公认,MapReduce是到最为成功、最广为接受和最易于使用的大数据并行处理技术。MapReduce的发展普及和带来的巨大影响远远超出了发明者和开源社区当初的意料,以至于马里兰大学教授、2010年出版的《Data-Intensive Text Processing with MapReduce》一书的作者Jimmy Lin在书中提出:MapReduce改变了我们组织大规模计算的方式,它代表了第一个有别于冯·诺依曼结构的计算模型,是在集群规模而非单个机器上组织大规模计算的新的抽象模型上的第一个重大突破,是到所见到的最为成功的基于大规模计算资源的计算模型。

    踩0 评论0
  • 回答了问题 2021-12-12

    MapReduce隐含了那三层含义呢?

    MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:

    1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。

    2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。

    3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。

    踩0 评论0
  • 回答了问题 2021-12-12

    mapreduce 客户端对 map 阶段并行度规划的基本逻辑是怎样的呢?

    将待处理数据执行逻辑切片(即按照一个特定切片大小,将待处理数据划分成逻辑上的多 个 split),然后每一个 split 分配一个 mapTask 并行实例处理 这段逻辑及形成的切片规划描述文件,是由 FileInputFormat实现类的 getSplits()方法完成的。 该方法返回的是 List , InputSplit 封装了每一个逻辑切片的信息,包括长度和位置 信息,而 getSplits()方法返回一组 InputSplit

    踩0 评论0
  • 回答了问题 2021-12-12

    mapreduce的核心程序运行机制是什么?

    一个完整的 mapreduce 程序在分布式运行时有两类实例进程: (1) MRAppMaster:负责整个程序的过程调度及状态协调 (该进程在yarn节点上)

    (2) Yarnchild:负责 map 阶段的整个数据处理流程

    (3) Yarnchild:负责 reduce 阶段的整个数据处理流程

    以上两个阶段 maptask 和 reducetask 的进程都是 yarnchild,并不是说这 maptask 和 reducetask 就跑在同一个 yarnchild 进行里 (Yarnchild进程在运行该命令的节点上)

    踩0 评论0
  • 回答了问题 2021-12-12

    WordCount 的业务逻辑是什么?

    1、 maptask 阶段处理每个数据分块的单词统计分析,思路是每遇到一个单词则把其转换成 一个 key-value 对,比如单词 hello,就转换成<’hello’,1>发送给 reducetask 去汇总

    2、 reducetask 阶段将接受 maptask 的结果, 来做汇总计数

    踩0 评论0
  • 回答了问题 2021-12-12

    为什么我们需要mapreduce 呢?

    (1) 海量数据在单机上处理因为硬件资源限制,无法胜任

    (2) 而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度

    (3) 引入 MapReduce 框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将 分布式计算中的复杂性交由框架来处理

    踩0 评论0
  • 回答了问题 2021-12-12

    hadoop 的四大组件分别是什么呢?

    1.HDFS:分布式存储系统

    2.MapReduce:分布式计算系统

    3.YARN: hadoop 的资源调度系统

    4.Common: 以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等

    踩0 评论0
  • 回答了问题 2021-12-12

    在运行mapreduce任务中,经常调整的参数有哪些呢?

    在运行mapreduce任务中,经常调整的参数有:

    1.mapred.reduce.tasks:手动设置reduce个数

    2.mapreduce.map.output.compress:map输出结果是否压缩

    3.mapreduce.map.output.compress.codec

    4.mapreduce.output.fileoutputformat.compress:job输出结果是否压缩

    5.mapreduce.output.fileoutputformat.compress.type

    6.mapreduce.output.fileoutputformat.compress.codec

    踩0 评论0
  • 回答了问题 2021-12-12

    mapreduce 怎么给操作系统调优呢?

    1.增大打开文件数据和网络连接上限,调整内核参数net.core.somaxconn,提高读写速度和网络带宽使用率

    2.适当调整epoll的文件描述符上限,提高Hadoop RPC并发

    3.关闭swap。如果进程内存不足,系统会将内存中的部分数据暂时写入磁盘,当需要时再将磁盘上的数据动态换置到内存中,这样会降低进程执行效率

    4.增加预读缓存区大小。预读可以减少磁盘寻道次数和I/O等待时间

    5.设置openfile

    踩0 评论0
  • 回答了问题 2021-12-12

    mapreduce如何指定运行时memory的大小呢?

    hadoop jar hadoop-core-0.1.0-SNAPSHOT.jar cn.hadoop.mapreduce.WordCount -D mapreduce.map.memory.mb=2048 /home/input/ /home/output/

    mapreduce.map.memory.mb=2048 :指定这个mapreduce任务运行时内存的大小

    /home/input :指定的输入hdfs路径

    /home/output:指定的输出hdfs路径

    踩0 评论0
  • 回答了问题 2021-12-12

    mapreduce如何指定运行时cpu的个数呢?

    hadoop jar hadoop-core-0.1.0-SNAPSHOT.jar cn.hadoop.mapreduce.WordCount -D mapreduce.map.cpu.vcores=2 /home/input /home/output

    -D mapreduce.map.cpu.vcores=2 :指定这个mapreduce任务运行时cpu的个数

    /home/input :指定的输入hdfs路径

    /home/output:指定的输出hdfs路径

    踩0 评论0
  • 回答了问题 2021-12-12

    MapReduce的数据倾斜现象有哪些呢?

    1.数据频率倾斜:某一个区域的数据量要远远大于其他区域。

    2.数据大小倾斜:部分记录的大小远远大于平均值。

    踩0 评论0
  • 回答了问题 2021-12-12

    MapReduce在IO传输中该如何优化方法呢?

    1.采用数据压缩的方式,减少网络IO的时间。安装Snappy和LZO压缩编码器。

    2.使用SequeceFile二进制文件。

    踩0 评论0
  • 回答了问题 2021-12-12

    MapReduce在Reduce阶段该如何优化方法呢?

    1.合理设置Map和Reduce数:两个都不能设置太少,也不能设置太多。

    2.设置Map、Reduce共存:调整slowstart.completedmaps参数,使Map运行到一定程度后,Reduce也开始运行,减少Reduce的等待时间。

    3.规避使用Reduce。

    4.合理设置Reduce端的Buffer。

    踩0 评论0
  • 回答了问题 2021-12-12

    MapReduce在Map阶段该如何优化方法呢?

    1.减少Spill次数:通过调整io.sort.mb及sort.spill.percent参数值,增大触发Spill的内存上限,减少Spill次数,从而减少磁盘IO.

    2.减少合并次数:通过调整io.sort.factor参数,增大Merge的文件数目,减少Merge的次数,从而缩短MR处理时间。

    3.在Map之后,不影响业务逻辑前提下,先进行Combine处理,减少I/O。

    踩0 评论0
  • 回答了问题 2021-12-12

    MapReduce优化方法主要从哪些方面考虑呢?

    主要从六个方面考虑:

    1.数据输出

    2.Map阶段

    3.Reduce阶段

    4.IO传输

    5.数据倾斜问题

    6.常用的调优参数

    踩0 评论0
正在加载, 请稍后...
滑动查看更多