我有一个ETL工作,占用大量CPU和内存,并且运行了很长时间。我在调试时观察到的第一件事如下(来自资源管理器GUI上的作业)
我们只有两个机架。我在回答以下三个问题时需要帮助
答案 0 :(得分:4)
1。Num Off开关容器是什么意思?
上面的情况是off switch locality
的延迟调度程序:-
| router|
+-----------+
/ \
+-----------+ +-----------+
|rack switch| |rack switch|
+-----------+ +-----------+
| data node | | data node |
+-----------+ +-----------+
| data node | | data node |
+-----------+ +-----------+
这是最糟糕的数据局部性情况(延迟节点调度程序会导致数据局部性(1.Node local 2. Rack local 3. off交换机),并且内存和vcore已通过交换机分配到不同的机架上,并且更高的带宽。
延迟调度程序将传入的任务分配给位于不同机架上的关闭交换机节点,以避免任务饿
对于YARN中不同的调度程序,节点和机架阈值存在配置变量:-
CAPACITY SCH :-
使用此属性yarn.scheduler.capacity.rack-locality-additional-delay
,可以完成开关容器分配的本地化。
capacity-scheduler.xml
<property>
<name>yarn.scheduler.capacity.node-locality-delay</name>
<value>-1</value>
<description>Number of missed scheduling opportunities after which the CapacityScheduler attempts to schedule rack-local containers.
Typically this should be set to number of racks in the cluster, this
feature is disabled by default, set to -1.
</description>
</property>
https://issues.apache.org/jira/browse/YARN-4189-JIRA进行改进 如果集群使用Fair Scheduler:-
https://hadoop.apache.org/docs/r2.7.4/hadoop-yarn/hadoop-yarn-site/FairScheduler.html
yarn.scheduler.fair.locality.threshold.rack
https://cs.stanford.edu/~matei/papers/2010/eurosys_delay_scheduling.pdf用于延迟调度。
2。如何识别这些“关闭开关”容器以及它们在哪个节点上运行?
要查看应用程序的容器,我相信我们需要通过尝试ID进行特定的应用程序尝试,然后在其中找到容器及其节点。我在RM ui中找不到任何指向关闭开关容器的直接链接
3。关闭开关容器是否会导致作业处理时间变慢?
是的,我们可以得出结论,网络开销会减慢作业处理的速度。