下面对集中部署模式进行详细介绍
该模式运行任务不会提交在集群中,只在本节点执行,有两种情况
运行该模式非常简单,只需要把Spark的安装包解压后,改一些常用的配置即可使用,而不用启动Spark的Master、Worker守护进程( 只有集群的Standalone方式时,才需要这两个角色),也不用启动Hadoop的各服务(除非你要用到HDFS)。
Spark不一定非要跑在hadoop集群,可以在本地,起多个线程的方式来指定。将Spark应用以多线程的方式直接运行在本地,一般都是为了方便调试,本地单机模式分三类:
搭建步骤:
(中间有报错:raise IllegalArgumentException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.IllegalArgumentException: u'Unable to locate hive jars to connect to metastore. Please set spark.sql.hive.metastore.jars.',网上提示查看jdk版本,发现ubuntu 18.04默认是openjdk-11-jdk包(java -version提示10.0.1)。重新安装openjdk-8-jdk版本不报错)
运行:
使用spark-shell、spark-submit、pyspark
例如使用spark-shell:
local:单机、单核运行
local[k]:启动k个executor
local[ ]:启动跟cpu数目相同的 executor*
上述情况中,local[N]与local[*]相当于用单机的多个线程来模拟spark分布式计算,通常用来检验开发出来的程序逻辑上有没有问题。
其中N代表可以使用N个线程,每个线程拥有一个core。
这些任务的线程,共享在一个进程中,可以开到,在程序的执行过程中只会产生一个进程,这个进程揽下了所有的任务,既是客户提交任务的client进程,又是spark的driver程序,还是spark执行task的executor
这种运行模式,和Local[N]很像,不同的是,它会在单机启动多个进程来模拟集群下的分布式场景,而不像Local[N]这种多个线程只能在一个进程下委屈求全的共享资源。通常也是用来验证开发出来的应用程序逻辑上有没有问题,或者想使用Spark的计算框架而没有太多资源。
用法:提交应用程序时使用local-cluster[x,y,z]参数:x代表要生成的executor数,y和z分别代表每个executor所拥有的core和memory数。
上面这条命令代表会使用2个executor进程,每个进程分配3个core和1G的内存,来运行应用程序。可以看到,在程序执行过程中,会生成如下几个进程:
Spark:2.4.0、maven:3.6.3、scala:2.11.12、scalatest:3.0.4(版本要自己去查查对应的)
编译命令:
打包成Spark可运行版:
将集群中的Hadoop的各个配置文件拷贝过来A的 HADOOP_CONF_DIR 中,core-site.xml 需要修改以下内容即,将net.topology.script.file.name对应的 值 注释掉,否则会报错。
WSL Ubuntu 的.bashrc文件追加内容:
任务提交:
结果,看app_ID:
猜测:
(补充) 关于Maven的配置问题:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)