hadoop - 如何在单机上最好地运行 Hadoop?

标签 hadoop parallel-processing virtual-machine processing-efficiency linux-containers

我可以访问一台运行 Linux 的计算机,该计算机具有 20 个内核、92 GB RAM 和 100 GB HDD 存储空间。我想将 Hadoop 用于涉及大量数据(超过 1M 单词,超过 1B 单词组合)的任务。 伪分布式模式或完全分布式模式是在单台计算机上利用 Hadoop 功能的最佳方式吗?

对于我的 Hadoop 预期用途,遇到数据丢失和由于节点故障而不得不重新运行作业并不是大问题。

This project涉及Linux Containers使用完全分布式模式。 This article描述伪分布式模式;可以找到更多详细信息 here .

最佳答案

据我了解,您有一台具有 20 个内核的机器。在这种情况下不需要虚拟化它,因为您创建的 VM 会消耗总资源中的一些资源。最好的选择是在笔记本电脑上安装Linux操作系统,以伪分布式方式安装hadoop并配置容器分配的可用资源。

要获得良好的性能,您需要 CPU 内核和内存。所以仅靠 20 个内核对您没有帮助。您还需要大量的物理内存。 可以引用这个document用于分配内存。

hadoop 背后的基础是分布式计算和存储,用于以经济高效的方式处理大数据。所以如果你试图通过虚拟化在同一个父机器(小型机器)中实现多台机器,这对你没有帮助,因为大量资源将被单个机器的操作系统消耗。相反,如果您在机器上安装 hadoop 并将资源正确配置为 hadoop,作业将在多个容器中执行(取决于可用性和要求),因此会发生并行处理。因此,您可以实现现有机器的最大性能。

所以最好的选择是建立一个伪分布式集群并合理分配资源。伪分布式模式是所有守护进程都运行在一台机器上的模式。

使用您共享的硬件配置,您可以使用以下配置来设置您的 hadoop。这可以处理足够的负载。

(yarn-site.xml)    yarn.nodemanager.resource.memory-mb  = 81920
(yarn-site.xml)    yarn.scheduler.minimum-allocation-mb = 1024
(yarn-site.xml)    yarn.scheduler.maximum-allocation-mb = 81920
(yarn-site.xml)    yarn.nodemanager.resource.cpu-vcores = 16
(yarn-site.xml)    yarn.scheduler.minimum-allocation-vcores = 1
(yarn-site.xml)    yarn.scheduler.increment-allocation-vcores = 1
(yarn-site.xml)    yarn.scheduler.maximum-allocation-vcores = 16
(mapred-site.xml)  mapreduce.map.memory.mb  = 4096
(mapred-site.xml)  mapreduce.reduce.memory.mb   = 8192
(mapred-site.xml)  mapreduce.map.java.opts  = 3072
(mapred-site.xml)  mapreduce.reduce.java.opts   = 6144

关于hadoop - 如何在单机上最好地运行 Hadoop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31733313/

相关文章:

f# - F# Async.Parallel 会加快计算速度吗?

c++ - OpenMP 没有加速

c - 在 VM 内的 nfs 共享目录中编译时出现 Exec 格式错误

python - Python网络套接字-[WinError 10053]

Hadoop DataStreamer 异常 : File could only be replicated to 0 nodes instead of minReplication (=1)

hadoop - 共享的外部配置单元元存储如何取决于特定版本的HDInsight(Hadoop)集群?

shell - 运行 Hbase shell 时出错

java - 将计算迁移到云端

c - 使用 openmp 任务的部分并行循环

azure - 调整虚拟机内存或磁盘大小是否会导致虚拟机中已安装的应用程序丢失?