我有2个节点hadoop集群 . 每个都有16GB RAM和512GB硬盘 .
我写过像下面这样的火花程序
代码:
val input = sc.wholeTextFiles("folderpath/*")
do some operations on input.
convert it to dataframe. then register temptable. execute insert command to insert the dataframe value to hive table.
然后我打开主机1(这是我的群集的名称节点)终端&我运行spark submit命令就像
>spark-submit --class com.sample.parser --master yarn Parser.jar.
但是处理25个文件需要50多分钟,总计大约1gb . 当我检查spark UI时,执行程序列表只有我的主机2.主机1被列为驱动程序 .
所以实际上只有一个节点正在执行程序(主机2) . 为什么?
有没有办法让我的驱动程序也可以执行程序 . 这样运行得快一点?难道我做错了什么?基本上我希望我的驱动程序节点也是执行程序的一部分(两台机器都有8个核心) . 提前致谢 .
1 回答
spark-submit
默认以客户端(本地)模式运行,为了在集群模式下提交spark作业,请使用--deploy-mode
作为:另外,尝试
--num-executors <n>
- 使用不同的<n>
值...并查看它是否与您的应用程序的性能有任何区别 .