小编典典

是否可以限制MapReduce作业访问远程数据?

java

我们有要与HDFS集成的特定算法。该算法要求我们在本地访问数据(该工作将专门在中完成Mapper)。但是,我们确实希望在分发文件方面(提供可靠性和条带化)利用HDFS。计算完成后,我们将使用Reducer来简单地将答案发送回去,而不是执行任何其他工作。避免使用网络是一个明确的目标。是否存在允许我们限制网络数据访问的配置设置,以便在启动MapReduce作业时仅访问其本地DataNode?

更新: 添加一些上下文

我们正在尝试使用字符串匹配来分析此问题。假设我们的集群有N个节点,并且文件存储有N
GB的文本。该文件存储在HDFS中,并均匀分配给节点(每个节点1个部分)。我们可以创建一个MapReduce作业来在每个节点上启动一个进程来访问位于同一主机上的文件部分吗?还是,MapReduce框架会不均匀地分配工作?(例如,有一项作业正在访问数据的所有N部分,或者有.5N个节点试图处理整个文件?


阅读 144

收藏
2020-11-23

共1个答案

小编典典

如果将减少任务的数量设置为零,则可以跳过改组,因此可以省去算法的网络成本。

在创建工作时,可以使用以下代码行完成此操作

job.setNumReduceTasks(0);

我不知道您的算法会做什么,但会说这是一种模式匹配算法,用于寻找特定单词的出现,然后映射器将报告每个拆分的匹配数。如果要添加计数,则需要网络通信和减速器。

我在一个仅地图示例中找到的第一个Google匹配项:
仅地图MR工作

2020-11-23