如何在单机上运行Hadoop?

AST*_*AST 10 parallel-processing hadoop virtual-machine processing-efficiency linux-containers

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

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

涉及Linux容器的此项目使用完全分布式模式.本文介绍伪分布式模式; 更多细节可以在这里找到.

Ama*_*ose 10

根据我的理解,你有一台拥有20个核心的机器.在这种情况下,不需要对其进行虚拟化,因为您创建的VM将消耗总资源中的一些资源.最好的选择是在笔记本电脑中安装Linux操作系统,以伪分布式模式安装hadoop并配置容器分配的可用资源.

您需要CPU内核和内存才能获得良好的性能.所以只有20个核心对你没有帮助.你也需要大量的物理内存.您可以参考此文档来分配内存.

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
Run Code Online (Sandbox Code Playgroud)


And*_*ite 4

当您使用单台机器时,您将失去 Hadoop 的所有优势。是的,您可以使用容器或虚拟机,但没有必要。具有 20个映射器/减速器插槽的 MapReduce 的单个独立 节点实例的性能将优于在单台计算机上运行的完全分布式集群。

更新:使用伪分布式模式可能会更好地在 M/R 作业期间使用所有核心。显然,独立运行在单个 java 实例中,这可能不适合您的用例。