2016-12-28 70 views
0

我有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 --class com.sample.parser --master yarn Parser.jar. 

但是它需要超过50分钟才能处理总共大约1GB的25个文件。而且当我检查火花UI时,执行程序列表只有我的主机2.主机1是李担任司机。

所以实际上只有一个节点正在执行程序(主机2)。为什么?

有没有办法让我的驱动程序也可以执行程序。这样它跑得快一点?难道我做错了什么?基本上我希望我的驱动程序节点也是执行程序的一部分(两台机器都有8个内核)。 在此先感谢。

+0

你尝试过'--num-executors 10'吗? –

+0

是的。我做到了。但仍然只有我的主机2正在执行。不是主人1.这是我所尝试过的。 “spark-submit --class com.sample.parser - 主纱Parser.jar。--num -executeors 16 --executor-memory 1g --executor-cores 16”。但没有区别 – user7264473

回答

0

​​默认运行在客户端(本地)模式,以提交火花工作在集群模式下使用--deploy-mode为:

spark-submit \ 
--class com.sample.parser \ 
--master yarn \ 
--deploy-mode cluster \ 
Parser.jar 

--deploy-mode:是否给工人节点 上部署的驱动程序(簇)或局部作为外部客户端(客户端)(默认值:客户端)

也,实验--num-executors <n> - 具有不同<n> VA提示...并查看它是否与您的应用程序的性能有任何差异。

+0

是的。这是集群模式,我应该尝试。有效。谢谢。 – user7264473

相关问题