python文件提交spark

Python文件提交spark

首先记录一下spark的四种运行模式:

local: 本地单进程模式,用于本地开发测试Spark代码

standalone: 分布式集群模式,Master-Worker架构,Master负责调度,Worker负责具 体Task的执行

on yarn/mesos: 运行在yarn/mesos等资源管理框架之上,yarn/mesos提供资源管理,spark 提供计算调度,并可与其他计算框架(如MapReduce/MPI/Storm)共同运行 在同一个集群之上 (使用cloudera搭建的集群就是这种情况)

local: 本地单进程模式,用于本地开发测试Spark代码

standalone: 分布式集群模式,Master-Worker架构,Master负责调度,Worker负责具 体Task的执行

on yarn/mesos: 运行在yarn/mesos等资源管理框架之上,yarn/mesos提供资源管理,spark 提供计算调度,并可与其他计算框架(如MapReduce/MPI/Storm)共同运行 在同一个集群之上 (使用cloudera搭建的集群就是这种情况)

on cloud(EC2): 运行在AWS的EC2之上。

下面用python的一个简单作业SimpleApp.py为例,记录下脚本的运行过程

SimpleApp.py内容:

from pyspark import SparkContext,SparkConf

conf=SparkConf()

conf.setMaster("spark://192.168.80.139:7077")

conf.setAppName("test application")

logFile="hdfs://hadoop01:8020/testfile"

sc=SparkContext(conf=conf)

logData=sc.textFile(logFile).cache()

numAs=logData.filter(lambda s: 'a' in s).count()

numBs=logData.filter(lambda s: 'b' in s).count()

print "Lines with a:%i,lines with b:%i" % (numAs,numBs)

关于这里的问题主要涉及到连接集群的配置问题,也就是上述代码的conf部分,首先要连接集群的master节点,注意这里的配置写法

spark://192.168.2.241:7077

前缀spark不可少,否则会报“could not parse master URL”的错误即无法解析URL的错误,至于端口号7077是默认,可以在/etc/spark/conf中查询$SPARK_MASTER_PORT这个环境变量,(具体安装方式配置文件位置也不同,根据具体情况来确定)

logFile=”hdfs://hadoop241:8020/testfile” 8020也是默认的

testfile内容:

a

ab

abc

把文件传到hdfs根目录

hadoop fs -put /testfile /

之后在spark的bin目录下执行

 ./spark-submit /test_pyspark.py

回到spark网址 http://192.168.80.139:8080/ 观察进程

猜你喜欢

转载自blog.csdn.net/weixin_42490528/article/details/83309763