当前位置: 首页 > 面试题库 >

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

尹辰沛
2023-03-14
问题内容

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

更新: 添加一些上下文

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


问题答案:

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

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

job.setNumReduceTasks(0);

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

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



 类似资料:
  • 我是Hadoop的新手,并且在AWS弹性MapReduce下运行。 我需要在Hadoop中使用集群范围的原子计数器,因此有人建议使用zookeeper。 我相信zookeeper是Hadoop堆栈的一部分(对吗?),我如何从弹性Mapreduce作业访问它,以便设置和更新集群范围内的计数器?

  • 问题内容: 我想测试使用Java可以访问远程系统,或者换句话说使用Java“发送ping”。该功能应封装在具有布尔值的方法中,例如 我已经测试了Java Process类,但是由于使用OutputBuffers进行复杂的输出处理,因此我认为这不是最好的方法。 另一种可能性是创建一个Socket Connection并处理抛出的异常,但是如果远程系统是一个“裸”的Unix系统,则另一端可能没有Soc

  • 假设我想构建一个API,用于(1)提交要执行的作业,以及(2)稍后获取它们的结果/状态。 现在,提交endpoint接收一个有效负载和一些头。有效负载通过一个定制的JpaRepository持久化,头部被推送到JobParameters的一个实例中(然后被馈送到JobLauncher)。据我目前所知,有一个JobRepository最终将持久化我的JobParameters。 A.关于这个设计,我

  • 我试图用vba做一个按钮来删除Excel表中的一行,但当我按下按钮并选择不止一行或许多单元格时,我想限制从E到I的选择(和行的数量无关)这里是我的代码,非常感谢,希望你能帮助我,我还没有找到任何类似的东西。

  • 问题内容: 我有一组HTML文件和一个SQLite数据库,我想使用file://方案从浏览器访问这些数据库。是否可以使用JavaScript访问数据库并创建查询(和表)? 问题答案: 不好的是,浏览器对它的支持非常有限。 这里更多信息HTML5索引,网络SQL数据库和浏览器大战 PS:正如@Christoph所说,WebSQL不再处于主动维护状态,并且Web应用程序工作组不打算进一步维护它,因此。

  • 问题内容: javascript中的函数通过保持与其隐藏范围的(隐藏)链接来形成关闭。 当我们拥有函数(作为变量值)时,是否可以通过编程方式访问它? 真正的目标是理论上的,但一个演示可能是列出闭合的属性。 问题答案: 这是关闭的目的之一(使信息保密)。由于该函数已经执行,因此它的作用域变量不再可从外部获得(并且从未使用过)-只有在其作用域中执行的函数(仍然)可以访问。 但是,您可以通过getter