Spark 运行模式

bin/spark-shell

  默认情况下,表示运行在local mode,在本地启动一个JVM Process,在里面运行一些线程进行数据处理,每个线程运行一个Task任务。

每个JVM Process中运行多少个线程Thread。可以通过 bin/spark-shell --master local 指定。

  • bin/spark-shell --master local 在JVM中运行单个线程
  • bin/spark-shell  --master local[k] k:表示运行k个Thread
  • bin/spark-shell --master local[*]  *表示的是当前机器CPU CORE为多少个就运行多少个Thread。

Spark Appplication 与 MapReduce Application 有点不一样
   spark-shell 运行的是一个Spark Application 在本地模式下
   在一个SparkApplication下会有多个Job
   对于MapReduce程序运行来说,
       一个Application就是一个Job
       重要一点:无论是MR还是SPark对数据分析处理,都是分而治之的思想,处理每一份数据,每个数据都是一个Task进行处理。
       MR: MapTask和ReduceTask -> JVM process
       Spark: Task -> Thread
       每个Task运行的时候,仅仅需要一个CPU CORE即可

 

Spark框架 最重要的一点,就是一个对数据分析处理的抽象
    RDD: Resilient Distributed Datasets
    数据结构:集合,类比于SCALA语言中集合类的List
    将要处理的数据封装放到一个集合RRD中,然后调用集合RDD中的函数(高阶函数)进行处理分析。
    -处理数据三步策略
        第一步、读取数据
            将要处理的数据转换为RDD(内存,将数据放在集合中)
        第二步、分析数据
            调用RDD中的高阶函数,处理后的数据结构为RDD
            RDD#func  -> RDD
        第三步、输出数据
            将处理数据的结果RDD输出到外部存储系统(HDFS或者数据库中)
            RDD#func -> 不是RDD

 

Spark Local Mode安装

 -1. 安装软件框架

JDK、SCALA、HDFS(伪分布式环境,启动NameNode和DataNode)

-2. 配置SPARK环境脚本

  $ cd  ${SPARK_HOME}/conf

 $ mv spark-env.sh.template spark-env.sh

增加配置:

   JAVA_HOME=/opt/modules/jdk1.7.0_67

  SCALA_HOME=/opt/modules/scala-2.10.4

  HADOOP_CONF_DIR=/opt/chd-5.3.6/hadoop-2.5.0-cdh5./etc/hadoop

-3.启动那个spark-shell

 在local mode 下

$ bin/spark-shell

从HDFS读取数据命令 

val rdd = sc.textFile("/datas/README.md")
/**
读取HDFS上的数据 textFile(),其实底层调用的是MapReduce中的InputFormat方法
读取数据一行一行的读取数据,并且每一行作为
一个(key,value)形式,此处仅获取value的值
*/

 

 


 

 

Spark 运行模式_第1张图片

你可能感兴趣的:(Spark学习笔记)