我是Hadoop的新手,所以可能会问dum问题。
鉴于我有三个Hadoop从属节点,所有这些节点都有天气数据.Saying
我有一个Map Reduce工作,可以从1900年到1989年找到更高的温度。
我的问题是:
当我们提交mr作业时,Hadoop会自动在这三个节点上提交作业吗?或者我们需要编写脚本来执行此操作。
感谢您的患者和答案
答案 0 :(得分:1)
HDFS
是一个分布式文件系统。因此,天气数据将自动分布在3个从节点中。默认情况下,它将被复制3次。节点1,节点2和节点3都可以保存来自所有3个时间帧(1900-1929,1930-1959,1960-1989)的数据。当数据上传到HDFS
时,将自动完成此分发和复制。有一个名为NameNode
的主节点,它保存有关文件块及其所在节点的映射的元数据信息。
MapReduce
是一种分布式数据处理方法。提交到群集的MapReduce
作业将自动分布在3个节点上。 Map和reduce任务将在节点上运行,尽可能地利用数据局部性。这意味着,每个节点都会尽可能地处理存储在其上的数据。如果有任务失败,它们将被重试一定次数。所有这些都会在作业执行过程中自动发生。
如需深入了解,请查看Hadoop MapReduce教程。
答案 1 :(得分:0)
在插入HDFS时,数据不会按日期范围或键进行分片,而是根据“HDFS块”均匀分布并在所有节点上均匀复制。但是,假设复制设置为1,但即便如此,第一个范围的部分可能存在于所有三个节点上,而最后一个范围仅存在于一个节点上。
HDFS协议决定放置块的位置,而不是外部应用程序作为客户端
MapReduce(或Spark)将处理“输入拆分”,无论它们存在于何处(很容易只是一个节点)。这是自动的。您的代码将部署在每个节点上(假设使用YARN)来读取datanode本身的数据(如果这是NodeManagers的安装方式),然后收集回驱动程序进程,该进程可选择输出到本地终端