hadoop容器需要的ram要比itsef(我用来测试0.5gb大小的数据)的数据量多出一倍,为什么太多了?物理内存和容器外虚拟内存的概念是什么:有时会出现异常,比如100mb的物理内存是500mb,但2.5gb的虚拟内存超过2gb。为什么hadoop超过了虚拟内存的限制,只要2gb基本上就足以运行整个操作系统,并将所有数据保存在ram内存中,那么为什么2gb还不够呢?
mec1mxoz1#
基本上,您需要更多的ram,因为java运行mapper或reducer任务的开销很大。该进程的java堆+jvm。在hadoop2中为Map器和归约器配置heapsize的这张图片可能最好地解释了这一点。虽然您的数据可能都适合.5 gb(作为示例),但hadoop(java)中用于表示数据的数据结构使用的数据更多,并且随着数据的处理,用于计算结果的临时数据结构将使用更多。由于java使用垃圾收集,所以在垃圾收集发生之前,所有这些表示都可能使用堆。
1条答案
按热度按时间mec1mxoz1#
基本上,您需要更多的ram,因为java运行mapper或reducer任务的开销很大。该进程的java堆+jvm。

在hadoop2中为Map器和归约器配置heapsize的这张图片可能最好地解释了这一点。
虽然您的数据可能都适合.5 gb(作为示例),但hadoop(java)中用于表示数据的数据结构使用的数据更多,并且随着数据的处理,用于计算结果的临时数据结构将使用更多。由于java使用垃圾收集,所以在垃圾收集发生之前,所有这些表示都可能使用堆。