Spark初识

Spark初识_第1张图片
Spark

科普

首先推荐一篇文章与 Hadoop 对比,如何看待 Spark 技术
里面有很多优秀的回答者,引用用心阁大神的回答来了解Spark是做什么的。

Apache Spark是一个新兴的大数据处理的引擎,主要特点是提供了一个集群的分布式内存抽象,以支持需要工作集的应用。
这个抽象就是RDD(Resilient Distributed Dataset),RDD就是一个不可变的带分区的记录集合,RDD也是Spark中的编程模型。Spark提供了RDD上的两类操作,转换和动作。转换是用来定义一个新的RDD,包括map, flatMap, filter, union, sample, join, groupByKey, cogroup, ReduceByKey, cros, sortByKey, mapValues等,动作是返回一个结果,包括collect, reduce, count, save, lookupKey。

简单来说,在大数据处理上,spark拥有计算速度快,更易上手,扩展性高,以及跨平台性能好的优点。

安装

我选择的是比较新的spark2.0.1版本spark-2.0.1-bin-hadoop2.7.tgz,从官网下好了放至服务器。

  1. 环境要求
  • Hadoop环境,可参考我上一篇博文CentOS7下搭建Hadoop2.7.3集群
  • scala安装配置。直接下载解压即可,顺手配置一下环境变量。
$ tar -zxvf scala-2.11.2.tgz
$  vi /etc/profile

#Scala Env
export SCALA_HOME=/data/soft/scala-2.11.2
export PATH=${SCALA_HOME}/bin:${PATH}
  1. 解压即安装
    我把scalaspark都解压安装在/data目录下。
    $ tar -zxvf spark-2.0.1-bin-hadoop2.7.tgz
  2. 配置
$ vi /data/spark-2.0.1-bin-hadoop2.7/conf/spark-env.sh.template

export HADOOP_CONF_DIR=/data/hadoop-2.7.3/etc/hadoop
export JAVA_HOME=/usr/java/jdk1.7.0_79
export SCALA_HOME=/data/soft/scala-2.11.2
export SPARK_HOME=/data/spark-2.0.1-bin-hadoop2.7

调试

  1. bin目录下启动spark-shell
    bin/spark-shell
    Spark初识_第2张图片
    启动截图

    出现以上界面代表安装并启动成功。
  2. 实现WordCount
```
//读取当前目录下的README.md并存到textFile中
scala> val textFile = sc.textFile("README.md")
textFile: org.apache.spark.rdd.RDD[String] = README.md MapPartitionsRDD[5] at textFile at :24

//按行解析,将每行的单词按mapreduce存储
scala> val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[8] at reduceByKey at :26

//存储wordCounts
scala> wordCounts.collect()
res0: Array[(String, Int)] = Array((package,1), (For,3), (Programs,1), (processing.,1), (Because,1), (The,1), (cluster.,1), (its,1), ([run,1), (than,1), (APIs,1), (have,1), (Try,1), (computation,1), (through,1), (several,1), (This,2), (graph,1), (Hive,2), (storage,1), (["Specifying,1), (To,2), (page](http://spark.apache.org/documentation.html),1), (Once,1), ("yarn",1), (prefer,1), (SparkPi,2), (engine,1), (version,1), (file,1), (documentation,,1), (processing,,1), (the,22), (are,1), (systems.,1), (params,1), (not,1), (different,1), (refer,2), (Interactive,2), (R,,1), (given.,1), (if,4), (build,4), (when,1), (be,2), (Tests,1), (Apache,1), (thread,1), (programs,,1), (including,3), (./bin/run-example,2), (Spark.,1), (package.,1), (1000).count(),1), (Versions,1), (HDFS,1), (Data.,1), (>>>,1...
  ```
3. 应用程序,根据API采用不同语言实现

参考

与 Hadoop 对比,如何看待 Spark 技术
Quick Start

你可能感兴趣的:(Spark初识)