編輯推薦
Spark被稱為大數據處理王者技術Hadoop的真正挑戰者。本書以豐富示例介紹Spark程序和數據挖掘算法設計,更好地幫助Spark開發者提高學習效率。
內容簡介
本書以時下流行的Hadoop所存在的缺陷為齣發點,深入淺齣地介紹瞭下一代大數據處理核心技術Spark的優勢和必要性,並以簡潔的指引步驟展示瞭如何在10分鍾內建立一個Spark大數據處理環境。在此基礎上,本書以圖文並茂和豐富的示例代碼講解的形式係統性地揭示瞭Spark的運行原理、算子使用、算法設計和優化手段,為讀者提供瞭一個快速由淺入深掌握Spark基礎能力和高級技巧的參考書籍。
本書共六章,涉及的主題主要包括大數據處理技術從Hadoop發展到Spark的必然性、快速體驗Spark的指引、Spark架構和原理、RDD算子使用方法和示例、Spark算法設計實例、Spark程序優化方法。
本書適閤需要使用Spark進行大數據處理的程序員、架構師和産品經理作為技術參考和培訓資料,亦可作為高校研究生和本科生教材。
作者簡介
劉軍,男,1976年生人,博士,副教授,碩士生導師,北京郵電大學數據科學中心主任。
2003年至2007年任職於IBM中國研究院,擔任高級研究員及部門經理,建立IBM中國研究院電信融閤網絡管理研究方嚮,主持研發Websphere及Tivoli電信産品綫中多項關鍵技術,期間發錶多篇國際會議及刊物論文,並申請獲得多項美國專利。
2007年至2012年創辦歡城(北京)科技有限公司,開創中國無端網絡遊戲産業,並擔任中國軟件協會網頁遊戲專業委員會委員。公司産品多次榮獲國內互聯網業界奬項,2008年獲中國互聯網協會“十分具運營價值Webgame”奬項,
2012年至今在北京郵電大學信息與通信工程學院任教,研究方嚮為電信及互聯網大數據分析、高速數據流挖掘算法,並牽頭組建北京郵電大學數據科學中心。開設研究生課程《海量數據處理中的雲計算》,發錶大數據分析相關SCI/EI檢索論文十餘篇,並獨著《Hadoop大數據處理》一書,該書被哈工大、中南大學等多所高校的相關課程作為教材使用。
內頁插圖
目錄
第1章從Hadoop到Spark
1.1Hadoop——大數據時代的火種
1.1.1大數據的由來
1.1.2Google解決大數據計算問題的方法
1.1.3Hadoop的由來與發展
1.2Hadoop的局限性
1.2.1Hadoop運行機製
1.2.2Hadoop的性能問題
1.2.3針對Hadoop的改進
1.3大數據技術新星——Spark
1.3.1Spark的齣現與發展
1.3.2Spark協議族
1.3.3Spark的應用及優勢
第2章體驗Spark
2.1安裝和使用Spark
2.1.1安裝Spark
2.1.2瞭解Spark目錄結構
2.1.3使用Spark Shell
2.2編寫和運行Spark程序
2.2.1安裝Scala插件
2.2.2編寫Spark程序
2.2.3運行Spark程序
2.3Spark Web UI
2.3.1訪問實時Web UI
2.3.2從實時UI查看作業信息
第3章Spark原理
3.1Spark工作原理
3.2Spark架構及運行機製
3.2.1Spark係統架構與節點角色
3.2.2Spark作業執行過程
3.2.3應用初始化
3.2.4構建RDD有嚮無環圖
3.2.5RDD有嚮無環圖拆分
3.2.6Task調度
3.2.7Task執行
第4章RDD算子
4.1創建算子
4.1.1基於集閤類型數據創建RDD
4.1.2基於外部數據創建RDD
4.2變換算子
4.2.1對Value型RDD進行變換
4.2.2對Key/ Value型RDD進行變換
4.3行動算子
4.3.1數據運算類行動算子
4.3.2存儲型行動算子
4.4緩存算子
第5章Spark算法設計
5.1過濾
5.2去重計數
5.3相關計數
5.4相關係數
5.5數據聯結
5.6Top�睰
5.7K�瞞eans
5.8關聯規則挖掘
5.9kNN
5.10樸素貝葉斯分類
第6章善用Spark
6.1閤理分配資源
6.2控製並行度
6.3利用持久化
6.4選擇恰當的算子
6.5利用共享變量
6.5.1纍加器變量
6.5.2廣播變量
6.6利用序列化技術
6.7關注數據本地性
6.8內存優化策略
6.9集成外部工具
參考文獻
精彩書摘
第1章從Hadoop到Spark
說起Spark,就不得不提到可以說是Spark“前任”的Hadoop技術。同為目前最為炙手可熱的兩個大數據計算框架,Hadoop與Spark經常被放在一起進行比較。受Google大數據計算框架啓發而産生的Hadoop由於齣現時間較早,並且由於其大幅降低瞭編寫分布式並行計算程序的難度,同時具備優秀的低成本和可擴展特性,從2008年成為Apache頂級項目起,Hadoop用不到10年的時間顛覆瞭曆史悠久的大數據處理技術格局,成為當之無愧的大數據處理技術“無冕之王”。然而,由於Hadoop的設計重點是解決大數據量情況下的批量運算問題,因此在計算模式多元化(例如迭代和圖計算)和實時性要求更高(流式計算和實時計算)的新環境下顯得有點“老態龍鍾”。於是,強調迭代計算下的性能以及兼容多種計算模式的Spark技術應運而生,並在很短的時間內形成瞭全麵取代Hadoop之勢。為瞭理清兩者的關係以更好地理解Spark,在本書的開篇我們就從大數據的齣現和Hadoop的産生說起,通過簡要剖析Hadoop的原理以說明其局限性,並用一個簡單的常用算法實例的運行性能對比,為大傢展示Spark的強大能力。
1.1Hadoop——大數據時代的火種
1.1Hadoop——大數據時代的火種
1.1.1大數據的由來
1965年4月19日,時任仙童半導體公司工程師,後來創建英特爾公司的戈登·摩爾在著名的《電子學》雜誌(Electronics Magazine)發錶文章,預言半導體芯片上集成的晶體管和電阻數量將每年增加1倍。10年後,摩爾在IEEE國際電子組件大會上將他的預言修正為半導體芯片上集成的晶體管和電阻數量將每兩年增加1倍,這就是著名的“摩爾定律”[1](如圖1��1所示)。誰也想不到,這個預言猶如一隻看不見的大手推動著半導體行業在半個世紀裏的飛速發展,並見證瞭以此為基礎的IT産業的蓬勃發展。然而,不是所有人都能有摩爾這樣的洞察力和幸運。在變幻莫測的科技界,更多自信滿滿的預言者被無情的現實擊敗。下麵,就讓我們一起來迴顧一下科技史上最為著名的6個失敗預言,並見證隨著這些預言逐一破滅而到來的大數據時代。
圖1��1摩爾和摩爾定理
�r 最失敗預言一: “我找不到普通傢庭也需要計算機的理由。”
——肯·奧爾森(Ken Olsen),數字設備公司(DEC)創始人
1977年,美國數字設備公司(DEC)創始人肯·奧爾森認為,普通的傢庭是不會花費巨資來購買一颱計算機的。他認為普通傢庭既承擔不起計算機那昂貴的價格,也不需要計算機如此強大的計算能力。當然,後來的故事我們已經知道,隨著Apple、IBM等推齣價廉物美的個人計算機,PC迅速普及到普通傢庭。早在2011年在美國進行的一次關於PC擁有量的調查就顯示,僅擁有一颱PC的傢庭就占到14%,而約60%的傢庭擁有3颱或者3颱以上PC。在中國市場,2014年全國傢庭電腦普及率已超過50%,在經濟較為發達的城市中,傢庭電腦普及率已超過80%。很多傢庭不僅擁有供傢庭娛樂或辦公用的颱式機,還會購買一些齣門旅行或者移動工作時需要的便攜式電腦,包括筆記本、上網本、平闆電腦等,甚至還有少數人會擁有自己的服務器。毫無疑問,計算機已成為我們日常生活的一部分。通過計算機,我們每個人都能夠以前人所無法想象的速度産生、處理和消費數據。
�r 最失敗預言二: “很多人預測1996年互聯網産業將大規模增長。但我的預測是,1996年互聯網産業由於增長過於快速,將像超新星一樣爆炸後而走嚮崩潰。”
——羅伯特·邁特卡爾夫(Robert Metcalfe),3Com公司創始人
1995年,美國公共電視網(Public Broadcasting Service,PBS)推齣瞭一檔電視節目,名為《計算機記事》(Computer Chronicles)。這個節目介紹瞭當時還隻是少數極客玩具的互聯網相關技術、軟件和服務。由此,互聯網正式開始進入美國公眾視野,隨之而來的是快速增長的互聯網用戶並給當時有限的網絡帶寬帶來瞭極大的壓力。在這一背景下,網絡設備製造商3Com創始人羅伯特·邁特卡爾夫在InfoWorld發文作齣瞭悲觀的預測。他預測1996年互聯網産業將由於增長過於快速而走嚮崩潰,並錶示如果事實情況證明自己該預測有誤,將當眾“自食其果”。顯然,互聯網並沒有如他預測的那樣走嚮衰敗,反而日益繁榮。因此,在1999年舉行的國際互聯網大會上,邁特卡爾夫在眾目睽睽之下,把印有這一預測文字的紙張攪拌到一杯水中,然後一飲而盡。到瞭21世紀的今天,互聯網已經滲透到經濟社會各領域,給每個人的生活帶來瞭前所未有的改變。Google、Facebook、Youtube、Twitter、QQ、微博、微信等豐富多彩的互聯網服務,為每個人打開瞭一扇從網絡瞭解世界、嚮世界分享自我的窗口,在互聯網中自由平等地交換數據與信息。
�r 最失敗預言三: “全球垃圾郵件問題將在今後兩年內得到解決。”
——比爾·蓋茨(Bill Gates),微軟創始人
隨著20世紀90年代互聯網的齣現和發展,由於互聯網及相關服務的高度開放性和交互性,任何一個網站或個人都能生産和發布信息,這為所有信息的傳播開闢瞭一個幾乎不受限製的空間。在此之前,全球的數據量基本是每20個月增加1倍。而在互聯網齣現之後,數據量則呈現齣幾何級數增長的趨勢。然而,在暴漲的數據中,並不完全是對用戶有益,其中還充斥著大量垃圾數據,垃圾郵件就是其中最臭名昭著的一類。比爾·蓋茨,微軟帝國的締造者,毫無疑問是一位“技術控”,他堅信隨著技術的發展垃圾郵件必然會得到有效控製,並且這一目標將很快實現,互聯網會因此變得更加安全。因此,2004年11月在馬德裏舉行的一次互聯網大會上,比爾·蓋茨錶示: “目前垃圾郵件已成為全球非常嚴重的安全問題,業界還沒有找到有效遏製措施,但我們希望這一現象在兩年之內得到控製。”遺憾的是,現實比他預言的要殘酷得多,直到今天垃圾郵件仍然是睏擾全球互聯網用戶的頑疾。就在筆者編寫本段文字的時候,在屏幕的右上角就在彈齣郵件軟件收到的垃圾郵件提示信息。
�r 最失敗預言四: “電視節目的流行時間不會超過半年,公眾每晚會麵對著一個小盒子,他們將對此感到厭煩。”
——達裏爾·紮努剋(Darryl Zanuck),20世紀福剋斯公司高管
在20世紀中期,電視機雖然已經開始走入普通傢庭,開啓瞭影音娛樂時代。但早期的電視機可以說隻是一個簡陋的黑白圖像接收器,在這樣的設備上觀看娛樂節目的體驗可想而知。因此,雖然像20世紀福剋斯這樣的傳統電影製作和發行公司感覺到瞭電視所帶來的挑戰,但他們仍然認為這種簡陋的娛樂形式很快會隨著人們對電視機新鮮勁的過去而被淘汰,這也是為什麼達裏爾·紮努剋會預言電視節目的壽命會非常短暫的原因。然而,紮努剋嚴重低估瞭人們對即時影音媒介的強烈需求以及技術所帶來的變化。隨著彩色電視、無綫技術和光通信技術的發展,電視節目從模擬信號發展為數字信號。同時,電視節目的傳輸媒介已經不僅僅局限在無綫電波和有綫電視綫纜,人們可以通過PC、手機、平闆電腦等多種終端收看電視節目。收看電視節目已經不僅僅是為瞭人們每晚的休閑娛樂,更是人們認識世界、瞭解世界的途徑。人們對富媒體的需求不但沒有減退,反而與日俱增。同時,人們對電視節目的視覺效果也提齣瞭更高的要求,從標清到高清再到超高清,人們不斷提齣著對視覺效果的更高要求並得到滿足。清晰度的不斷提升,意味著在畫麵大小不變的情況下,需要有更多的像素點,這也帶來瞭在網絡中傳輸數據的快速膨脹。
……
前言/序言
自2012年迴歸校園開始電信與互聯網大數據分析科研生涯,我與Hadoop那頭黃色小象就結下瞭不解之緣。感謝Google的論文、Yahoo的資助、Doug Cutting無與倫比的聰明纔智,以及Hadoop開源社區無私奉獻的參與者,讓成韆上萬跟我們一樣的中小開發者團隊擁有瞭低成本處理大規模數據的能力。HDFS、MapReduce、Pig、Hive、HBase這些技術組件,幫助我們完成瞭一個又一個TB甚至PB級數據集的分析任務。那頭可愛的黃色小象,陪伴我度過瞭一個又一個美好的日子。多麼希望這種隻用一個技術族就能解決各種大數據處理問題的美好日子能一直持續下去,相信這也是很多開發者夢寐以求的理想國度。然而,夢想終歸是夢想。在兩年前的某一天,無意中從網絡上的一篇技術文章中看到瞭Spark這一新興技術,文中宣稱Spark性能和功能均優於Hadoop。將信將疑的我按照文章中的綫索找到瞭Spark官網,下載解壓後經過短暫試用,我就被Spark的簡潔、高效、靈活的特性徹底迷住瞭。從那時起我就知道,Hadoop,我心目中大數據處理王者技術上的真正挑戰者到來瞭。Spark以分布式內存對象架構為基礎,以RDD轉換模式為核心,並輔以豐富的RDD算子,不僅解決瞭大數據處理迭代任務的性能問題,還將開發者從簡陋的Map/Reduce編程模式中解放齣來,以更加靈活的方式控製數據的計算過程,並激發無窮的創意。因此,我們的團隊逐漸將數據處理技術棧由Hadoop轉嚮Spark。在這個過程中,我們發現目前已有的Spark相關書籍大多集中在介紹Spark技術的基礎原理以及Spark相關工具(例如SparkSQL、SparkR等)的基本使用方法上。而要學習如何使用Spark中提供的豐富算子進行算法設計時,隻能以大浪淘沙的方式從網絡中零散的資料中尋找參考。因此,我們覺得如果有一本能以豐富示例介紹Spark程序和數據挖掘算法設計的書籍,應當能更好地幫助Spark開發者提高學習效率,這也就是我們撰寫本書的原動力。
基於這一原動力,本書突齣以實例的方式介紹和展示Spark程序和算法設計的方法。第1章以科技史上最為著名的6個失敗預言引齣瞭大數據時代以及Hadoop技術齣現的必然性,然後通過Hadoop與Spark的對比揭示瞭Hadoop的局限性和Spark的優勢。第2章以簡潔明瞭的方式說明瞭如何以最快的方式搭建一個Spark運行環境,並通過Shell環境體驗Spark的強大功能。第3章以圖文並茂的形式講解瞭Spark的工作原理、架構與運行機製,並著重介紹瞭Spark的核心RDD的變換過程。第4章以大量示例代碼的形式詳細說明瞭Spark豐富的算子,包括創建算子、變換算子、行動算子和緩存算子。為瞭幫助讀者掌握使用Spark設計和實現復雜算法的方法,第5章以10個常見算法實例展示瞭Spark處理復雜數據處理工作的能力。第6章從閤理分配資源、控製並行度等9個方麵介紹瞭優化Spark性能、拓展Spark功能的方法。
與市麵上大部分Spark書籍不同,除原理性文字外,本書還提供瞭大量的Spark代碼實例,完成這些代碼是一項艱巨的工作。因此,除本書的作者外,我們必須要感謝為文中代碼編寫和測試作齣瞭巨大貢獻的參與者,他們是來自北京郵電大學數據科學中心的研究生梁陽、林澍榮、王濛、秦超、邱德揚等同學,以及北京浩瀚深度信息技術股份有限公司大數據專傢張碩、宋若寜。
由於作者水平有限,加之開源社區的高度活躍性,Spark技術仍在快速發展中。因此,書中難免會存在不足之處,還請讀者見諒並批評指正。意見、建議或交流請發電子郵件至liujun@bupt.edu.cn。
北京郵電大學 數據科學中心 劉軍
2016年8月
Spark大數據處理: 原理、算法與實例 下載 mobi epub pdf txt 電子書 格式