hadoop集群执行任务后会自动释放jvm内存吗?
1.内存hadoop为每个守护进程(NameNode、二级NameNode、Job Tracker、DataNode、Tasktracker)统一分配内存。参数为Hadoop _ heap,默认值为1000M。在大多数情况下,这个统一设置的值可能不合适。比如namenode node,1000M的内存只能存储几百万个文件的数据块的引用。如果想单独设置namenode的内存,可以通过HADOOP_NAMENODE_OPTS来设置。同样,可以通过HADOOP_secondarynamenode_OPTS设置SECONDARYNAMENODE的内存,使其与namenode一致。当然还有HADOOP_DATANODE_OPTS,HADOOP_BALANCER_OPTS,HADOOP_JOBTRACKER_OPTS变量供你使用。此外,tasktracker启动独立的子JVM运行map和reduce任务,分配给每个子JVM的内存量由mapred.child.java.opts属性(mapred-site.xml)控制,默认值为200M。2.地图任务的最大数量tasktracker可以同时运行的地图任务的最大数量由mapred . tasktracker . map . tasks . maximum属性(mapred-site.xml)控制,默认值为2。3.reduce任务的最大数量tasktracker可以同时运行的reduce任务的最大数量由Mapred控制。tasktracker . reduce . tasks . maximum(mapred-site . XML),默认值为2。4.小总结:计算节点的内存使用量。默认情况下,同时运行namenode、secondarynamenode和jobtracker的主节点使用1000M内存,因此总共使用3000M。默认情况下,从节点运行以下守护进程:1 datanode:默认情况下,它占用1000M内存。1 tasktracker:默认占用1000M内存。最多2个地图任务:2*200M=400M。最多2个reduce任务:2*200M=400M。也就是说,默认情况下,从节点需要使用2800M内存。