在集群上运行Spark应用程序

大数据技术原理与应用

【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
Spark应用程序在集群中运行时,需要借助于集群管理器(包括本地集群管理器、YARN、Mesos)来为其实现资源管理调度服务,实现对集群中各个机器的访问(可以参考前面章节的内容:Spark集群部署模式)。这里通过简单的示例介绍其中两种:独立集群管理器和Hadoop Yarn集群管理器。通过介绍,我们可以了解到如何在这两种集群管理器上运行Spark应用程序。

启动Spark集群

请登录Linux系统,打开一个终端。
启动Hadoop集群

cd /usr/local/hadoop/
sbin/start-all.sh

启动Spark的Master节点和所有slaves节点

cd /usr/local/spark/
sbin/start-master.sh
sbin/start-slaves.sh

独立集群管理器

(1)在集群中运行应用程序JAR包
向独立集群管理器提交应用,需要把spark://master:7077作为主节点参数递给spark-submit。下面我们可以运行Spark安装好以后自带的样例程序SparkPi,它的功能是计算得到pi的值(3.1415926)。
在Shell中输入如下命令:

bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 examples/jars/spark-examples_2.11-2.0.2.jar 100 2>&1 | grep "Pi is roughly"

(2)在集群中运行spark-shell
也可以用spark-shell连接到独立集群管理器上。
首先做一点准备工作,把一个README.md文件拷贝到HDFS上,用于后面的测试。

cd /usr/local/hadoop/
# 下面这条命令中,我们把spark安装目录下的README.md文件上传到分布式文件系统HDFS的根目录下
bin/hadoop fs -put hadoop fs -put /usr/local/spark/README.md /

在Shell中输入如下命令启动进入spark-shell:

cd /usr/local/spark/
bin/spark-shell --master spark://master:7077

可以在spark-shell中输入如下代码进行测试:

scala> val textFile = sc.textFile("hdfs://master:9000/README.md")
textFile: org.apache.spark.rdd.RDD[String] = hdfs://master:9000/README.md MapPartitionsRDD[1] at textFile at <console>:24
scala> textFile.count()
res0: Long = 99                                                                 
scala> textFile.first()
res1: String = # Apache Spark

用户在独立集群管理Web界面查看应用的运行情况,可以浏览器中输入地址进行查看(http://master:8080/),如下图:
20161206_012

Hadoop YARN管理器

(1)在集群中运行应用程序JAR包
向Hadoop YARN集群管理器提交应用,需要把yarn-cluster作为主节点参数递给spark-submit。
请登录Linux系统,打开一个终端,在Shell中输入如下命令:

bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/jars/spark-examples_2.11-2.0.2.jar

运行后,根据在Shell中得到输出的结果地址查看,如下图:
20161206_014
复制结果地址到浏览器,点击查看Logs,再点击stdout,即可查看结果,如下图:
20161206_015
20161206_016

(2)在集群中运行spark-shell
也可以用spark-shell连接到独立集群管理器上。
请登录Linux系统,打开一个终端,在Shell中输入如下命令启动进入spark-shell:

bin/spark-shell --master yarn

在spark-shell中输入如下代码进行测试:

scala> val textFile = sc.textFile("hdfs://master:9000/README.md")
textFile: org.apache.spark.rdd.RDD[String] = hdfs://master:9000/README.md MapPartitionsRDD[3] at textFile at <console>:24

scala> textFile.count()
res2: Long = 99                                                                 

scala> textFile.first()
res3: String = # Apache Spark

用户在Hadoop Yarn集群管理Web界面查看所有应用的运行情况,可以在浏览器中输入地址进行查看(http://master:8088/cluster) ,如下图:
20161206_013

子雨大数据之Spark入门
扫一扫访问本博客