这就是hadoop的工作方式吗?
客户端向namenode提交mapreducer作业/程序。
jobtracker(驻留在namenode上)将任务分配给在单个工作机(日期节点)上运行的从属任务跟踪器
每个tasktracker负责执行和管理job tracker分配的单个任务
根据上述场景,mapreducer程序将在从节点上运行。这是否意味着作业将消耗从属计算引擎或处理能力?。
如果我想使用另一台机器(独立于hadoop安装系统)来执行mapreduce作业并使用hadoop集群数据呢?
为什么要使用hadoop集群?hadoop以一种非常有效的方式将大数据分发到它们的数据节点。
新的情况如下:
答。服务器
b。客户
a、 1)使用hadoop集群分发未排序的数据
b、 1)客户端将执行(未提交给namenode)mapreducer作业,该作业正在从hadoop clusters datanode获取数据。如果可能的话,那么jobtracker(namenode)和tasktracker(datanode)会发生什么呢?
我忽略了hadoop的主要部分,在客户机上执行作业,但这是我的项目要求。有什么建议吗?
5条答案
按热度按时间wvt8vs2t1#
是的,这是可能的,但没有直接配置。您需要更改开始脚本。与使用start all脚本启动所有恶魔不同,您需要在单独的节点上启动hdfs恶魔,而不是map reduce恶魔节点。
uhry853o2#
你在第一部分是对的。首先,jobtracker和tasktracker的体系结构是针对hadoop1的。您应该看看hadoop2,它是最新的体系结构。
您对hdfs和mapreduce有混淆。
hdfs:它是hadoop的分布式文件系统。namenode是集群的主节点。它包含元数据和文件的本地化。数据节点是集群的从属节点。它们在集群中存储数据。
mapreduce:“新”架构被称为yarn,运行方式如下:你有一个主角色,ressourcemanager和一些从角色,nodemanager。当您向集群提交mapreducejar时,ressourcemanager将把进程分配给nodemanager。为了简化,每个nodemanager将在hdfs中存储的文件的一部分上执行程序。
所以只要正确地将hdfs角色和mapreduce角色分开。
sbdsn5lh3#
是的,可以在单独的机器上运行任务跟踪器,就像在作为数据节点运行的机器上一样。每个任务跟踪器都需要知道承载数据块的数据节点在哪里。但是为了获得最佳实践,数据节点本身被指定为任务跟踪器。
oo7oh9g94#
不,不是这样的。在开始一个严肃的项目之前,我会读几本hadoop的书。从michaelwhite的“hadoop,权威指南”开始。
ddarikpa5#
hadoop是一个存储、分析和处理大数据的框架,数据量为万亿字节/peta字节。
储存:
hdfs是hadoop应用程序使用的主要分布式存储。hdfs集群主要由管理文件系统元数据的namenode和存储实际数据的datanode组成。看看这个hdfs架构
处理
map-reduce是处理分布式数据的框架。mrv2的基本思想是将jobtracker的两个主要功能(资源管理和作业调度/监视)拆分为单独的守护进程。其想法是拥有一个全局资源管理器(rm)和每个应用程序应用程序管理员(am)。
nodemanager是每台机器的框架代理,负责容器,监视其资源使用情况(cpu、内存、磁盘、网络),并将其报告给resourcemanager/scheduler。看看这个Yarn结构
总结:
名称节点+数据节点是用于存储的守护程序
和
资源管理器+调度器+节点管理器+应用程序主机是用于处理的守护进程。
所有这些守护进程都可以在不同的节点上运行。如果数据节点+节点管理器针对数据节点中可用的数据在同一节点上运行,则数据局部性可以提高性能。如果数据节点和节点管理器进程运行在不同的节点和节点管理器上,对存储在不同数据节点上的数据进行操作,则数据需要通过网络传输,并且处理开销较小。