Hadoop任务分配,怎么确保每个机器1个MAP,不重复?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop任务分配,怎么确保每个机器1个MAP,不重复?相关的知识,希望对你有一定的参考价值。

现在有5台机器。
写了个MAP程序从5台机器本地读取数据进行分析。
但是在执行的时候总是有rack-map启动。导致某个机器的数据没有处理。
求指教这个怎么弄?

如果是固定5台机器,每个作业固定5个map任务,那把参数mapreduce.tasktracker.map.tasks.maximum设成1应该就能保证每个机器刚好一个了。同时把推测性执行关了:mapred.map.tasks.speculative.execution设为false追问

mapred.map.tasks.speculative.executio 已经关闭。
mapreduce.tasktracker.map.tasks.maximum 是可以在jobs里面设置的变量么?
不行啊
Rack-local map tasks=26
Data-local map tasks=13
可以看到Rack-local map tasks的值不是0.

追答

我的假设是“固定5台机器,每个作业固定5个map任务”,能再说一下你的配置么?
mapreduce.tasktracker.map.tasks.maximum要在配置文件里设置,启动Hadoop以后再在job里设置没有用。

参考技术A 。。。。。。。
你把5台机器的数据上传到机器上,执行mapreudce。

顺便问一下,你是单独执行map? 很诡异啊追问

数据量很大,并且这些数据还提供给以前的程序使用。不能转移的。
是很诡异,基本只有MAP在跑。没有reudce什么事情。
并且MAP还和机器有关系。
A的MAP只能在A机器上跑。
现在HADOOP,它让A的MAP跑到了B上。

Hadoop YARN 集群/Spark 和 RAM 磁盘

【中文标题】Hadoop YARN 集群/Spark 和 RAM 磁盘【英文标题】:Hadoop YARN Cluster / Spark and RAM Disks 【发布时间】:2018-06-30 04:30:49 【问题描述】:

因为我的计算任务需要快速的磁盘 I/O,我有兴趣在运行 Spark 的 YARN 集群中的每个工作节点上安装大型 RAM 磁盘,因此想知道 YARN 集群管理器如何处理这样一个内存盘。

例如,如果我在每台 128GB RAM 机器上分配 32GB 到 RAM 磁盘,YARN 集群管理器是否知道如何分配 RAM 以避免在执行任务时过度分配内存(在这种情况下,YARN 的RAM 到被征用的任务,或者最多只有 96GB)?

如果是这样,是否有任何方法向 YARN 集群管理器指示存在 RAM 磁盘,因此 RAM 的特定分区对 YARN 是禁止的? Spark 也会知道这些限制吗?

【问题讨论】:

【参考方案1】:

在 Spark 配置中,您可以设置驱动程序和执行程序配置,例如内核和内存分配量。此外,当您使用 yarn 作为资源管理器时,它还支持一些额外的配置,您可以帮助您更好地管理集群资源。 "spark.driver.memoryOverhead" 或 "spark.yarn.am.memoryOverhead" 这是堆外空间的数量,默认值为

AM 内存 * 0.10,最小为 384

更多信息请点击link。

【讨论】:

但这不是 YARN 应用程序管理器的 AM 内存吗?我想确保 YARN 和 Spark 都知道它无法触及该内存分区,以免重置 RAM Disk 是的,这是一个纱线配置。但是重置 RAM 盘是什么意思? 如果我安装了 RAM Disk(占用 32GB),YARN 是否会将这 32GB 的 RAM 分配给 Spark 上下文,从而将 RAM Disk 推离 RAM?

以上是关于Hadoop任务分配,怎么确保每个机器1个MAP,不重复?的主要内容,如果未能解决你的问题,请参考以下文章

hadoop中存储文件系统hdfs的冗余机制是怎么进行的?有啥特点?

Hadoop 对MapReduce的理解

Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputFormat的map任务数量)

hadoop mapreduce 进程都有哪些

Hadoop Map/Reduce

如何确定 Hadoop map和reduce的个数