hadoop和mapreduce是一种啥关系?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop和mapreduce是一种啥关系?相关的知识,希望对你有一定的参考价值。
参考技术Ahadoop是依据mapreduce的原理,用Java语言实现的分布式处理机制。
Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元,并把这些单元放到任何集群节点上执行。
MapReduce是Hadoop中的一个数据运算核心模块,MapReduce通过JobClient生成任务运行文件,并在JobTracker进行调度指派TaskTracker完成任务。
扩展资料
1、MapReduce分布式计算框架原型:
MapReduce分布式计算模型是由Google提出,主要用于搜索领域,解决海量数据的计算问题Apache对其做了开源实现,整合在hadoop中实现通用分布式数据计算。
MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算,非常简单。大大简化了分布式并发处理程序的开发。
Map阶段就是进行分段处理。
Reduce阶段就是进行汇总处理。汇总之后还可以进行数据的一系列美化操作,然后再输出。
2、MapReduce组件介绍:
JobClient:用于把用户的作业任务生成Job的运行包,并存放到HDFS中。
JobinProgress:把Job运行包分解成MapTask和ReduceTask并存放于TaskTracker中。
JobTracker(Master):进行调度管理TaskTracker执行任务。
TaskTracker(Slave):执行分配下来的Map计算或Reduce计算任务。
BEAM(Erlang VM)是一种啥样的虚拟机?
【中文标题】BEAM(Erlang VM)是一种啥样的虚拟机?【英文标题】:What kind of virtual machine is BEAM (the Erlang VM)?BEAM(Erlang VM)是一种什么样的虚拟机? 【发布时间】:2013-05-22 15:55:34 【问题描述】:据我了解,虚拟机分为“系统虚拟机”或“进程虚拟机”两类。 BEAM所在的位置对我来说有点模糊。还有另一种我不知道的虚拟机吗?
【问题讨论】:
【参考方案1】:我假设您一直在阅读 http://en.wikipedia.org/wiki/Virtual_machine - 根据该术语,BEAM 是一个“进程虚拟机”,就像 JVM。
【讨论】:
系统级进程和Erlang进程不一样。 Erlang 术语中的进程实际上是用户态进程,而 VM 本身是单个操作系统级进程。 @kjw0188 我明白,但我看不出操作系统进程和语言级进程之间有任何区别。 @EricdesCourtis 更多关于 Erlang 进程的背景信息:***.com/questions/2708033/… @WardBekker 感谢您帮助我了解 Erlang 进程。我只是不确定 Erlang 属于哪种类型的 VM。 我会警惕对虚拟机进行过多分类。他们的工作往往是独一无二的。而且它们通常差异太大,无法归入特定类别。【参考方案2】:Erlang VM 作为一个操作系统进程运行。默认情况下,它每个内核运行一个操作系统线程,以实现机器的最大利用率。可以在 VM 启动时设置线程数和它们运行的内核。
Erlang 进程完全由 Erlang 虚拟机实现,与操作系统进程或操作系统线程没有任何连接。因此,即使您正在运行一个拥有超过一百万个进程的 Erlang 系统,它仍然只有一个 OS 进程和每个内核一个线程。所以从这个意义上说,Erlang VM 是一个“进程虚拟机”,而 Erlang 系统本身的行为非常像操作系统,并且 Erlang 进程具有与操作系统进程非常相似的属性,例如隔离。实际上有一个基于 BEAM 的 Erlang VM,它在裸机上运行,实际上它本身就是一个操作系统,请参阅 Erlang on Xen.
顺便说一句,完全有可能让系统运行数百万个 Erlang 进程,并且实际上在某些产品中已经完成,例如 WhatsApp。
当我们设计基本的 Erlang 环境时,我们肯定非常考虑操作系统。
【讨论】:
@rvirding 这是否意味着底层操作系统对运行在 Erlang VM 之上的应用程序/进程一无所知? @coffeMug 不,从操作系统的角度来看,Erlang VM 是一个普通的操作系统进程,就像任何其他操作系统进程一样。与其他操作系统进程一样,它使用操作系统提供的资源,如内存、i/o 设备等。因此,Erlang 中的所有特定流程(如进程/容错/应用程序/等)都在 Erlang VM 进程内处理。 Erlang 在 Xen 上的最大优势是什么 - 是不是更快? 是否可以使用标准进程和操作系统功能(例如进程管理(生成/终止/设置限制)和 IPC(管道/套接字))创建 BEAM+OTP 'workalike' 环境?跨度> @RikHemsley 是的,这是可能的,但仅限于非常有限的应用程序。请记住,在 erlang 系统中拥有 10k、100k 甚至 1M 进程并不少见,因此使用 OS 进程对它们进行建模是不现实的。【参考方案3】:虚拟机是一种计算系统。计算系统的最终目标是执行编程逻辑。从这个角度来看,虚拟机可以根据抽象级别和模拟范围分为4种:
类型 1: 完整指令集架构 (ISA) 虚拟机 提供完整计算机系统的 ISA 仿真或虚拟化。来宾操作系统和应用程序可以作为实际计算机在虚拟机顶部运行(例如,VirtualBox、QEMU、XEN)。
类型 2:应用程序二进制接口 (ABI) 虚拟机 提供来宾进程 ABI 模拟。针对该 ABI 的应用程序可以在进程中与本机 ABI 应用程序的其他进程并行运行(例如,英特尔在 Itanium 上的 IA-32 执行层、Transmeta 用于 X86 仿真的代码变形、Apple 用于 PowerPC 仿真的 Rosetta 转换层强>)。
类型 3:虚拟 ISA 虚拟机提供运行时引擎,以便在虚拟 ISA 中编码的应用程序可以在其上执行。虚拟 ISA 通常定义了高级且有限范围的 ISA 语义,因此它不需要虚拟机模拟完整的计算机系统(例如,Sun Microsystem 的 JVM、Microsoft 的 Common Language Runtime、Parrot Foundation 的 Parrot 虚拟机)。
类型 4:语言虚拟机 提供了一个运行时引擎,用于执行以客户语言表示的程序。这些程序通常以客户语言的源代码形式呈现给虚拟机,而不是事先完全编译成机器代码。运行时引擎需要解释或翻译程序,还需要完成某些由语言抽象出来的功能,例如内存管理(例如,Basic、Lisp、Tcl、Ruby 的运行时引擎)。 p>
虚拟机类型之间的界限并不明确。例如,语言虚拟机也可以通过将程序编译成一种虚拟ISA来使用虚拟ISA虚拟机的技术然后在该虚拟 ISA 的虚拟机上执行代码。
许多 VM 设计,例如 BEAM,跨越了界限。它们可以同时属于第 3 类和第 4 类。
来源:
-
***
虚拟机的高级设计与实现;李小峰
【讨论】:
它相对较新,这就是为什么它没有很多赞成票的原因。我投了赞成票。 感谢您的解释。正是我想要的。以上是关于hadoop和mapreduce是一种啥关系?的主要内容,如果未能解决你的问题,请参考以下文章