-
Hadoop應用場景:離線處理、對時效性要求不高(執(zhí)行時間幾分鐘到幾小時不等);
Spark應用場景:時效性要求高的場景、機器學習等領(lǐng)域。
兩者比較:
這是生態(tài)系統(tǒng),每個組件都有其作用,各善其職即可;
Spark不具有HDFS的存儲能力,要借助HDFS等持久化數(shù)據(jù);
大數(shù)據(jù)將會孕育出更多的新技術(shù)
查看全部 -
緊密集成的優(yōu)點:
Spark底層優(yōu)化了,基于Spark底層的組件,也得到了相應的優(yōu)化
緊密集成,節(jié)省了各個組件組合使用時的部署、測試等時間
向Spark增加新的組件時,其他組件,可立即享用新組件的功能
查看全部 -
1、Spark是一個快速且通用的集群計算平臺
2、Spark是快速的
????Spark擴充了流行的MapReduce計算模型
????Spark是基于內(nèi)存的計算
3、Spark是通用的
????Spark的設計容納了其他分布式系統(tǒng)擁有的功能
????批處理、迭代式計算、交互查詢和流處理等
????優(yōu)點:降低了維護成本
4、Spark是高度開放的
????Spark提供了Python、Java、Scala、SQL的API和豐富的內(nèi)置庫
????Spark和其他的大數(shù)據(jù)工具整合的很好,包括Hadoop、kafka等
查看全部 -
spark core功能
查看全部 -
spark組件
查看全部 -
課程框架查看全部
-
Spark簡介
Spark是什么:
Spark是一個快速且通用的集群計算平臺
Spark的特點
Spark提供了Python, Java, Scala, SQL的API和豐富的內(nèi)置庫。
Spark和其他的大數(shù)據(jù)工具整合的很好,包括Hadoop, Kafka等
Spark的設計容納了其他分布式系統(tǒng)擁有的功能,批處理,迭代式計算,交互查詢和流處理等。
優(yōu)點:降低了維護成本
Spark擴充了流行的MapReduce計算模型
Spark是基于內(nèi)存的計算?
Spark是快速的
Spark是通用的
Spark是高度開放的
Spark歷史
?誕生于2009年,加州大學伯克利分校RAD實驗室的一個研究項目,最初是基于Hadoop MapReduce
發(fā)現(xiàn)MapReduce在迭代式計算和交互式上抵消,引入內(nèi)存存儲
2010年3月份Spark開源
2011年AMP實驗室在Spark上開發(fā)高級組件,像Spark Streaming
2013年轉(zhuǎn)移到了Apache下,不久便成為頂級項目了。
Spark組件:Spark包含多個緊密集成的組件
Spark底層優(yōu)化了,基于Spark底層的組件,也得到了相應的優(yōu)化。
緊密集成,節(jié)省了各個組件組合使用時的部署,測試等時間。
向Spark增加新的組件時,其他組件,可立刻享用新組件的功能。
就是集群管理,Spark自帶一個集群管理是單獨調(diào)度器。
常見集群管理包括Hadoop YARN, Apache Mesos。
是處理圖的庫(例如,社交網(wǎng)絡圖),并進行圖的并行計算。
像Spark Streaming, Spark SQL一樣, 它也集成了RDD API。
它提供了各種圖的操作,和常用的圖算法,例如PangeRank算法。
應用場景,圖計算
一個包含通用機器學習功能的包,Machine learning lib.
包含分類,聚類,回歸等,還包括模型評估,和數(shù)據(jù)導入。
Milb提供的上面這些方法,都支持集群上的橫向擴展。
應用場景,機器學習。
是實施數(shù)據(jù)流處理的組件,類似Storm。
Spark Streaming提供了API來操作實施流數(shù)據(jù)。
應用場景,企業(yè)中用來從Kafka接受數(shù)據(jù)做實時統(tǒng)計。
是Spark處理結(jié)構(gòu)化數(shù)據(jù)的庫,就像Hive SQL,MySQL一樣。
應用場景,企業(yè)中用來做報表統(tǒng)計。
包含Spark的基本功能,包含任務調(diào)度,內(nèi)存管理,容錯機制等。
內(nèi)部定義了RDDs(彈性分布式數(shù)據(jù)集)
提供了很多API來創(chuàng)建和操作這些RDDs。
應用場景,為其他組件提供底層的服務。
Spark Core:?
Spark SQL:
Spark Streaming:
Mlib:
Graphx:
Cluster Managers:
緊密集成的優(yōu)點:
Spark與Hadoop的比較
Doug Cutting(Hadoop之父)的觀點
這是生態(tài)系統(tǒng),每個組件都有其作用,各善其職即可。
Spark不具有HDFS的存儲能力,要借助HDFS等持久化數(shù)據(jù)。
大數(shù)據(jù)將會孕育出更多的新技術(shù)。
時效性要求高的場景
機器學習等領(lǐng)域
離線處理
對時效性要求不高
Hadoop應用場景
Spark應用場景
比較
Spark安裝
配置ssh無密登陸:
WordCount:
ssh-keygen
.ssh目錄下cat xxx_rsa.pub > authorized_keys
chmod 600 authorized_keys?
創(chuàng)建一個Spark Context
加載數(shù)據(jù)
把每一行分割成單詞
轉(zhuǎn)換成pairs并且計數(shù)
Scala安裝:
IDEA下載
插件安裝:Scala
搭建開發(fā)環(huán)境常遇到的問題
IntelliJ IDEA 常用設置
網(wǎng)絡問題,導致sbt插件下載失敗,解決方法,找一個好的網(wǎng)絡環(huán)境。
版本匹配問題:Scala2.10.5, jdk1.8
Spark的shell使你能夠處理分布在集群上的數(shù)據(jù)。
Spark把數(shù)據(jù)加載到節(jié)點的內(nèi)存中,因此分布式處理可在秒級完成。
快速使迭代式計算,實時查詢,分析一般能夠在shell中完成。
Spark提供了Python shells和Scala shells。
Python Shell:
Scala Shell
bin/pyspark
var lines = sc.textFile("../testfile/helloSpark")
lines.conut()
lines.first()
修改日志級別log4j.rootCategory=WARN, console
bin/spark-shell
```
```
bin:包含用來和Spark交互的可執(zhí)行未見,如Spark shell。
core, streaming, python, ...包含主要組件的源代碼。
examples包含一些單機的Spark jobs,可以單機運行的例子。
下載地址:http://spark.apache.org/downloads.html
搭Spark不需要Hadoop,如有hadoop集群,可下載相應的版本解壓。
Spark 是scala寫的,運行在JVM上,所以運行環(huán)境Java7+
如果使用Python API,需要安裝Python 2.6+或者Python3.4+。
Spark 1.6.2 -Scala 2.10? Spark 2.0.0 -Scala 2.11
Spark運行環(huán)境
Spark下載:
Spark目錄
Spark的Shell
Spark開發(fā)環(huán)境的搭建
開發(fā)第一個Spark程序
RDDs介紹
Scala的變量聲明
Scala的匿名函數(shù)和類型推斷
val:變量值是不可修改的,類似java final。
var:變量值定義完是可以修改的。
創(chuàng)建變量是val/var
lines.filter(line => line.contains("world")),定義一個匿名函數(shù),接受line.
使用line這個Strig類型的變量上的contains方法,并且返回結(jié)果
line不需要制定類型,會自動推斷
把一個存在的集合傳給SparkContext的parallelize()方法,測試用
加載外部數(shù)據(jù)集
val rdd = sc.parallelize(Array(1, 2, 2, 4), 4)
第1個參數(shù):待并行化處理的集合
第2個參數(shù):分區(qū)個數(shù)
val rddText = sc.textFile("helloSpark.txt")
每個分片包括一部分數(shù)據(jù),partitions可在集群不同節(jié)點上計算。
分片是Spark并行處理的單元,Spark順序的,并行的處理分片。
Resilient distributed datasets(彈性分布式數(shù)據(jù)集,簡稱RDDs)
這些RDDs,并行的分布在整個集群中。
RDDs是Spark分發(fā)數(shù)據(jù)和計算的基礎抽象類。
一個RDD是一個不可改變的分布式集合對象。
Spark中,所有的計算都是通過RDDs的創(chuàng)建,轉(zhuǎn)換,操作完成的。
一個RDD內(nèi)部有很多partition(分片)組成的。
Driver programs通過SparkContext對象訪問Spark。
SparkContext對象代表和一個集群的連接。
在Shell中SparkContext自動創(chuàng)建好了,就是sc。
包含程序的main()方法,RDDs的定義和操作。
它管理很多節(jié)點,我們稱作executors。
Driver program:
SparkContext:
RDDs:
分片:
RDDs的創(chuàng)建方法:
Scala的基礎知識
RDD基本操作 Transformation
RDDs支持數(shù)學集合的計算,例如并集,交集計算。
map(): map()接收函數(shù),把函數(shù)應用到RDD的每一個元素,返回新的RDD。
filter(): filter()接受函數(shù),返回只包含滿足filter()函數(shù)的元素的新RDD。
flatMap():?flatMap()對每個輸入元素,輸出多個輸出元素。flat壓扁的意思,將RDD中的元素壓扁后返回一個新的RDD。
轉(zhuǎn)換
從之前的RDD構(gòu)建一個新的RDD,像map() 和 filter()。
Transformations介紹:
逐元素Transformation
集合運算
RDD基本操作 Action
Action介紹:在RDD上計算出來一個結(jié)果。把結(jié)果返回給driver program或保存在文件系統(tǒng),count(), save()
collect(): 返回RDD的所有元素。
count(): 計數(shù)。
countByValue(): 返回一個map表示唯一元素出現(xiàn)的個數(shù)。
take(num): 返回幾個元素。
top(num): 返回前幾個元素。
takeOrdered(num)(ordering): 返回基于提供的排序算法的前幾個元素。
takeSample(withReplacement, num, [seed]): 取樣例。
reduce(fun): 合并RDD中元素。
fold(zero)(fun): 與reduce()相似提供zero value。
aggregate(zeroValue)(seqOp, combOp): 與fold()相似,返回不同類型。
foreach(fun): 對RDD的每個元素作用函數(shù),什么也不返回
RDDs的特性
默認每次在RDDs上面進行action操作時,Spark都重新計算RDDs,如果像重復利用一個RDD,可以使用RDD.persist()。
unpersist()方法從緩存中移除。
例子RDD.persist()
Spark對RDDs的計算是,他們第一次使用action操作的時候。
這種方式在處理大數(shù)據(jù)的時候特別有用,可以減少數(shù)據(jù)的傳輸。
Spark內(nèi)部記錄metadata表明transformations操作已經(jīng)被響應了。
加載數(shù)據(jù)也是延遲計算,數(shù)據(jù)只有在必要的時候,才會被加載進去。
Spark維護著RDDs之間的依賴關(guān)系和創(chuàng)建關(guān)系,叫做血統(tǒng)關(guān)系圖
Spark使用血統(tǒng)關(guān)系圖來計算每個RDD的需求和恢復丟失的數(shù)據(jù)
RDDs的血統(tǒng)關(guān)系圖:
延遲計算(Lazy Evaluation):
RDD.persist(): 持久化
KeyValue對RDDs
使用map()函數(shù),返回key/value對,例如,包含數(shù)行數(shù)據(jù)的RDD,把每行數(shù)據(jù)的第一個單詞作為keys
KeyValue對RDDs的Transformations
combineByKey(createCombiner, mergeValue, mergeCombiners, partitioner)
reduceByKey(fun): 把相同Key的結(jié)合。
groupByKey(): 把相同的key的values分組。
combineByKey(): 把相同key的結(jié)合,使用不同的返回類型。
mapValues(fun): 函數(shù)作用于pairRDD的每個元素,key不變
flatMapValues(fun): 符號化的時候使用
keys: 僅返回keys
values: 僅返回values
sortByKey(): 按照key排序的RDD
最常用的基于key的聚合函數(shù),返回的類型可以與輸入類型不一樣,許多基于key的聚合函數(shù)都用到了它,像groupByKey()
原理,便利partition中的元素,元素的key,要么之前見過的,要么不是。如果是新元素,使用我們提供的createCombiner()函數(shù),如果是這個partition中已經(jīng)存在的key,就會使用mergeValue()函數(shù),合計每個partition的結(jié)果的時候,使用mergeCombiners()函數(shù)
創(chuàng)建KeyValue對RDDs
Spark基礎課程總結(jié)
Spark介紹。
Spark安裝,開發(fā)環(huán)境搭建,WordConut程序開發(fā)和運行。
RDDs介紹,Transformations,Actions
RDDs的特性,KeyValue對RDDs
后續(xù)課程:
Spark架構(gòu)
Spark運行過程
Spark程序部署
查看全部 -
rdds的特性
rdd.persist()可以傳入一個級別,表示是否存在內(nèi)存中或硬盤上,以及是否執(zhí)行序列化操作等,級別不同,對應占用空間和cpu消耗情況是不一樣的。
查看全部 -
RDD不可改變的分布式數(shù)據(jù)集合對象
所有的計算都是RDD的生成,轉(zhuǎn)換操作完成
一個RDD內(nèi)部由許多partitions分片組成
分片是并行處理單元, spark底層會并行的,或者順行的處理。
查看全部 -
Hadoop適合處理離線的靜態(tài)的大數(shù)據(jù)
Spark適合處理離線的流式的大數(shù)據(jù)
Storm適合處理在線的實時的大數(shù)據(jù)查看全部 -
1、Spark底層優(yōu)化了,基于Spark底層的組件,也得到了相應的優(yōu)化。
2、緊密集成,節(jié)省了各個組件組合使用時的部署,測試等時間。
3、向Spark增加新的組件時,其他組件可以立刻享用新組件的功能
Spark Core:
1、包含Spark的基本功能,包含任務調(diào)度,內(nèi)存管理,容錯機制等。
2、內(nèi)部定義了RDDs(彈性分布式數(shù)據(jù)集)。
3、提供了很多APIs來創(chuàng)建和操作這些RDDs。
應用場景,為其他組件提供底層的方服務。
查看全部 -
spark是快速的
Spark擴充了流行的Mapreduce計算模型
Spark是基于內(nèi)存的計算
spark是通用的
容納了其他分布式系統(tǒng)擁有的功能:批處理、迭代式計算、交互查詢和流處理,方便維護
優(yōu)點:降低了維護成本
spark是高度開放的
提供了python、java、scala、SQL的API和豐富的內(nèi)置庫(Scala是spark的原生語言)
和其他的大數(shù)據(jù)工具整合的很好,包括hadoop、kafka等
查看全部 -
Spark是一個快速且通用的集群計算平臺查看全部
-
20套大數(shù)據(jù)可視化HTML模板源碼。下載地址:http://www.wlkq.online查看全部
-
Spark的含義:是一個快速且通用的集群計算平臺
Spark的特點:
spark是快速的
Spark擴充了流行的Mapreduce計算模型
Spark是基于內(nèi)存的計算
spark是通用的
容納了其他分布式系統(tǒng)擁有的功能:批處理、迭代式計算、交互查詢和流處理,方便維護
優(yōu)點:降低了維護成本
spark是高度開放的
提供了python、java、scala、SQL的API和豐富的內(nèi)置庫(Scala是spark的原生語言)
和其他的大數(shù)據(jù)工具整合的很好,包括hadoop、kafka等
查看全部
舉報