@zh350229319
2018-09-20T06:52:15.000000Z
字数 2824
阅读 811
hadoop
防止hdfs文件占用全部磁盘空间,在hdfs-site.xml中配置dfs.datanode.du.reserved:预留磁盘空间,详情请参考hadoop预留空间配置方法
<property><name>dfs.datanode.du.reserved</name><value>10737418240</value></property>
修改yarn-site.xml
yarn.nodemanager.resource.cpu-vcores: 表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。
<property><name>yarn.nodemanager.resource.cpu-vcores</name><value>4</value></property>
修改capacity-scheduler.xml
DominantResourceCalculator按照所有的节点计算内存
<property><name>yarn.scheduler.capacity.resource-calculator</name><value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value></property>
hadoop三种任务执行方式
FIFO (默认) 先进先出,一次只执行一个任务。
FAIR 公平调度,多个任务平分资源
capacity 容量调度,同一队列下任务为FIFO模式
具体配置项含义参考yarn中资源调度fair schedule详解
修改队列方式yarn-site.xml
<property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value></property><!-- 是否运行资源抢占,默认false --><property><name>yarn.scheduler.fair.preemption</name><value>true</value></property><!-- 是否允许应用提交时创建新队列,默认true。当flase时,应用提交时指定队列不存在,则将该应用放到默认队列中执行 --><property><name>yarn.scheduler.fair.allow-undeclared-pools</name><value>true</value></property>
新建fair-scheduler.xml文件,具体配置项参考Fair Scheduler相关参数yarn fair-scheduler 公平调度的一个实例
fair-scheduler.xml修改后执行命令生效,可以不用重启yarn集群
yarn rmadmin -refreshQueues或yarn-daemon.sh stop resourcemanageryarn-daemon.sh start resourcemanager
修改队列方式yarn-site.xml
<property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value></property>
<!-- root目录下的队列 --><property><name>yarn.scheduler.capacity.root.queues</name><value>default,sparksql</value></property><!-- 弹性设置,最大时占用多少比例资源,同一层级下相加最好为100,防止资源占用过多 --><!-- default占用70% --><property><name>yarn.scheduler.capacity.root.default.capacity</name><value>70</value></property><!-- sparksql占用30% --><property><name>yarn.scheduler.capacity.root.sparksql.capacity</name><value>30</value></property><!-- queue capacity最大占比 --><property><name>yarn.scheduler.capacity.root.sparksql.maximum-capacity</name><value>100</value></property><property><name>yarn.scheduler.capacity.root.default.user-limit-factor</name><value>1</value></property><!-- 队列状态,可以是RUNNING或STOPPED --><property><name>yarn.scheduler.capacity.root.sparksql.state</name><value>RUNNING</value></property><!--限定哪些Linux用户/用户组可向给定队列中提交应用程序--><property><name>yarn.scheduler.capacity.root.sparksql.acl_submit_applications</name><value>*</value></property><!--为队列指定一个管理员,该管理员可控制该队列的所有应用程序,比如杀死任意一个应用程序等。--><property><name>yarn.scheduler.capacity.root.sparksql.acl_administer_queue</name><value>*</value></property>
capacity-scheduler.xml修改后执行命令
yarn rmadmin -refreshQueues或yarn-daemon.sh stop resourcemanageryarn-daemon.sh start resourcemanager