[关闭]
@zh350229319 2018-09-20T06:52:15.000000Z 字数 2824 阅读 811

hadoop配置优化

hadoop


磁盘空间占用

防止hdfs文件占用全部磁盘空间,在hdfs-site.xml中配置dfs.datanode.du.reserved:预留磁盘空间,详情请参考hadoop预留空间配置方法

  1. <property>
  2. <name>dfs.datanode.du.reserved</name>
  3. <value>10737418240</value>
  4. </property>

yarn vcore和memory错误

修改yarn-site.xml
yarn.nodemanager.resource.cpu-vcores: 表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。

  1. <property>
  2. <name>yarn.nodemanager.resource.cpu-vcores</name>
  3. <value>4</value>
  4. </property>

修改capacity-scheduler.xml
DominantResourceCalculator按照所有的节点计算内存

  1. <property>
  2. <name>yarn.scheduler.capacity.resource-calculator</name>
  3. <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
  4. </property>

hadoop工作模式

hadoop三种任务执行方式
FIFO (默认) 先进先出,一次只执行一个任务。
FAIR 公平调度,多个任务平分资源
capacity 容量调度,同一队列下任务为FIFO模式

公平模式配置

具体配置项含义参考yarn中资源调度fair schedule详解
修改队列方式yarn-site.xml

  1. <property>
  2. <name>yarn.resourcemanager.scheduler.class</name>
  3. <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
  4. </property>
  5. <!-- 是否运行资源抢占,默认false -->
  6. <property>
  7. <name>yarn.scheduler.fair.preemption</name>
  8. <value>true</value>
  9. </property>
  10. <!-- 是否允许应用提交时创建新队列,默认true。当flase时,应用提交时指定队列不存在,则将该应用放到默认队列中执行 -->
  11. <property>
  12. <name>yarn.scheduler.fair.allow-undeclared-pools</name>
  13. <value>true</value>
  14. </property>

新建fair-scheduler.xml文件,具体配置项参考Fair Scheduler相关参数yarn fair-scheduler 公平调度的一个实例
fair-scheduler.xml修改后执行命令生效,可以不用重启yarn集群

  1. yarn rmadmin -refreshQueues
  2. yarn-daemon.sh stop resourcemanager
  3. yarn-daemon.sh start resourcemanager

容量模式配置

修改队列方式yarn-site.xml

  1. <property>
  2. <name>yarn.resourcemanager.scheduler.class</name>
  3. <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
  4. </property>

队列配置

  1. <!-- root目录下的队列 -->
  2. <property>
  3. <name>yarn.scheduler.capacity.root.queues</name>
  4. <value>default,sparksql</value>
  5. </property>
  6. <!-- 弹性设置,最大时占用多少比例资源,同一层级下相加最好为100,防止资源占用过多 -->
  7. <!-- default占用70% -->
  8. <property>
  9. <name>yarn.scheduler.capacity.root.default.capacity</name>
  10. <value>70</value>
  11. </property>
  12. <!-- sparksql占用30% -->
  13. <property>
  14. <name>yarn.scheduler.capacity.root.sparksql.capacity</name>
  15. <value>30</value>
  16. </property>
  17. <!-- queue capacity最大占比 -->
  18. <property>
  19. <name>yarn.scheduler.capacity.root.sparksql.maximum-capacity</name>
  20. <value>100</value>
  21. </property>
  22. <property>
  23. <name>yarn.scheduler.capacity.root.default.user-limit-factor</name>
  24. <value>1</value>
  25. </property>
  26. <!-- 队列状态,可以是RUNNING或STOPPED -->
  27. <property>
  28. <name>yarn.scheduler.capacity.root.sparksql.state</name>
  29. <value>RUNNING</value>
  30. </property>
  31. <!--限定哪些Linux用户/用户组可向给定队列中提交应用程序-->
  32. <property>
  33. <name>yarn.scheduler.capacity.root.sparksql.acl_submit_applications</name>
  34. <value>*</value>
  35. </property>
  36. <!--为队列指定一个管理员,该管理员可控制该队列的所有应用程序,比如杀死任意一个应用程序等。-->
  37. <property>
  38. <name>yarn.scheduler.capacity.root.sparksql.acl_administer_queue</name>
  39. <value>*</value>
  40. </property>

capacity-scheduler.xml修改后执行命令

  1. yarn rmadmin -refreshQueues
  2. yarn-daemon.sh stop resourcemanager
  3. yarn-daemon.sh start resourcemanager
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注