据我了解,您有一台具有 20 个内核的机器。在这种情况下不需要虚拟化它,因为您创建的虚拟机将消耗总资源中的一些资源。最好的选择是在笔记本电脑上安装 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