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进程

  • 相关阅读:
    【codeforces 723F】stSpanning Tree
    struts2.0中struts.xml配置文件详解
    存储过程中调用JAVA程序段
    本不该逃避
    利用js实现对页面的自动刷新
    [转]从硬盘安装 RedHat Enterprise Linux Server 5 iso
    正则表达式使用
    利用XmlBean轻松读写xml(转)
    Struts2+Spring2+Hibernate3 web应用示例(七)
    在DWR中实现直接获取一个JAVA类的返回值的两种方法
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9687977.html
Copyright © 2011-2022 走看看