1. 程式人生 > >Spark 執行模式

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的值
*/