学习笔记Spark(一)—— Spark入门
一、Spark簡介
什么是Spark?
- 快速、分布式、可擴展、容錯的集群計算框架;
- Spark是基于內存計算的大數據分布式計算框架;
- 低延遲的復雜分析;
- Spark是Hadoop MapReduce的替代方案。
二、Spark的發展歷史
對于一個具有相當技術門檻與復雜度的平臺,Spark從誕生到正式版本的成熟,經歷的時間如此之短,讓人感到驚詫。目前,Spark已經成為Apache軟件基金會旗下的頂級開源項目。下面是Spark的發展歷程簡述:
- 2009年,Spark誕生于伯克利大學AMPLab,最初屬于伯克利大學的研究性項目,實驗室的研究人員之前基于Hadoop MapReduce工作,他們發現MapReduce對于迭代和交互式計算任務效率不高,因此他們研究的Spark主要為交互式查詢和迭代算法設計,支持內存存儲和高效的容錯恢復。
- 2010年Spark正式開源。
- 2013年6月成為了Apache基金會的孵化器項目。
- 2014年2月,僅僅經歷8個月的時間Spark就成為Apache基金會的頂級項目,同時,大數據公司Cloudera宣稱加大Spark框架的投入來取代MapReduce。
- 2014年5月,Pivotal Hadoop集成Spark全棧,同月30日,Spark1.0.0發布。
- 2015年Spark增加了新的DataFrames API和Dataset API
- 2016年Spark2.0發布,Spark2.0與1.0的區別主要是2.0修訂了API的兼容性問題。
- 2017年在美國舊金山舉行Spark Summit 2017,會議介紹2017年Spark的重點開發方向是深度學習以及對流性能的改進。
三、Spark的特點
1、快速
一般情況下,對于迭代次數較多的應用程序,Spark程序在內存中的運行速度是Hadoop MapReduce運行速度的100多倍,在磁盤上的運行速度是Hadoop MapReduce運行速度的10多倍。
2、易用性
Spark支持使用Scala、Python、Java及R語言快速編寫應用。同時Spark提供超過80個高級運算符,使得編寫并行應用程序變得容易并且可以在Scala、Python或R的交互模式下使用Spark。
3、通用性
Spark可以與SQL、Streaming及復雜的分析良好結合。Spark還有一系列的高級工具,包括Spark SQL、MLlib(機器學習庫)、GraphX(圖計算)和Spark Streaming,并且支持在一個應用中同時使用這些組件
4、隨處運行
用戶可以使用Spark的獨立集群模式運行Spark,也可以在EC2(亞馬遜彈性計算云)、Hadoop YARN或者Apache Mesos上運行Spark。并且可以從HDFS、Cassandra、HBase、Hive、Tachyon和任何分布式文件系統讀取數據
5、代碼簡潔
四、Spark的生態圈
(1)Spark Core:Spark核心,提供底層框架及核心支持。包含Spark的基本功能,包括任務調度、內存管理、容錯機制等。Spark Core內部定義了RDDS,并提供了很多API來創建和操作RDD
(2)BlinkDB:一個用于在海量數據上運行交互式SQL查詢的大規模并行查詢引擎,它允許用戶通過權衡數據精度來提升查詢響應時間,其數據的精度被控制在允許的誤差范圍內。
(3)Spark SQL:可以執行SQL查詢,包括基本的SQL語法和HiveQL語法。讀取的數據源包括Hive表、Parquent文件、JSON數據、關系數據庫(如MySQL)等。
(4)Spark Streaming:流式計算。比如,一個網站的流量是每時每刻都在發生的,如果需要知道過去15分鐘或一個小時的流量,則可以使用Spark Streaming來解決這個問題。
(5)MLBase:MLBase是Spark生態圈的一部分,專注于機器學習,讓機器學習的門檻更低,讓一些可能并不了解機器學習的用戶也能方便地使用MLBase。MLBase分為四部分:MLlib、MLI、ML Optimizer和MLRuntime。
(6)MLlib:MLBase的一部分,MLlib是Spark的數據挖掘算法庫,實現了一些常見的機器學習算法和實用程序,包括分類、回歸、聚類、協同過濾、降維以及底層優化。
(7)GraphX:圖計算的應用在很多情況下處理的數據都是很龐大的,比如在移動社交上面的關系等都可以用圖相關算法來進行處理和挖掘,但是如果用戶要自行編寫相關的圖計算算法,并且要在集群中應用,那么難度是非常大的。而使用Spark GraphX就可以解決這個問題,它里面內置了很多的圖相關算法。
(8)SparkR:SparkR是AMPLab發布的一個R開發包,使得R擺脫單機運行的命運,可以作為Spark的Job運行在集群上,極大地擴展了R的數據處理能力。
五、Spark的應用場景舉例
騰訊廣告
廣點通是最早使用Spark的應用之一。騰訊大數據精準推薦借助Spark快速迭代的優勢,圍繞“數據+算法+系統”這套技術方案,實現了在“數據實時采集、算法實時訓練、系統實時預測”的全流程實時并行高維算法,最終成功應用于廣點通pCTR投放系統上,支持每天上百億的請求量。
Yahoo
Yahoo將Spark用在Audience Expansion中。Audience Expansion是廣告中尋找目標用戶的一種方法,首先廣告者提供一些觀看了廣告并且購買產品的樣本客戶,據此進行學習,尋找更多可能轉化的用戶,對他們定向廣告。Yahoo采用的算法是Logistic Regression。同時由于某些SQL負載需要更高的服務質量,又加入了專門跑Shark的大內存集群,用于取代商業BI/OLAP工具,承擔報表/儀表盤和交互式/即席查詢,同時與桌面BI工具對接。
淘寶
淘寶技術團隊使用了Spark來解決多次迭代的機器學習算法、高計算復雜度的算法等,將Spark運用于淘寶的推薦相關算法上,同時還利用GraphX解決了許多生產問題,包括以下計算場景:基于度分布的中樞節點發現、基于最大連通圖的社區發現、基于三角形計數的關系衡量、基于隨機游走的用戶屬性傳播等。
總結
以上是生活随笔為你收集整理的学习笔记Spark(一)—— Spark入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记Hive(九)—— 实例:航空客
- 下一篇: 学习笔记Spark(二)—— Spark