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

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

 

上一篇:Hadoop(MapReduce)性能优化


下一篇:w10升级至W11系统,黑屏但鼠标与桌面快捷方式能用,如何解决