apache-spark - 为什么 Spark 长期没有充分利用并行资源?
问题描述
我在 spark-shell 中运行 sparksql 应用程序。屏幕进度条记录如下:
[Stage 3:===========> (1722 + 20) / 8040]
[Stage 3:===========> (1725 + 20) / 8040]
[Stage 3:===========> (1726 + 20) / 8040]
[Stage 3:===========> (1728 + 19) / 8040]
[Stage 3:===========> (1730 + 17) / 8040]
[Stage 3:===========> (1737 + 15) / 8040]
[Stage 3:===========> (1738 + 14) / 8040]
[Stage 3:===========> (1742 + 12) / 8040]
[Stage 3:===========> (1746 + 10) / 8040]
[Stage 3:===========> (1749 + 10) / 8040]
[Stage 3:===========> (1750 + 10) / 8040]
[Stage 3:===========> (1752 + 10) / 8040]
[Stage 3:===========> (1755 + 10) / 8040]
[Stage 3:===========> (1759 + 10) / 8040]
[Stage 3:===========> (1763 + 10) / 8040]
[Stage 3:===========> (1766 + 10) / 8040]
[Stage 3:===========> (1770 + 10) / 8040]
[Stage 3:===========> (1774 + 10) / 8040]
[Stage 3:===========> (1775 + 10) / 8040]
[Stage 3:===========> (1776 + 10) / 8040]
[Stage 3:===========> (1781 + 10) / 8040]
[Stage 3:===========> (1785 + 10) / 8040]
[Stage 3:===========> (1787 + 10) / 8040]
[Stage 3:===========> (1790 + 10) / 8040]
[Stage 3:===========> (1792 + 10) / 8040]
[Stage 3:===========> (1793 + 9) / 8040]
[Stage 3:===========> (1794 + 8) / 8040]
[Stage 3:===========> (1795 + 7) / 8040]
[Stage 3:===========> (1797 + 5) / 8040]
[Stage 3:===========> (1798 + 4) / 8040]
[Stage 3:===========> (1800 + 2) / 8040]
[Stage 3:===========> (1801 + 1) / 8040]
[Stage 3:===========> (1801 + 100) / 8040]
[Stage 3:===========> (1802 + 100) / 8040]
[Stage 3:===========> (1805 + 100) / 8040]
[Stage 3:===========> (1810 + 100) / 8040]
在这个阶段,sparksql 正在从 hive 表中读取数据。
虽然并行资源足够(10 个执行器,每个执行器有 10 个核心),但 spark 并没有让足够的任务执行。只有 10 个或更少的任务在数分钟内同时执行。直到最后一个“ONE”任务(1801 + 1)完成,火花然后开始将更多任务放入执行队列(在同一阶段)。
为什么会重复出现这种情况,如何让 Spark 充分利用并行资源?
我的环境是:
Hadoop-2.7.7
Hive-2.3.6
Spark-2.4.4 ~ Spark-3.0.0
解决方案
推荐阅读
- google-cloud-platform - How can i show a from name instead of email address using sendgrid in GCP composer
- wpf-controls - How can I populate the datagrid cobmo box column in WPF?
- sql - sql查询未返回正确的MTD累积和
- flutter - Stacking Multiple Rows of Strings in Csv in Flutter
- python - Pygame and PyOpenGL: No shapes appear on screen
- javascript - JavaScript 中的 Java/Python 交叉编译
- vba - 如何将动态加载的无界子表单链接到主表单?
- python - Python 脚本返回空白输出
- c# - C# 类库导出为 COM,MIDL 编译时出错
- javascript - 使用 jQuery 将鼠标悬停在相邻文本上时更改图标的颜色