1. 安装
1.1 Spark的运行依赖于jvm ,所以需要先安装 JDK 1.7, 不需要安装Scala
1.2 下载预编译好的Spark 解压
$ tar -xvf spark-1.5.2-bin-hadoop2.4.tgz
3 单机运行
./bin/spark-shell
或者指定master
./bin/spark-shell --master local[2] #本地模式两线程运行
4 集群模式
4.1 需要先安装Hadoop 集群,详见 Hadoop2集群安装
4.2 注释 spark-defaults.conf
spark.master spark://master:7077
4.3 在master 上配置conf/slaves, 添加Spark worker的hostname, 一行一个。
$ vim slaves slave01 slave02 # save and exit
4.4 修改配置spark-env.sh
$ cp ./conf/spark-env.sh.template ./conf/spark-env.sh $ vim ./conf/spark-env.sh #增加以下内容 export SPARK_WORKER_INSTANCES=3 export SPARK_MASTER_WEBUI_PORT=8080 #查看集群运行情况的WEB UI的端口号 export SPARK_WORKER_PORT=8081 #worker的端口号
把master上的这个文件拷贝到所有的worker, 注意,三台机器spark所在目录必须一致,因为master会登陆到worker上执行命令,master认为worker的spark路径与自己一样。
启动 Spark 集群
在master上执行
$./bin/start-all.sh
停止 Spark 集群
在master上执行
$./bin/stop-all.sh
Spark History Server 安装,详见 http://www.php3.cn/a/171.html
运行模式
- 本地模式
- Standalone模式
- Mesoes模式
- yarn模式
-
Standalone –
spark-shell --master spark://host:port
-
Apache Mesos –
spark-shell --master mesos://host:port
-
Hadoop YARN –
spark-shell --master yarn
-
如果以本地模式运行,则为
spark-shell --master local
。
Standalone 模式
该模式中,资源调度是Spark框架自己实现的,其节点类型分为Master和Worker节点,其中Driver节点运行在Master节点中,并且有常驻内存的Master进程守护,Worker节点上常驻Worker守护进程,负责与Master通信。
Standalone 模式是Master-Slaves架构的集群模式,Master存在着单点故障问题,目前,Spark提供了两种解决办法:基于文件系统的故障恢复模式,基于Zookeeper的HA方式。
Standalone 模式需要在每一个节点部署Spark应用,并按照实际情况配置故障恢复模式。
运行 Spark 示例
Spark 安装包下载的示例代码都在 examples/src/main 目录下面,可以通过运行 bin/run-example
示例1 使用spark-shell
./spark-shell
... scala> val days = List("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday") days: List[String] = List(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday) scala> val daysRDD =sc.parallelize(days) daysRDD: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at:14 scala>daysRDD.count() scala>res0:Long =7
示例2 运行Spark自带的example中的SparkPi
[root@localhost]# ./bin/run-example SparkPi 10spark:
//
master01:7077
输出的日志分为两部分,一部分是通用日志信息,它由后面会介绍的一系列脚本及程序产生,另一部分是运行程序的输出结果,此处是计算 PI 的输出结果。
示例3 从HDFS读取文件并运行WordCount
$ hadoop fs -put README.md . $ ./spark-shell MASTER=spark://master01:8070 scala> val file = sc.textFile("hdfs://master01:9000/user/dev/README.md") scala> val count = file.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_+_) scala> count.collect()