摘要:Spark作为新一代大数据计算引擎,因为内存计算的特性,具有比hadoop更快的计算速度。这里总结下对Spark的认识、虚拟机Spark安装、Spark开发环境搭建及编写第一个scala程序、运行第一个Spark程序。

1.Spark是什么

Spark是一个快速且通用的集群计算平台

2.Spark的特点

1)Spark是快速的

Spark扩充了流行的Mapreduce计算模型

Spark是基于内存的计算

2)Spark是通用的

Spark的设计容纳了其它分布式系统拥有的功能

批处理,迭代式计算,交互查询和流处理等

3)Spark是高度开放的

Spark提供了Python,Java,Scala,SQL的API和丰富的内置库。

Spark和其它的大数据工具整合的很好,包括hadoop,kafka等

3.Spark的组件

Spark包括多个紧密集成的组件

Spark Core:

  包含Spark的基本功能,包含任务调度,内存管理,容错机制等

  内部定义了RDDs(弹性分布式数据集)

  提供了很多APIs来创建和操作这些RDDs

  应用场景,为其他组件提供底层的服务

Spark SQL:

  是Spark处理结构化数据的库,就像Hive SQL,Mysql一样

  应用场景,企业中用来做报表统计

Spark Streaming:

  是实时数据流处理组件,类似Storm

  Spark Streaming提供了API来操作实时流数据

  应用场景,企业中用来从Kafka接收数据做实时统计

MLlib:

一个包含通用机器学习功能的包,Machine learning lib

包含分类,聚类,回归等,还包括模型评估和数据导入。

  MLlib提供的上面这些方法,都支持集群上的横向扩展。

  应用场景,机器学习。

Graphx:

  是处理图的库(例如,社交网络图),并进行图的并行计算。

  像Spark Streaming,Spark SQL一样,它也继承了RDD API。

  它提供了各种图的操作,和常用的图算法,例如PangeRank算法。

  应用场景,图计算。

Cluster Managers:

  就是集群管理,Spark自带一个集群管理是单独调度器。

  常见集群管理包括Hadoop YARN,Apache Mesos

4.紧密集成的优点

  Spark底层优化了,基于Spark底层的组件也得到了相应的优化。

  紧密集成,节省了各个组件组合使用时的部署、测试等时间。

  向Spark增加新的组件时,其它组件,可立刻享用新组件的功能。

5.Spark与Hadoop的比较

  Hadoop应用场景:离线处理、对时效性要求不高

  Spark应用场景:时效性要求高的场景、机器学习等领域

  Doug Cutting的观点:这是生态系统,每个组件都有其作用,各善其职即可。Spark不具有HDFS的存储能力,要借助HDFS等持久化数据。大数据将会孕育出更多的新技术。

6.Spark运行环境

  Spark是Scala写的,运行在JVM上,所以运行环境Java7+

  如果使用Python API,需要安装Python2.6+或者Python3.4+

  版本对应:Spark1.6.2 -  Scala2.10    Spark2.0.0 -  Scala2.11

7.Spark安装

  Spark下载地址:http://spark.apache.org/downloads.html     注:搭Spark不需要Hadoop,如有hadoop集群,可下载相应的版本。

  

  这里安装在CentOS6.5虚拟机上,将下载好的文件上传虚拟机,并执行解压:tar -zxvf spark-2.0.1-bin-hadoop2.6.tgz

  Spark目录:

    bin包含用来和Spark交互的可执行文件,如Spark shell。

    examples包含一些单机Spark job,可以研究和运行这些例子。

  Spark的Shell:

    Spark的shell能够处理分布在集群上的数据。

    Spark把数据加载到节点的内存中,因此分布式处理可在秒级完成。

    快速使用迭代式计算,实时查询、分析一般能够在shells中完成。

    Spark提供了Python shells和Scala shells。

  这里以Scala shell为例,演示读取本地文件并进行操作:

    进入Scala shell:./spark-shell

    

    创建测试文件helloSpark并输入内容:

    

    输入val lines=sc.textFile("/home/lucy/hellospark") 加载文件内容,输入lines.count()进行统计行数:    ( 注:sc为spark content)

    

  ssh的配置:(ssh localhost需要输入密码,这在运行spark程序时是不可以的)

    ssh-keygen (生成秘钥)

    .ssh目录下cat xxx_rsa.pub> authorized_keys

    chmod 600 authorized_keys

8.Spark开发环境搭建

  Scala 下载地址: http://www.scala-lang.org/download/2.11.6.html   注:默认安装选项会自动配置环境变量,安装路径不能有空格。

  IntelliJ IDEA 下载地址:https://www.jetbrains.com/idea/

  注册码地址:http://idea.lanyus.com

  由于这里下载的ideaIU-15.0.2.exe,已经包含有Scala插件,如果不包含需要下载。查看是否已有scala插件可以新建项目,打开Files->settings选择Plugins,输入scala查看:

  

9.编写第一个Scala程序

  依次点击File->New->Project,选择Scala->SBT,下一步,打开如下窗口:

  

  这里Scala选择为2.11.6,创建完成后会进行初始化操作,自动下载jar包等。下载时常看具体网络情况。待所有进度条完成后,项目目录已经出来了,如下:

  

  编辑build.sbt:

  name := "LearnSpark"

  version := "1.0"

  scalaVersion := "2.11.1"

  libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.0.2"

  编辑完成后,点击刷新,后台自动下载对应的依赖:

  

  src->scala右击新建scala类WordCount

  

import org.apache.spark.{SparkContext, SparkConf}
/**
* Created by Lucy on 2017/7/4.
*/
object WordCount {
def main(args: Array[String]) {
val conf=new SparkConf().setAppName("wordcount")
val sc=new SparkContext(conf)
val input=sc.textFile("/home/lucy/helloSpark")
val lines=input.flatMap(line=>line.split(" "))
val count=lines.map(word=>(word,1)).reduceByKey{case (x,y)=>x+y}
val output=count.saveAsTextFile("/home/lucy/hellosparkRes")
}
}

  代码编写完成后,进行打包(配置jar包,build):

  配置jar包:File->Project Structure,选择Artifacts,点击+号:

  

    

  这里不打包依赖。配置jar包完成后,Build->Build Artifacts,等待build完成。

10.运行第一个Spark程序

  这里需要先启动集群:

  启动master:  ./sbin/start-master.sh

  启动worker:  ./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost:7077

        这里的地址为:启动master后,在浏览器输入localhost:8080,查看到的master地址

        

  启动成功后,jps查看进程:

  

  接下来执行提交命令,将打好的jar包上传到linux目录,jar包在项目目录下的out\artifacts下。

  提交作业: ./bin/spark-submit --master spark://localhost:7077 --class WordCount /home/lucy/learnspark.jar

  可以在4040端口查看job进度:

  

  查看结果:

  

  由于按照空格分割字符串,所以这里将Spark! 视为一个单词。至此,任务运行结束!

Spark认识&环境搭建&运行第一个Spark程序的更多相关文章

  1. windows7 spark单机环境搭建及pycharm访问spark

    windows7 spark单机环境搭建 follow this link how to run apache spark on windows7 pycharm 访问本机 spark 安装py4j ...

  2. Go语言学习之1 基本概念、环境搭建、第一个Go程序

    一.环境搭建 见我的这篇博客 https://www.cnblogs.com/xuejiale/p/10258244.html 二.golang语言特性1. 垃圾回收    1) 内存自动回收,再也不 ...

  3. php环境搭建和第一个php程序

    一.开发环境搭建 因为是初学,使用的还是非常经典的组合appserv+dreamweaver cs6; 1.1   appserv安装 appserv的安装还是非常简单的,直接双击可执行程序appse ...

  4. git环境搭建以及第一个PHP程序

    使用mac下的sublime等编辑器帮助代码编写,然后到linux下运行网页代码.可以通过/vagrant共享目录完成,但是默认apache默认目录为/var/www/html,不想改变该目录,同时为 ...

  5. spark本地环境的搭建到运行第一个spark程序

    搭建spark本地环境 搭建Java环境 (1)到官网下载JDK 官网链接:https://www.oracle.com/technetwork/java/javase/downloads/jdk8- ...

  6. Hadoop+HBase+Spark+Hive环境搭建

    杨赟快跑 简书作者 2018-09-24 10:24 打开App 摘要:大数据门槛较高,仅仅环境的搭建可能就要耗费我们大量的精力,本文总结了作者是如何搭建大数据环境的(单机版和集群版),希望能帮助学弟 ...

  7. Spark编程环境搭建及WordCount实例

    基于Intellij IDEA搭建Spark开发环境搭建 基于Intellij IDEA搭建Spark开发环境搭——参考文档 ● 参考文档http://spark.apache.org/docs/la ...

  8. hadoop2.7.3+spark2.1.0+scala2.12.1环境搭建(4)SPARK 安装

    hadoop2.7.3+spark2.1.0+scala2.12.1环境搭建(4)SPARK 安装 一.依赖文件安装 1.1 JDK 参见博文:http://www.cnblogs.com/liugh ...

  9. win10下Spark的环境搭建

    win10下Spark的环境搭建 2018-08-19  18:36:45 一.jdk 1.8.0 安装与配置 二.scala 2.11.8 安装与配置http://www.scala-lang.or ...

随机推荐

  1. 《安卓网络编程》之第四篇 处理URL地址

    在Android手机系统中,可以通过URL地址获取网络资源.在URL类的众多方法中,可以使用openStream()方法来读取该URL资源的输入流InputStream.在此方法的基础上可以引申出很多 ...

  2. linux centos7.0安装subversion

    安装环境以及软件版本如下: subversion使用1.8.17版本,CentOS7.0(64位) 安装svn共需要使用如下软件,apr-1.5.2.tar.gz.apr-util-1.5.4.tar ...

  3. poj2069

    poj2069 题意 求一个覆盖所有点的最小球体的半径.即求空间内一点到所有点的距离的最大值最小的点. 分析 模拟退火算法,但这道题竟然不用随机函数就能过了,主要体现了算法的渐近收敛性, 起始点随意取 ...

  4. 看过WWDC2017的闲谈

    2017年6月6日凌晨的138分钟,是属于WWDC2017的. 鉴于时间问题,没有熬夜看,所以早上起来趁着公司不太忙就看了看.整体的内容没有太多变化,依然是苹果的主产品,不过这次的one more t ...

  5. Xamarin App文件(apk)大小和启动时间的影响因素

    Xamarin开发的时候大家都有一个疑问,就是apk文件会不会特别的大,启动会不会很慢.答案是肯定的,文件肯定大,启动肯定会慢,但是具体大多少.具体慢多少,有什么因素可以使apk文件稍微小一点.可以使 ...

  6. JavaScript面向对象轻松入门之抽象(demo by ES5、ES6、TypeScript)

    抽象的概念 狭义的抽象,也就是代码里的抽象,就是把一些相关联的业务逻辑分离成属性和方法(行为),这些属性和方法就可以构成一个对象. 这种抽象是为了把难以理解的代码归纳成与现实世界关联的概念,比如小狗这 ...

  7. 【Selenium】idea的selenium环境配置

    1.maven配置 下载地址:http://maven.apache.org/download.cgi# 下载内容:apache-maven-3.5.0-bin.zip 环境变量:M2_HOME:E: ...

  8. 用css控制字数,多余的用省略号代替

    选择器 { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100px; } white-space 属性 ...

  9. 表单格式化插件jquery.serializeJSON

    前言 前端在处理含有大量数据提交的表单时,除了使用Form直接提交刷新页面之外,经常碰到的需求是收集表单信息成数据对象,Ajax提交. 而在处理复杂的表单时,需要一个一个区手动判断处理字段值,显得非常 ...

  10. javascript所有的节点和方法

    属性: 1.Attributes 存储节点的属性列表(只读) 2.childNodes 存储节点的子节点列表(只读) 3.dataType 返回此节点的数据类型 4.Definition 以DTD或X ...