Spark學習筆記一java
初步認識sparkpython
1.什麼是spark?算法
spark是一個基於內存的,分佈式的,大數據的計算框架,能夠解決各類大數據領域的計算問題,提供了一站式的服務sql
Spark2009年誕生於伯克利大學的AMPLab實驗室編程
2010年正式開源了Spark項目架構
2013年Spark成爲Apache下的項目框架
2014年飛速發展,成爲Apache的頂級項目機器學習
2015年在國內興起,代替mr,hive,storm等編程語言
2.SparkCore :spark是用來取代Hadoop的?分佈式
這種說法是不對的,spark因爲只能作計算,因此取代掉MapReduce是沒有問題的,可是基於spark沒法存儲數據,因此其數據的存儲仍是要依賴於hdfs,資源調度能夠依賴於yarn,亦能夠依賴於其餘。
3.spark的功能?
①sparkCore 離線計算
②sparkSQL 交互式查詢
③sparkStreaming 實時的流式計算
④sparkGraphx 圖形計算
⑤spark mllib 機器學習 人工智能 其核心是算法
4.spark的特色及解釋?
spark的特色有:
①一站式:就是說spark能夠用一個技術堆棧就能夠解決大數據領域的全部的計算問題
②基於內存:這個特色也是spark的運行速度比Mr的速度快的緣由,由於spark是基於內存的,內存的
讀寫的速度要大大的超過磁盤,可是,有一些操做也是沒法避免的,spark也有shuffle,因此說最後的
結果也要落地,落地就i須要走磁盤。另外一方面的緣由就是spark是迭代式的計算框架,內部又有不少的
優化手段,DAG,切分STAGE,這一套機制能夠最大限度的優化計算的性能
5.sparkSQL和hive的關係?
hive 首先來講是一個數據倉庫,裏面放了不少的數據,其次hive還能夠經過sql作一些數據的離線批處理,
運行的是MapReduce。
spark SQL 確定不能夠用來作數據倉庫,但spark SQL也是經過寫sql的方式,作數據的離線計算,底層用的
是RDD。能夠直接操做hive
6.sparkStreaming和strom的關係?
strom有不少的有點,比較老了,若是說是純粹的實時(所有都是實時的業務),如今有一個更加優秀的解決方案
:flink,在一些絕大部分的場景下,sparkStreaming是能夠取代掉strom的
實時性,容錯都比sparkstreamming優秀
和sparkstreaming相比之下不足的地方:
吞吐量不如sparkstreaming,後者能夠方便的和spark SQL ,sparkCore,sparkMLlib無縫的結合
7.spark開發語言的選擇?
現現在關於spark的主流語言是scala,若是說是單純的大數據項目,scala較其餘語言相比更爲合適一些,可是也有不足的地方:會scala 的人太少,第二點就是因爲Scala和第三方的架構整合起來困難。
Java:現在最最主流的編程語言,整合第三方架構的時候也比較簡單,若是用java來寫spark的話,更爲適合寫一些比較複雜的大數據項目。
二者的相同之處在於:java能夠把代碼實現,scala也能夠把代碼實現
如今比較火的編程語言python,也能夠用來開發spark,不過略有不一樣於其餘兩種語言的是,python更傾向於機器學習,即(sparkMLlib),由於python的庫特別多,而機器學習的算法庫也有不少,因此python更多的時間用於機器學習。
轉載本文請和本文做者聯繫,本文來自博客園一襲白衣一