hadoop有文件系统HDFS,还有用来调度任务的YARN。而SPARK可以在YARN上开一个APPLICATION,然后提交一些JOB上去。
首先启动hadoop的hdfs和yarn,如下:
start-dfs.sh
start-yarn.sh
关于如何配置core-site.xml, yarn-site.xml, hdfs-site.cml等,参考hadoop官方文档
然后要配置两个变量:
HADOOP_CONF_DIR="$HADOOP_HOME/etc/hadoop/"
PYSPARK_PYTHON="$PYTHON_PATH/bin/python"
以上变量仅为示意,需要按自己的环境配置
然后就能运行spark了
scala语言
./spark-shell --master yarn --deploy-mode client --executor-cores 4
python语言
./pyspark --master yarn --deploy-mode client --executor-cores 4
这时会有报错,因为JAVA_HOME配置有问题,可修改hadoop/libexec/hadoop-config.sh文件
参考stackoverflow上的解答
解决后,重新运行命令,就能在交互式的shell中运行程序了,其中sc是SparkContext类的实例
比如,sc.TextFile(。。。。。。)
启动过程中,可以看到,说是没有配置yarn上spark的库文件,spark会针对当前应用临时上传一些spark要用到的库,这个信息,可以加强对hadoop和spark之间关系的理解
运行状态监控,打开localhost:8088即可看到hadoop的yarn界面,点开其中的spark application,就能看到关于这个spark应用的信息,可以查看提交的每个JOB的运行时间(一次collect才运行),可以查看Excutor的个数和内核数等
关于不同运行方式,比如给spark提交jar任务(而不是上述交互式运行),可参考spark官方文档