1.hadoop-env.sh:该文件用来配置hadoop所需的特殊环境变量: JAVA与HADOOP环境变量的设置(如果在~/.bash_profile中设置了环境变量,这里可以不进行配置) export JAVA_HOME=/home/admin/deploy/java6 export HADOOP_HOME=/home/admin/deploy/hadoop-0.20.2
# The maximum amount of heap to use, in MB. Default is 1000. JAVA虚拟机性能调优(省略不用修改的内容) HADOOP_NAMENODE_OPTS="-Xmx2048m–Xms1024m -Xmn1024m HADOOP_DATANODE_OPTS="-Xmx2048m–Xms1024m -Xmn1024m HADOOP_JOBTRACKER_OPTS="-Xmx2048m–Xms1024m -Xmn1024m
2.内存、任务数与cpu个数的关系。 在mapred-site.xml配置文件中设置 mapred.tasktracker.map.tasks.maximum 默认2 每个tasktracker 最多运行的tasks数目 mapred.tasktracker.reduce.tasks.maximum 默认2 每个tasktracker最多运行的reduce数目 mapred.child.java.opts 默认-Xmx200m 每个任务分配多少内存 那么如下表:
如果HADOOP_HEAPSIZE 取默认值,那么datanode tasktracker等守护线程均分别占1000m内存。默认每个tasktracker运行2个map和2个reduce任务。那么总共的内存开销是2800m 那么对于多处理器而言,任务数和cpu数之间的关系,在hadoop权威指南上指出 。经验值是 :任务数/cpu数目 在1~2之间。 比如具有8个cpu的机器,那么总任务数,就不能超过16,因为slave节点上的datanode 和tasktracker 也有进程开销。 原则就是,在考虑分配多少任务数时,要考虑同时运行在这台节点上的其他进程。 可以使用ganglia工具来监控集群的内存信息。 (责任编辑:IT) |