java - 在地理位置相同的虚拟机上运行 map reduce - 对于 hadoop 集群来说,这种设置有多糟糕?

标签 java hardware hadoop

就像主题所读的那样,获得专用硬件来运行 hadoop 集群而不是虚拟机是否重要?如果是,可接受的网络延迟是多少?您需要千兆以太网吗?我想利用 hadoop 来加速 ETL 过程。为了做到这一点,我确实设置了一些虚拟机(512-1GB RAM,双核 2.2Mhz CPU 的每个虚拟机 1 个核心),这些虚拟机相距约 500 英里,在 100Mpbs 以太网上的网络延迟为 10-25 毫秒。我无法将单台机器的性能与我的 ETL 流程相匹配,将 3-4 个虚拟机作为节点。所以,我想我应该在这里问这个问题以获得更多见解。

最佳答案

这很大程度上取决于您的任务,但一般来说,这都很重要 - 包括网络延迟、带宽、CPU 负载/可用性,

我可以想象一些网络带宽不是很重要的场景 - 例如,如果您已经将数据阵列加载到 HDFS,即它干净地分布在所有节点上,并且您将执行以下操作在映射器中对此数组进行复杂的计算,根本没有 reducer ,或者只有很少一部分数据进入 reducer 。例如,如果您要计算文本文件中的行数,映射器将读取数 GB 文件并仅将一个简单的数字推送到缩减器 - 行数。 reducer 会将这些数字相加并在输出中推送单个答案。它实际上没有通过网络传输任何内容 => 对性能没有影响。

然而,在现实生活中,您很少会遇到这样的任务。通常,映射器和 reducer 之间会进行一些分组,因此每个组的大部分计算都是由 reducer 执行的 - 即 reducer 必须从映射器传输所有数据,通常会大量使用网络。

如果您能详细介绍您的任务,我可以更详细地估计您想要使用的硬件以及当前解决方案的弱点是什么。

关于java - 在地理位置相同的虚拟机上运行 map reduce - 对于 hadoop 集群来说,这种设置有多糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4302792/

相关文章:

java - 正则表达式二进制字符串至少包含并以以下结尾

java - ChromeDriver 启动 Chrome.app,但不驱动任何东西。我收到 : Could not start a new session

.net - SMS网关设备

hadoop 运行不正常

hadoop - reducer 和 mapper 可以在同一个数据节点上吗?

java - Spring想要使用@Resource调用默认构造函数

hardware - 入侵计算机硬件进行实验控制

memory - 在 64 位计算机上安装 32 位操作系统是否会提高带宽?

hadoop - 有什么办法可以在 Windows 环境中从虚拟机的 hdfs 系统打开文件?

java - 为什么我的AsyncTask在主线程上运行?