1. 程式人生 > >spark概述和安裝部署

spark概述和安裝部署

初識 lock path memory 由於 flat 集群 worker opts

1、spark概述

  • 1、什麽是spark

    • 基於內存的計算引擎,它的計算速度非常快。但是spark僅僅只涉及到數據的計算,沒有涉及到數據的存儲。

  • 2、為什麽學習spark

    • 比mapreduce計算速度快很多。

  • 3、spark特點

    • 1、速度快

      • 比mapreduce在內存中快100x,在磁盤中快10x

        • 1、由於mapreduce每次job的中間結果數據都會落地到磁盤中,而spark每次中間結果數據可以不落地(可以保存在內存中)

        • 2、mapreduce任務對應都會產生一些map任務和reduce任務,這些任務都會以進程的方式運行在集群中,針對於spark任務,它是以線程的方式運行在spark集群中。

    • 2、易用性

      • 可以快速寫一個spark應用程序采用4中語言(java/scala/Python/R)

    • 3、通用性

      • 可以使用sparkSql /sparkStreaming/Mlib/Graphx

    • 4、兼容性

      • 可以把spark程序提交到不同的平臺中運行(standalone/yarn/mesos)

2、spark集群安裝部署

  • 1、下載spark安裝包

  • 2、規劃安裝目錄

  • 3、解壓安裝包到指定安裝目錄

  • 4、重明名安裝目錄

  • 5、修改配置文件

    • 1、vi spark-env.sh (mv spark-env.sh.template spark-env.sh)

      • 配置java環境變量

        • export JAVA_HOME=/export/servers/jdk

      • 配置master的地址

        • export SPARK_MASTER_HOST=node1

      • 配置master的端口

        • export SPARK_MASTER_PORT=7077

    • 2、vi slaves (mv slaves.template slaves)

      • 添加worker節點

        • node2

        • node3

  • 6、添加spark環境變量

    • vi /etc/profile


      export SPARK_HOME=/export/servers/spark
      export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
  • 7、分發spark安裝目錄到其他節點

    • scp -r spark root@node2:/export/servers

    • scp -r spark root@node3:/export/servers

    • scp /etc/profile root@node2:/etc

    • scp /etc/profile root@node3:/etc

  • 8、讓所有spark環境變量生效

    • 在所有節點執行

      • source /etc/profile

    ?

3、spark集群啟動和停止

  • 啟動spark集群

    • 在主節點上執行腳本

      • $SPARK_HOME/sbin/start-all.sh

  • 停止spark集群

    • 在主節點上執行腳本

      • $SPARK_HOME/sbin/stop-all.sh

4、spark集群web管理界面

  • spark web管理界面

    • 訪問地址:http://master的地址:8080

5、基於zookeeper的sparkHA高可用部署

  • 1、修改配置文件 vi spark-env.sh

    • 1、註釋掉手動指定的master地址

      • export SPARK_MASTER_HOST=node1

    • 2、添加配置參數 SPARK_DAEMON_JAVA_OPTS


      export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp-node-01:2181,hdp-node-02:2181,hdp-node-03:2181 -Dspark.deploy.zookeeper.dir=/spark"
  • 2、啟動zk集群

  • 3、啟動sparkHA

    • 可以在任意一臺機器上啟動腳本(它會在當前機器中產生一個Master進程) 前提條件:配置所有機器兩兩之間對應的ssh免登錄

      • start-all.sh

    • 可以在其他機器上單獨啟動master進程

      • start-master.sh

6、spark角色介紹

  • 1、Driver

    • 就是運行客戶端main方法,構建SparkContext對象

  • 2、Application

    • 包含driver代碼,還有當前這個任務計算所有需要的資源

  • 3、Master

    • 它是集群中老大,負責資源的分配和任務的調度

  • 4、ClusterManager

    • spark應用程序可以獲取的外部資源

      • Standalone

        • spark自帶的集群模式,資源的分配和任務調度由Master

      • Yarn

        • 資源的分配和任務調度由ResourceManager

      • Mesos

        • 是apache開源的一個資源調度框架。

  • 5、Worker Node

    • 集群中的小弟,負責任務計算的節點

    • Standalone: 通過slaves文件指定的節點

    • spark on yarn: yarn中的NodeManager節點

  • 6、executor

    • 它是一個進程,它會在worker節點上啟動

  • 7、task

    • 是以線程的方式運行在executor進程中

7、初識spark程序

  • 1、普通模式提交任務(已經知道活著的master地址)


    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master spark://node1:7077 \
    --executor-memory 1G \
    --total-executor-cores 2 \
    examples/jars/spark-examples_2.11-2.0.2.jar \
    10
  • 2、高可用模式提交任務(並不知道哪一個master是活著的master)


    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master spark://node1:7077,node2:7077,node3:7077 \
    --executor-memory 1G \
    --total-executor-cores 2 \
    examples/jars/spark-examples_2.11-2.0.2.jar \
    10

8、spark-shell使用

  • 1、spark-shell --master local[N] 讀取本地數據文件,實現單詞計數

    • --master local[N]

      • 指定master的地址為本地單機版模式 ,N是一個正整數,(local[2])表示本地采用2個線程來運行任務

    • 它會產生一個SparkSubmit進程


      sc.textFile("file:///root/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
      ?
      sc.textFile("file:///root/words.txt").flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey((x,y)=>x+y).collect
  • 2、spark-shell --master local[N] 讀取HDFS上數據文件,實現單詞計數

    • spark整合HDFS

      • vi spark-env.sh


      export HADOOP_CONF_DIR=/export/servers/hadoop/etc/hadoop

      sc.textFile("/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
  • 3、spark-shell --master 指定master為spark集群中活著的master,讀取HDFS上數據文件,實現單詞計數

    • spark-shell --master spark://node1:7077 --executor-memory 1g --total-executor-cores 2

spark概述和安裝部署