spark(1)

Spark

------------------------------------------------

  1.Lighting-fast cluster computing  快如闪电的计算

  2.大规模快速通用的计算引擎

  3.spark在内存中计算的速度是hadoop的百倍;在磁盘中计算是MapperReduce的10倍

  4.DAG:  //direct acycle graph,有向无环图

  5.易于使用:java /Scala/python  提供了80+算子(操作符),容易构建并行应用    并行:集群计算+并行计算     并发:并发执行

  6.通用:组合SQL,流计算

  7.运行:hadoop

Spark模块

--------------------------------------

  Spark core

  Spark SQL

  Spark Streaming  流计算

  Spark MLlib  机器学习

  Spark graph  图计算

到处运行

------------------------------------

  

体验spark

---------------------------------------

  0.sc

    SparkContext,Spark程序的入口点,封装了整个spark运行环境的信息

  1.进入spark-shell

      $>spark-shell

  2.API

---------------------------------------

   (1) SparkContext:Spark程序的入口点,封装了整个spark运行环境的信息

    Spark功能的主要入口点,代表到spark集群的链接,可以创建RDD弹性分布式数据集、累加器和广播变量

    每个JVM只能激活一个sparkContext对象,在创建新的sc之间,有stop掉active的sc

      SparkConf:spark配置对象,设置Spark应用的各种参数,kv对的形式

   (2)[RDD]  resilient distributed databaset弹性分布式数据集,等价于集合

  3.spark实现word count

  ---------------------------------------

//加载文件

val rdd1 = sc.textFile("/home/centos/test.txt")
val rdd2 = rdd1.flatMap(line=>line.split(" "))
val rdd3 = rdd2.map(word=>(word,1))
val rdd4 = rdd3.reduceByKey(_ + _)

  

   一行搞定单词统计:sc.textFile("/home/centos/test.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).collect

    单词过滤:sc.textFile("/home/centos/test.txt").flatMap(_.split(" ")).filter(_.contains("wor")).map((_,1)).reduceByKey(_ + _).collect

  4.编写scala程序,引入spark类库,完成wordCount

-------------------------------------------------------------------------------------

    (1)创建scala模块

1.创建Scala模块,并添加pom.xml
        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="http://maven.apache.org/POM/4.0.0"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>

            <groupId>com.it18zhang</groupId>
            <artifactId>SparkDemo1</artifactId>
            <version>1.0-SNAPSHOT</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.spark</groupId>
                    <artifactId>spark-core_2.11</artifactId>
                    <version>2.1.0</version>
                </dependency>
            </dependencies>
        </project>
        
    2.编写scala文件
        import org.apache.spark.{SparkConf, SparkContext}

        /**
          * Created by Administrator on 2017/4/20.
          */
        object WordCountDemo {
            def main(args: Array[String]): Unit = {
                //创建Spark配置对象
                val conf = new SparkConf();
                conf.setAppName("WordCountSpark")
                //设置master属性
                conf.setMaster("local") ;

                //通过conf创建sc
                val sc = new SparkContext(conf);

                //加载文本文件
                val rdd1 = sc.textFile("d:/scala/test.txt");
                //压扁
                val rdd2 = rdd1.flatMap(line => line.split(" ")) ;
                //映射w => (w,1)
                val rdd3 = rdd2.map((_,1))
                val rdd4 = rdd3.reduceByKey(_ + _)
                val r = rdd4.collect()
                r.foreach(println)
            }
        }

 

提交作业到spark集群运行

----------------------------------------------

  1.导出jar包

  2.spark-submit提交命令运行job

    $>spark-submit --master  local --name  WordCountDemo  --class  WordCountDemo scalaDemo1.jar   /home/centos/test.txt

  3.Spark2.1.0最新版是基于Scala2.11.8版本,因此安装scala2.11.8版本,否则如果基于2.12.0版本编译会出现包找不到的问题

Spark集群模式

-----------------------------------------

  1.local

    nothing

    spark-shell local;

  2.standalone独立模式

    独立模式。

    a)复制spark目录到其他主机

    b)配置其他主机的所有环境变量

      [/etc/profile]

      SPARK_HOME

      PATH

    c)配置master节点的slaves文件

      s202

      s203

      s204

    d)启动spark集群

      /soft/spark/sbin/start-all.sh

    e)查看进程

      $>xcall.sh jps

      master    //s201

      worker    //s202

      worker    //s203

      worker    //s204  

    f)验证webui

      http://s201:8080/

  3.提交作业jar到完全分布式spark集群

  ------------------------------------------------------------------------

    1)需要启动hadoop集群,主要是hdfs,不需要yarn ,只需要启动hdfs

      $>start-dfs.sh

    2)put文件到hadoop文件系统

    3)运行spark-submit命令

      

$>spark-submit --master spark://s201:7077 --name MywordVCount --class WordCountDemo  scalaDemo.jar hdfs://s201:8020/user/centos/test.txt

  3.脚本分析:

    [start-all.sh]

      先启动sbin/spark-config.sh 

    sbin/spark-master.sh    //启动master进程

    sbin/spark-slaves.sh    //启动worker进程

posted @ 2018-09-21 18:36  stone1234567890  阅读(173)  评论(0编辑  收藏  举报