【Spark篇】---Spark初始
一、前述
Spark是基于內存的計算框架,性能要優于Mapreduce,可以實現hadoop生態圈中的多個組件,是一個非常優秀的大數據框架,是Apache的頂級項目。One stack? rule? them all? 霸氣。
但不同于MapReduce的是Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數據挖掘與機器學習等需要迭代的MapReduce的算法
二、具體細節
1、Spark與MapReduce的區別
?都是分布式計算框架,Spark基于內存,MR基于HDFS。Spark處理數據的能力一般是MR的十倍以上,Spark中除了基于內存計算外,還有DAG有向無環圖來切分任務的執行先后順序。
2、Spark運行模式
- Local
???????????? 多用于本地測試,如在eclipse,idea中寫程序測試等。
- Standalone
????????????? Standalone是Spark自帶的一個資源調度框架,它支持完全分布式。
- Yarn
????? ? ? ? ?? Hadoop生態圈里面的一個資源調度框架,Spark也是可以基于Yarn來計算的。
- Mesos
????????? 資源調度框架。
注意:要基于Yarn來進行資源調度,必須實現AppalicationMaster接口,Spark實現了這個接口,所以可以基于Yarn。
3、SparkCore
概念
RDD(Resilient Distributed Dateset),彈性分布式數據集。
RDD的五大特性:(比較重要)
?
?
備注:
1、textFile方法底層封裝的是讀取MR讀取文件的方式,讀取文件之前先split,默認split大小是一個block大小。每個split對應一個partition。
?
2、RDD實際上不存儲數據,存儲的是計算邏輯,這里方便理解,暫時理解為存儲數據。
?
3、什么是K,V格式的RDD?
- 如果RDD里面存儲的數據都是二元組對象,那么這個RDD我們就叫做K,V格式的RDD。
4、 哪里體現RDD的彈性(容錯)?
- partition數量,大小沒有限制,體現了RDD的彈性。Partiotion個數可以控制。可以提高并行度。
- RDD之間依賴關系,可以基于上一個RDD重新計算出RDD。
5、哪里體現RDD的分布式?
- RDD是由Partition組成,partition是分布在不同節點上的。 RDD提供計算最佳位置,體現了數據本地化。體現了大數據中“計算移動數據不移動”的理念。
4、Spark任務執行原理
?
以上圖中有四個機器節點,Driver和Worker是啟動在節點上的進程,運行在JVM中的進程。
- Driver與集群節點之間有頻繁的通信。
- Driver負責任務(tasks)的分發和結果的回收。任務的調度。如果task的計算結果非常大就不要回收了。會造成oom。
- Worker是Standalone資源調度框架里面資源管理的從節點。也是JVM進程。
- Master是Standalone資源調度框架里面資源管理的主節點。也是JVM進程。
5、Spark代碼流程
?? 1、創建SparkConf對象
?
?????? SparkConf conf = new SparkConf().setMaster("local").setAppName("xxx")
- 1.設置運行模式
- 2.設置application name
- 3.設置spark運行參數
?? 2、創建SparkContext對象
????????? 集群的唯一入口
?
?? 3、基于Spark的上下文創建一個RDD,對RDD進行處理。
????????? 由SparkContext創建RDD
?
?? 4、應用程序中要有Action類算子來觸發Transformation類算子執行。
?? 5、關閉Spark上下文對象SparkContext。
?
轉載于:https://www.cnblogs.com/LHWorldBlog/p/8401148.html
總結
以上是生活随笔為你收集整理的【Spark篇】---Spark初始的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据集划分问题
- 下一篇: display 的 32 种写法