01-spark简介spark部署方式spark运行方式

Posted lihaozong2013

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01-spark简介spark部署方式spark运行方式相关的知识,希望对你有一定的参考价值。

1、定义

  Spark是由Scala编写的一个实时计算系统。

  Spark的API包括Java、Python、R、Scala.

2、功能

  Spark Core:

        ①将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。

        ②是Spark核心编程,类似Hadoop中的MR编程框架,但比MR拥有更丰富的算子,且几乎所有对数据的处理都放置在内存中,所以比MR更高效。

 

 

  Spark SQL: 类似Hive,但是Spark的SQL可以和SparkCore无缝集合,使用起来非常方便。对应的,MR和Hive并不能无缝集合。

  Spark Streaming: 类似Storm,用来进行流式处理。

  Spark MLlib: 用于机器学习,

  Graphx: 用于图计算。

3、部署方式

  ①YARN : 采用Yarn模式的话,其实就是把spark作为一个客户端提交作业给YARN,实际运行程序的是YARN。所以安装部署只需要在其中一台机器上安装spark就行。

  ②standalone: 使用spark内置的资源管理与调度器。

  注:还有其他的部署方式,比如Apache Mesos等。但是最常见的Spark on Yarn

4、Spark运行方式

    Spark程序,无论是Spark core、Spark Sql、Spark Streaming,都可以通过以下两种形式运行:

        ①Spark-shell 

            类似于scala的控制台,spark会自动帮我们做以下几件事情:

            1.会在启动spark-shell的机器的4040端口上绑定spark的web监控页面
            2.将SparkContext类的对象命名为sc
            3.将SparkSession类的对象命名为spark

            类型:
                ①spark-shell on StandaLone                    //可以使用shell连接内置的资源管理(standalone),进行任务提交,这里不研究
                ②spark-shell on YARN                    //可以使用shell连接yarn,进行任务提交。分为客户端、集群模式

                    1、spark on YARN 之 cluster 集群模式
                        
                        我们提交的spark应用程序对于YARN来说,也只不过是一个分布式应用程序而已,
                        在YARN看来,一个MR程序和一个spark程序是没有区别的。所以spark程序提交后,
                        同样要跟YARN申请一个Continer来启动当前spark程序的Application Master,
                        YARN会选择一个空闲的Datanode启动AM,其实这种情况下,Spark的Driver程序运行在AM内。

                        提交程序之后,客户端连接可以断开。

                    2、spark on YARN 之 client 客户端模式

                        同样会跟YARN申请Continer用以执行AM程序,但是这个AM的作用就只有向YARN申请资源这么一个功能了。
                        在这种情况下,Spark的Driver程序在提交程序的客户端执行,也就是说Driver程序没有在AM内运行。
                        这个时候我们可以利用spark-shell进行交互,连接不能断开,也就不能多用户操作

                注:在实际开发中我们都使用cluster模式。

            eg: sc.textFile("/spark/all").flatMap(line => line.split(" ")). map(word => (word, 1)).reduceByKey(_ + _). saveAsTextFile("/spark/wcall")

                    //在spark-shell中输入上述wordcount语句就行,因为自动构建了SparkContext对象

        ②spark-submit

            将程序打包成jar包,进行运行。
            自己创建SparkContext类的对象,自己确定什么时候程序终止退出等相关所有操作。
        
            命令:spark-submit --master yarn --deploy-mode cluster  bigdata-spark-test.jar

 

以上是关于01-spark简介spark部署方式spark运行方式的主要内容,如果未能解决你的问题,请参考以下文章

推荐系统-01-Spark电影推荐评估与部署

Spark学习笔记—01 Spark集群的安装

Note_Spark_Day01:Spark 框架概述和Spark 快速入门

Note_Spark_Day01:Spark 基础环境

Spark的工作原理

01 Spark源码编译