zoukankan      html  css  js  c++  java
  • 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进程

  • 相关阅读:
    打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法
    基于 Windows Server 2008 的计算机对 Microsoft Dynamics CRM 4.0 的支持
    Microsoft Dynamics CRM 4.0 如何添加自定义按钮
    Microsoft Dynamics CRM 4.0 Plugin 取值,赋值,查询
    C# 中的 enum(枚举) 类型使用例子
    vue事件的绑定
    表单验证2
    node中模块
    node模块的引入
    node中的读文件
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9687977.html
Copyright © 2011-2022 走看看