有关gphdfs的JVM内存
当Greenplum数据库用gphdfs协议从一个HDFS位置访问外部表数据时,一个主机系统上每一个Greenplum数据库的Segment会启动一个JVM用于该协议。默认的JVM堆尺寸是1GB且应该对于大部分负载都是够用的。
如果gphdfs的JVM内存不足,问题可能会与分配给该gphdfs分段工作者的Hadoop HDFS块中的元组密度有关。较高的块元组密度要求更多gphdfs内存。根据Hadoop集群的配置,HDFS块的尺寸通常是128MB、256MB或者512MB。
用户可以通过改变文件$GPHOME/lib/hadoop/hadoop_env.sh中的GP_JAVA_OPT变量来增加JVM的堆尺寸。在这个示例行中,选项-Xmx1000m指定该JVM消耗1GB的虚拟内存。
export GP_JAVA_OPT='-Xmx1000m -XX:+DisplayVMOutputToStderr'
$GPHOME/lib/hadoop/hadoop_env.sh必须在Greenplum数据库系统中的每一个Segment实例上被更新。
重要: 在增加gphdfs的JVM内存之前,确保在该主机上有充足的内存。例如,在使用默认值时,8个主要Segment要为gphdfs的JVM消耗8GB的虚拟内存。将Java -Xmx值增加到2GB会导致在每个主机8个Segment的环境中占用16GB内存。
上级主题: 使用Hadoop分布式文件系统(HDFS)表