Hadoop 容器需要的 RAM 比数据大小本身(我用于测试 0.5GB 大小的数据)实际上是它的两倍,为什么太多了?
容器外的物理内存和虚拟内存的概念是什么:有时您会遇到异常,例如物理内存中有 100mb 或 500mb,但虚拟内存中有 2.5Gb 超过 2GB。为什么 hadoop 超过了虚拟内存限制,只要 2 GB 基本上足以运行整个操作系统并将我的所有数据保存在 RAM 内存中,为什么 2GB 还不够?
最佳答案
基本上,您需要更多 RAM,因为您有 Java 运行映射器或缩减器任务的开销。该进程的 Java 堆 + JVM。
这张图片来自Configuring Heapsize for Mappers and Reducers in Hadoop 2可能最好地解释了这一点。
虽然您的数据可能全部都适合 .5 GB(作为示例),但 Hadoop (Java) 中用于表示该数据的数据结构使用更多,并且随着该数据的处理,那些用于计算结果会用得更多。而且由于 Java 使用垃圾 收集所有这些表示可能正在使用堆,直到发生垃圾收集。
关于hadoop - 为什么 Hadoop 需要那么大的 RAM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43473822/