一苔货、簡(jiǎn)介
最初由美國(guó)加州伯克利大學(xué)實(shí)驗(yàn)室于2009年開(kāi)發(fā)狂男,2013年加入Apache開(kāi)源項(xiàng)目,開(kāi)始嶄露頭角脾拆。Spark是基于內(nèi)存計(jì)算的大數(shù)據(jù)并行計(jì)算框架馒索,可用于構(gòu)建大型、低延遲數(shù)據(jù)分析程序名船,成為Apache最重要的三大分布式計(jì)算系統(tǒng)開(kāi)源項(xiàng)目之一绰上。(Hadoop、Spark渠驼、Storm)Hadoop基于MapReduce進(jìn)行批量數(shù)據(jù)處理蜈块,Storm適合流式數(shù)據(jù)處理。
運(yùn)行速度測(cè)試:Spark/206個(gè)節(jié)點(diǎn)/23分鐘/100TB的排序迷扇。
二百揭、特點(diǎn)
1、運(yùn)行速度快:使用DAG執(zhí)行引擎以支持循環(huán)數(shù)據(jù)流與內(nèi)存計(jì)算蜓席。
2器一、容易使用:支持Scala/Java/Python/R語(yǔ)言進(jìn)行編程,可通過(guò)Spark Shell 進(jìn)行交互式編程厨内。
3祈秕、通用性渺贤,Spark提供了完整而強(qiáng)大的技術(shù)棧,包括支持內(nèi)存計(jì)算的Spark Core请毛,可以完成SQL查詢分析的Spark SQL志鞍,可以完成流式計(jì)算的Spark Streaming,機(jī)器學(xué)習(xí)組件Spark MLlib方仿、圖計(jì)算軟件GraphX述雾。
4、運(yùn)行模式多樣兼丰,可運(yùn)行于獨(dú)立的集群模式中,也可運(yùn)行于Hadoop中唆缴,并且可以訪問(wèn)Cassandra/HBase/Hive等多種數(shù)據(jù)源鳍征。
三、Scala簡(jiǎn)介
Scala兼容Java面徽,具有強(qiáng)大的并發(fā)性艳丛,很容易融入Hadoop生態(tài)圈。
四趟紊、Hadoop與Spark對(duì)比
1氮双、Hadoop缺點(diǎn):磁盤(pán)IO開(kāi)銷大,延遲高霎匈。
2戴差、Spark提供了內(nèi)存計(jì)算,可將結(jié)果表放到內(nèi)存中铛嘱。
五暖释、Spark生態(tài)系統(tǒng)
1、RDD:彈性分布式數(shù)據(jù)集 墨吓,分布式內(nèi)存球匕。
六、Spark SQL
僅僅依賴于HiveQL解析帖烘,Hive元數(shù)據(jù)亮曹,得到一個(gè)語(yǔ)法樹(shù)之后,自己實(shí)現(xiàn)秘症。
1照卦、與其他組件對(duì)比:
Hive:
構(gòu)建在Hadoop之上,查詢管理分布式存儲(chǔ)上的大數(shù)據(jù)集的數(shù)據(jù)倉(cāng)庫(kù)組件乡摹。底層使用MapReduce計(jì)算框架窄瘟,Hive查詢被轉(zhuǎn)化為MapReduce代碼并執(zhí)行。生產(chǎn)環(huán)境建議使用RDBMS存儲(chǔ)元數(shù)據(jù)趟卸。支持JDBC蹄葱、ODBC氏义、CLI等連接方式。
Spark SQL:
底層使用Spark計(jì)算框架图云,提供有向無(wú)環(huán)圖惯悠,比MapReduce更靈活。Spark SQL以Schema RDD為核心竣况,模糊了RDD與關(guān)系表之間的界線克婶。Schema RDD是一個(gè)由Row對(duì)象組成的RDD,附帶包含每列數(shù)據(jù)類型的結(jié)構(gòu)信息丹泉。Spark SQL復(fù)用Hive的元數(shù)據(jù)存儲(chǔ)情萤。支持JDBC、ODBC摹恨、CLI等連接方式筋岛,并提供多種語(yǔ)言的API。
Impala:
底層采用MPP技術(shù)晒哄,支持快速交互式SQL查詢睁宰。與Hive共享元數(shù)據(jù)存儲(chǔ)。Impalad是核心進(jìn)程寝凌,負(fù)責(zé)接收查詢請(qǐng)求并向多個(gè)數(shù)據(jù)節(jié)點(diǎn)分發(fā)任務(wù)柒傻。statestored進(jìn)程負(fù)責(zé)監(jiān)控所有Impalad進(jìn)程,并向集群中的節(jié)點(diǎn)報(bào)告各個(gè)Impalad進(jìn)程的狀態(tài)较木。catalogd進(jìn)程負(fù)責(zé)廣播通知元數(shù)據(jù)的最新信息红符。
另外,Spark Streaming 支持到秒級(jí)伐债,不支持到毫秒級(jí)违孝。