21/08/2019
10.Spark概述
spark速度快的原因
1.記憶體計算 2.有向無環圖
通用性很強:
以前需要1.SQL查詢:spark SQL實作
2.流式計算:spark stremming 實作
3.機器學習: spark MLib
4.圖算法軟體:spark GraphX 實作
Spark vs hadoop
Hadoop : map reduce限制了表達能力;磁盤開銷大;讀寫延遲/分階段執行導緻延遲
Spark: 快速疊代(based on DAG);記憶體計算
11. spark生态系統
之前的生态系統需要:
批處理(hadoop)/互動查詢(impala)/流處理(storm)
缺點: 需要進行資料格式轉換/維護成本較高/資源利用不充分
而Spark 可支援各種學習,通過YARN 進行統一配置設定管理
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn1ENrRUTwcGVPpHOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5QTN0EDNxMjMxIDOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
12.基本概念和架構設計
RDD
DAG 有向無環圖
13.運作基本流程
Spark context代碼操作RDD,建構了DAG,交給DAG schedule分成很多階段stage,每個stage有很多任務(worker node來申請任務),task schedule将任務分發給nodes(優先給資料所在的節點),最後執行之後順着原路傳回。
22/08/2019
14/15/16.RDD運作原理
1. 概念,操作和特性
提供抽象資料結構,不管底層分布結構,實作邏輯關系(DAG),減少落磁盤。
一個隻讀的分區記錄集合:
分布式并行處理實作高效并行計算。
高度受限的共享記憶體模型:
隻讀,通過生成新的RDD來完成一個資料修改的目的。
兩種操作:action(動作型);transformation(轉換型)
粗粒度轉換:一次隻能對RDD全集進行轉換;spark不适合細粒度修改。
惰性處理:轉換操作隻記錄轉換軌迹,而不進行計算,當進行動作類型操作後才會進行真正的計算。
天然容錯性:有向無環圖記錄了軌迹,可以直接重新生成丢失資料。
中間過程持久化RDD.Cache(),節省序列化和反序列化開銷。
2. 依賴關系
寬依賴/窄依賴
判斷是否是寬依賴和窄依賴的關鍵:是否發生shuffle操作(洗牌)
發成shuffle操作就是寬依賴,沒有發生就是窄依賴。
窄依賴:1個父RDD對應1個子RDD/多個父RDD對應1個子RDD
寬依賴:1個父RDD對應多個RDD
窄依賴:可以進行流水線優化
寬依賴:不能進行流水線優化
fork/join優化: 遇到寬依賴shuffle必須要寫磁盤/等待操作,寬依賴必須要經曆等待。
16.Spark部署方式
單機部署
叢集管理:standalone/mesos(性能比較高)/YARN(叢集管理可連通hadoop等,最常用)
spark和mapreduce對等,但是hadoop裡面的HDFS和HBase存儲架構無法被spark取代。
回顧基本操作:
2/08/2019
19.安裝Spark
安裝hadoopjavahttp://dblab.xmu.edu.cn/blog/install-hadoop/
spark下載下傳http://spark.apache.org
spark version:2.4.0 pre-build with user-provided Apache Hadoop
Verify this release using the 2.4.3 signatures, checksums and project release KEYS.
0.配置spark的classpath解壓安裝包spark-2.4.3-bin-without-hadoop.tgz到 user/local/
$sudo tar -zxf~/下載下傳/spark-2.4.0-bin-without-hadoop.tgz-C /usr/local/
$cd usr/local
$sudo mv ./spark-2.4.0-bin-without-hadoop/ ./spark #更改檔案名
$sudo chown -R hadoop ./spark #此處hadoop改為系統使用者名
設定classpath
$ cd /usr/local/spark
$ cp ./conf/spark-env.sh.template ./conf/spark-env.sh
編輯配置檔案加入一行
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoopclasspath)
3.儲存之後就可以用spark通路
spark單機模式hadoop安裝成僞分布式
20.pyspark
指令參數進入環境local[*] pyspark --master<master-url>