Hadoop MapReduce 与 MPI(与 Spark、Mahout 与 Mesos) - 何时使用其中之一?

2024-01-11

我是并行计算新手,刚刚开始在 Amazon AWS 上尝试 MPI 和 Hadoop+MapReduce。但我对何时使用其中一种而不是另一种感到困惑。

例如,我看到的一个常见的经验法则可以总结为......

  • 大数据、非迭代、容错=> MapReduce
  • 速度、小数据、迭代、非Mapper-Reducer类型=> MPI

但是后来,我也看到了 MPI 上 MapReduce 的实现(MR-MPI http://mapreduce.sandia.gov/)不提供容错能力,但是似乎是 http://dx.doi.org/10.1016/j.parco.2011.02.004在某些基准测试中比 Hadoop 上的 MapReduce 更高效,并且似乎可以使用核外内存处理大数据。

相反,也有 MPI 实现(MPICH2-纱线 https://github.com/alibaba/mpich2-yarn)在新一代 Hadoop Yarn 及其分布式文件系统 (HDFS) 上。

此外,MPI 中似乎有规定(Scatter-Gather、检查点-重启 http://fault-tolerance.org/2014/11/15/tutorial-sc14-fault-tolerance-for-hpc-theory-and-practice/, ULFM http://www.anl.gov/events/fault-tolerant-mapreduce-mpi-using-user-level-failure-mitigation和别的容错 https://www.open-mpi.org/faq/?category=ft)模仿 MapReduce 范式的几个特征。

Mahout、Mesos 和 Spark 如何适应这一切?

在 Hadoop MapReduce、MPI、Mesos、Spark 和 Mahout(或组合)之间做出选择时可以使用什么标准?


这个决定可能有很好的技术标准,但我还没有看到任何关于它的文章。似乎存在文化分歧,人们认为 MapReduce 用于筛选企业环境中的数据,而科学工作负载则使用 MPI。这可能是由于这些工作负载对网络性能的潜在敏感性。以下是关于如何找出答案的一些想法:

许多现代 MPI 实现可以在多个网络上运行,但针对 Infiniband 进行了大量优化。 MapReduce 的典型用例似乎是通过以太网连接的“白盒”商品系统集群。快速搜索“MapReduce Infiniband”会导致http://dl.acm.org/itation.cfm?id=2511027 http://dl.acm.org/citation.cfm?id=2511027这表明在 MapReduce 环境中使用 Infiniband 是一个相对较新的事物。

那么为什么要在针对 Infiniband 高度优化的系统上运行呢?它比以太网昂贵得多,但具有更高的带宽、更低的延迟,并且在网络争用较高的情况下可以更好地扩展(参考:http://www.hpcadvisorycouncil.com/pdf/IB_and_10GigE_in_HPC.pdf http://www.hpcadvisorycouncil.com/pdf/IB_and_10GigE_in_HPC.pdf).

如果您的应用程序对已融入许多 MPI 库的 Infiniband 优化效果敏感,也许这对您有用。如果您的应用程序对网络性能相对不敏感,并且将更多时间花在不需要进程之间通信的计算上,那么 MapReduce 可能是更好的选择。

如果您有机会运行基准测试,您可以对可用的任何系统进行预测,以了解网络性能的改善有多大帮助。尝试限制您的网络:例如,将 GigE 降频至 100mbit,或将 Infiniband QDR 降频至 DDR,在结果中画一条线,看看购买由 MPI 优化的更快的互连是否能让您达到您想要的效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop MapReduce 与 MPI(与 Spark、Mahout 与 Mesos) - 何时使用其中之一? 的相关文章

  • Hive 中字符串数据类型是否有最大大小?

    谷歌了很多 但没有在任何地方找到它 或者这是否意味着只要允许集群 Hive 就可以支持任意大字符串数据类型 如果是这样 我在哪里可以找到我的集群可以支持的最大字符串数据类型大小 提前致谢 Hive 列表的当前文档STRING作为有效的数据类
  • 在 Hive 中分解一行 XML 数据

    我们将 XML 数据作为名为 XML 的单个字符串列加载到 Hadoop 中 我们正在尝试检索数据级别 并将其标准化或分解为单行进行处理 你知道 就像表格一样 已经尝试过分解功能 但没有得到我们想要的 示例 XML
  • Hive查询快速查找表大小(行数)

    是否有 Hive 查询可以快速查找表大小 即行数 而无需启动耗时的 MapReduce 作业 这就是为什么我想避免COUNT I tried DESCRIBE EXTENDED 但这产生了numRows 0这显然是不正确的 对新手问题表示歉
  • 使用 OpenMP 时无用的 printf 没有加速

    我刚刚编写了第一个 OpenMP 程序 它并行化了一个简单的 for 循环 我在双核机器上运行代码 发现从 1 个线程变为 2 个线程时速度有所提高 然而 我在学校 Linux 服务器上运行相同的代码并没有看到加速 在尝试了不同的事情之后
  • 使用 Hadoop 映射两个数据集

    假设我有两个键值数据集 数据集A和B 我们称它们为数据集A和B 我想用 B 组的数据更新 A 组中的所有数据 其中两者在键上匹配 因为我要处理如此大量的数据 所以我使用 Hadoop 进行 MapReduce 我担心的是 为了在 A 和 B
  • 是否值得购买 Mahout in Action 以跟上 Mahout 的速度,或者还有其他更好的来源吗?

    我目前是一个非常随意的用户阿帕奇马胡特 http mahout apache org 我正在考虑购买这本书象夫在行动 http www manning com owen 不幸的是 我很难理解这本书的价值 并且认为它是一本曼宁早期访问计划 h
  • Hadoop安装问题:

    我跟着this http www bogotobogo com Hadoop BigData hadoop Install on ubuntu single node cluster phpHadoop 安装教程 不幸的是 当我运行全部启动
  • python 线程是如何工作的?

    我想知道 python 线程是并发运行还是并行运行 例如 如果我有两个任务并在两个线程中运行它们 它们是同时运行还是计划同时运行 我知道GIL并且线程仅使用一个 CPU 核心 这是一个复杂的问题 需要大量解释 我将坚持使用 CPython
  • Spark 上的 Hive 2.1.1 - 我应该使用哪个版本的 Spark

    我在跑蜂巢2 1 1 Ubuntu 16 04 上的 hadoop 2 7 3 根据Hive on Spark 入门 https cwiki apache org confluence display Hive Hive on Spark
  • cuda中内核的并行执行

    可以说我有三个全局数组 它们已使用 cudaMemcpy 复制到 GPU 中 但 c 中的这些全局数组尚未使用 cudaHostAlloc 分配 以便分配页面锁定的内存 而不是简单的全局分配 int a 100 b 100 c 100 cu
  • MPI_Comm_Create 挂起而无响应

    我希望多播到不超过 4 台机器的组 MPI bcast 是否仍然比多个单播节省大量时间 请记住我的组规模很小 我编写了以下函数来根据机器的数量和这些机器的等级创建一个新的通信器 void createCommunicator MPI Com
  • 我可以在 R 中并行读取 1 个大 CSV 文件吗? [复制]

    这个问题在这里已经有答案了 我有一个很大的 csv 文件 需要很长时间才能阅读 我可以使用 parallel 或相关的包在 R 中并行读取此内容吗 我尝试过使用 mclapply 但它不起作用 根据OP的评论 fread来自data tab
  • hadoop中reducer的数量

    我正在学习hadoop 我发现减速器的数量非常令人困惑 1 reducer的数量与partition的数量相同 2 reducer 的数量是 0 95 或 1 75 乘以 节点数 每个节点的最大容器数 3 减速机数量设定为mapred re
  • 处理异步并行任务的多个异常

    Problem 多个任务并行运行 所有任务 没有任务或其中任何任务都可能抛出异常 当所有任务完成后 必须报告所有可能发生的异常 通过日志 电子邮件 控制台输出 等等 预期行为 我可以通过 linq 使用异步 lambda 构建所有任务 然后
  • Boost MPI 在监听列表时不会释放资源?

    这是一个后续问题如何释放 boost mpi request https stackoverflow com questions 44078901 how do i free a boostmpirequest 我在监听列表而不是单个项目时
  • 如何通过sparkSession向worker提交多个jar?

    我使用的是火花2 2 0 下面是我在 Spark 上使用的 java 代码片段 SparkSession spark SparkSession builder appName MySQL Connection master spark ip
  • 如何在 Emgu CV 项目中利用 OpenCL

    我是使用 Emgu CV 的新手 并开始创建小型示例项目 例如面部检测 眼睛检测等 如果我可以利用 OpenCL 来加速使用 GPU 的过程 那就太好了 否则 当我降低scaleFactor时 它会导致大量的CPU利用率 我怎样才能做到这一
  • Hive - 线程安全的自动递增序列号生成

    我遇到一种情况 需要将记录插入到特定的 Hive 表中 其中一列需要是自动递增的序列号 即在任何时间点都必须严格遵循 max value 1 规则 记录从许多并行的 Hive 作业插入到这个特定的表中 这些作业每天 每周 每月批量运行 现在
  • 伪分布式模式下的 Hadoop。连接被拒绝

    P S 请不要将此标记为重复 Hi 我一直在尝试以伪分布式模式设置和运行 Hadoop 当我运行 start all sh 脚本时 我得到以下输出 starting namenode logging to home raveesh Hado
  • GProf 输出中缺少函数

    我正在尝试分析一些 C 代码 但最直观地成本最高的函数之一并未出现在 GProf 输出中 int main initialise haloSwap for functions propagate functions void propaga

随机推荐