我正在学习Hadoop,并了解到该框架有两个版本,即:Hadoop1和Hadoop2。
如果我的理解是正确的,在Hadoop1中,执行环境基于两个守护进程,即TaskTracker
和JobTracker
,而在Hadoop2(又名yarn)中,执行环境基于"新守护进程",即ResourceManager
,NodeManager
,ApplicationMaster
。
如果不正确,请纠正我。
我知道了以下配置参数:
mapreduce.framework.name 可以取的值:local
、classic
、yarn
我不明白它们实际上是什么意思;例如,如果我安装 Hadoop 2 ,那么它怎么会有旧的执行环境(它有TaskTracker
、JobTracker
)。
谁能帮我这些价值观是什么意思?
yarn
代表MR版本2。classic
适用于 MR 版本 1local
用于 MR 作业的本地运行。
MRV1 和 MR V2 只是关于如何管理资源和执行作业。当前的Hadoop版本能够同时实现这两种功能(甚至可以在本地轻量级模式下)。当您将值设置为yarn
时,您只是指示框架使用yarn
方法来执行作业。同样,当您将其设置为local
时,您只需告诉框架没有要执行的集群,并且所有集群都在 JVM 中。它不是MR V1 和 MR V2 框架的不同基础结构;它只是工作执行的方式,它发生了变化。
jobTracker
、TaskTracker
等都只是守护线程,在需要时生成并杀死。
MRv1 使用该JobTracker
创建任务并将其分配给数据节点。在处理大型集群时,发现效率太低,导致yarn
MRv2(又名YARN
,"又一个资源协商器")每个集群都有一个资源管理器,每个数据节点运行一个节点管理器。对于每个作业,一个从属节点将充当Application Master
,监视资源/任务等。
提供本地模式以在单个机器/JVM中模拟和调试MR应用程序。
编辑:基于评论
jps
(Java虚拟机进程状态)是一个JVM工具,根据官方页面:
jps 工具列出了已检测的热点 Java 虚拟机 (JVM)在目标系统上。该工具仅限于报告 有关其具有访问权限的 JVM 的信息。
所以
jps
不是一个大数据工具,而是一个讲述JVM的Java工具,但它不会泄露JVM中运行的进程的任何信息。
它只列出它有权访问的 JVM。这意味着仍有某些 JVM 未被检测到。
请记住上述几点,如果您观察到jsp
命令根据 hadoop部署模式发出不同的结果:
- 本地(或独立)模式:没有守护进程,一切都在单个 JVM 上运行。
- 伪分布式模式:每个守护进程(Namenode,Datanode等)在单个主机上运行自己的JVM。
- 分布式模式:每个守护进程在自己的 JVM 上运行,跨主机集群。
因此,每个进程可能会也可能不会在同一个 JVM 中运行,因此jps
输出会有所不同。
现在在分布式模式下,MR v2 框架在默认模式下工作。yarn
;因此,您会看到特定于 Yarn 的守护进程正在运行
Namenode
Datanode
ResourceManager
NodeManager
Apache Hadoop 1.x(MRv1)由以下守护进程组成:
Namenode
Datanode
Jobtracker
Tasktracker
请注意,NameNode
和DataNode
在两者之间是通用的,因为它们HDFS
特定的守护程序,而其他两个是MR v1
的,并且yarn
特定于。