这是 Hadoop 的工作原理吗?
客户端将 MapReducer 作业/程序提交至 NameNode 。
JobTracker (驻留在 NameNode )将任务分配给在各个工作计算机上运行的从属任务跟踪器(日期节点)
每个 Tasktracker 负责执行和管理由Job Tracker分配的各项任务
根据上述方案, MapReducer 程序将在 slave 节点上运行。这是否意味着作业将消耗 Slave 计算引擎或处理能力?。
如果我想使用其他计算机(独立于 Hadoop 安装系统)执行 MapReduce 作业并使用 Hadoop Clusters 数据,该怎么办?< / p>
为什么要使用 Hadoop 群集? Hadoop 以非常有效的方式将大数据分发到 DataNode 。
新方案如下:
一个。服务器
湾客户端
a.1)使用 Hadoop集群分发未排序的数据
b.1)客户端将执行(未提交给NameNode) MapReducer 作业,该作业从 Hadoop Clusters datanode获取数据。如果可能,那么 JobTracker (NameNode)和 Tasktracker (DataNode)会发生什么?
我在这里忽略了 Hadoop 的主要部分,通过在客户机上执行作业,但那是我的项目要求。有什么建议吗?
答案 0 :(得分:2)
你在第一部分就是对的。首先,使用jobTracker和TaskTracker的架构适用于Hadoop 1.您应该关注最新架构Hadoop 2。
你对HDFS和MapReduce感到困惑。
HDFS:它是Hadoop的分布式文件系统。 NameNode是群集的主节点。它包含元数据和文件的本地化。 DataNodes是集群的从属服务器。它们存储集群中的数据。
MapReduce:所以&#34; new&#34;架构称为Yarn并且运行方式如下:您有一个主角色,RessourceManager和一些slave,即nodemanagers。当您向集群提交MapReduce jar时,RessourceManager会将该进程分配给nodemanager。为简化起见,每个nodemanager将在存储在HDFS中的文件的一部分上执行该程序。
所以只需正确分离HDFS角色和MapReduce角色。
答案 1 :(得分:2)
Hadoop是一个以tera bytes / peta字节为单位存储,分析和处理大数据的框架。
<强>存储强>
HDFS 是Hadoop应用程序使用的主要分布式存储。 HDFS群集主要由管理文件系统元数据的 NameNode 和存储实际数据的 DataNodes 组成。看看这个HDFS architecture
<强>处理强>
Map reduce是处理分布式数据的框架。 MRv2的基本思想是将 JobTracker ,资源管理和作业调度/监控这两个主要功能分成单独的守护进程。我们的想法是拥有一个全局 ResourceManager(RM)和每个应用程序 ApplicationMaster(AM)。
NodeManager 是每台计算机框架代理,负责容器,监视其资源使用情况(CPU,内存,磁盘,网络)并将其报告给ResourceManager / Scheduler。看看这个Yarn architecture
摘要:
名称节点+数据节点是存储的守护程序
和
资源管理器+调度程序+节点管理器+应用程序主机是用于处理的守护程序。
所有这些守护进程都可以在不同的节点中运行。如果数据节点+节点管理器在数据节点中可用的数据的同一节点中运行,则使用数据位置可以提高性能。如果数据节点和节点管理器进程在不同的节点和节点管理器上运行,以对存储在不同数据节点中的数据进行操作,则数据应通过网络传输,并且涉及较小的处理开销。
答案 2 :(得分:0)
是的,可以在单独的计算机上运行任务跟踪器作为作为数据节点运行的任务跟踪器。每个任务跟踪器都需要知道承载数据块的数据节点在哪里。但是对于最佳实践,数据节点本身被指定为任务跟踪器。
答案 3 :(得分:0)
是的,这是可能的,但没有直接配置。您需要更改启动脚本。不是使用start-all脚本启动所有恶魔,而是需要在不同于map reduce demon节点的节点上启动hdfs恶魔。
答案 4 :(得分:-1)
不,它不会那样工作。在开始一个认真的项目之前,我会阅读几本Hadoop书籍。从Michael White的“Hadoop,权威指南”开始。