hadoop - 为什么 Hadoop 需要那么大的 RAM?

标签 hadoop hadoop-yarn hadoop2 resourcemanager

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可能最好地解释了这一点。

enter image description here

虽然您的数据可能全部都适合 .5 GB(作为示例),但 Hadoop (Java) 中用于表示该数据的数据结构使用更多,并且随着该数据的处理,那些用于计算结果会用得更多。而且由于 Java 使用垃圾 收集所有这些表示可能正在使用堆,直到发生垃圾收集。

关于hadoop - 为什么 Hadoop 需要那么大的 RAM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43473822/

相关文章:

mysql - 执行 concat_ws 和 collect_list 后,Hive Coalesce 函数未返回预期结果

hadoop - 在 Docker 容器上使用 Hadoop 和 Spark

hadoop - Hive 存档分区(动态)失败 : Execution Error, 从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1

java - Hadoop ClassNotFoundException 与已导入的类

hadoop - Mahout群集崩溃

hadoop - HBase数据录入程序运行不正常

hadoop - Spark over Yarn - 不正确的 Application Master 选择

hadoop-yarn - 如何杀死 YARN 容器以测试失败场景

hadoop - 如何为大数据集群分配物理资源?

hadoop - 如何通过grafana(opentsdb)监控dfs.namenode.handler.count?