尋路大資料:海量資料與大規模分析

broadviewbj發表於2014-11-21

尋路大資料:海量資料與大規模分析(Google大資料專家力作 超豪華譯者|作序者 真正梳理趨勢與生態|方案與工具選型|應用場景與價值挖掘的獨家內參

【美】Michael Manoochehri(邁克爾.馬諾切裡)著  

戴志偉等 譯

ISBN 978-7-121-24472-8

201411月出版

定價:59.00

244

16

編輯推薦

微博副總|高德技術副總裁|百度主任架構師|百度技術委員會主席|UCloud創始人&CEO聯合作序推薦

大資料包羅永珍,谷歌大資料平臺技術權威獨具匠心,站在全域性高度析縷分條,讓你不再迷失,能快速得其門而入

本書是大資料實戰用書,包含大量真實案例、實際程式碼、詳細解決方案。

? 掌握大資料成功及避開常見陷阱的4個指導原則

? 強調協作,避免資料孤島帶來的問題

? 高效且經濟地託管和共享數TB的資料集

? “為未來而構建”以支援快速增長

? 使用Redis開發NoSQL Web應用來收集眾包資料

? 使用HadoopHiveShark在大資料集上執行分散式查詢

? 使用Google BigQuery構建資料資訊皮膚

? 使用高階視覺化技術探索大資料集

? 實現高效流水線以轉換海量資料

? 使用Apache PigCascading庫將複雜處理過程自動化

? 運用機器學習方法進行分類、推薦及預測

? 使用R語言統計分析大資料集

? 建立合理的採購策略:何時選擇自制、購買或外包

? 使用PythonPandas構建高效分析工作流

? 展望可伸縮資料技術的新趨勢及資料科學家的角色演變

內容提要

這是一個資料爆發的時代,更是一個資料技術爆發的時代,各行各業都在因此進行深刻的變革。如何從眾多的資料技術中選擇正確的工具、如何使用這些工具從海量資料中挖掘出有價值的東西,無疑是非常具有挑戰性的問題。

《尋路大資料:海量資料與大規模分析》作者結合自己在Google 大資料平臺工作的豐富經驗,闡述了資料技術的方方面面。從資料收集、共享到資料儲存,從分散式資料平臺、分析型資料庫到資料視覺化,從資料工作流構建到大規模資料分析,作者不僅進行了全面而深入的介紹,更覆蓋了目前流行的各種資料技術與工具,同時對技術選型提出了指導性的建議。最後,作者對資料挑戰的非技術因素進行了深刻的分析,並對資料技術的發展趨勢進行了展望,引人深思。

《尋路大資料:海量資料與大規模分析》對企業管理者、技術經理、資料分析師、資料應用開發人員和相關從業者都有很好的參考價值。決策者可以從中看到技術趨勢,把握時代發展脈搏;資料分析人員可以看到經驗的總結和工具的應用;其他從業者可以從中瞭解資料技術所涉及的各個方面。

目錄

1 部分 大資料時代指引 1

1 章 資料成功四原則 3

1.1 當資料成為一件“大”事 3

1.2 資料和單臺伺服器 4

1.3 大資料的權衡 5

1.3.1 構建可(無限)擴充套件的解決方案 6

1.3.2 構建可(在網際網路上)共享資料的系統 7

1.3.3 構建解決方案,而非基礎設施 8

1.3.4 關注從資料中解放價值 8

1.4 大資料流水線剖析 9

1.5 終極資料庫 10

1.6 總結 10

2 部分 收集和共享海量資料 13

2 章 託管和共享TB 級原始資料 15

2.1 檔案之殤 16

2.1.1 共享大量檔案的挑戰 16

2.2 儲存:基礎設施即服務 17

2.2.1 網路很慢 18

2.3 選擇合適的資料格式 18

2.3.1 XML :資料,描述你自己 20

2.3.2 JSON :程式設計師的選擇 21

2.4 字元編碼 22

2.4.1 檔案轉換 24

2.5 移動中的資料:資料序列化格式 25

2.5.1 Apache Thrift Protocol Buffers 26

2.6 總結 27

3 章 構建基於NoSQL Web 應用採集眾包資料 29

3.1 關係型資料庫:命令及控制 30

3.1.1 關聯式資料庫的ACID 測試 32

3.2 當關系型資料庫遇上網際網路 33

3.2.1 CAP 原理與BASE 34

3.3 非關係型資料庫的模式 36

3.3.1 - 值資料庫 36

3.3.2 文件儲存 38

3.4 為寫入效能最佳化:Redis 40

3.5 在多個Redis 例項上分片 43

3.5.1 使用Twemproxy 自動分割槽 44

3.5.2 Redis 的替代選項 46

3.6 NewSQL Codd 歸來 46

3.7 總結 47

4 章 解決資料孤島問題的策略 49

4.1 堆滿術語的倉庫 49

4.1.1 實踐中的問題 51

4.1.2 資料合規與安全規劃 52

4.1.3 走進資料倉儲 53

4.1.4 資料倉儲的口訣:抽取、轉換和載入 54

4.2 Hadoop :資料倉儲中的大象 55

4.3 資料孤島也可能是個優點 55

4.3.1 專注於資料問題,而不是技術 56

4.3.2 鼓勵員工提出他們自己的問題 57

4.3.3 投資溝通資料孤島的技術 57

4.4 融合:資料孤島的終結 58

4.4.1 Luhn 的商業智慧系統是否能成為現實 59

4.5 總結 59

3 部分 資料探究 61

5 章 使用HadoopHive Shark 探索大規模資料集 63

5.1 什麼是資料倉儲 64

5.2 Apache Hive :在Hadoop 上進行互動式查詢 66

5.2.1 Hive 用例 66

5.2.2 Hive 實戰 67

5.2.3 Hive 中使用其他資料來源 71

5.3 Shark :以記憶體的速度進行查詢 72

5.4 雲中的資料倉儲 73

5.5 總結 74

6 章 使用Google BigQuery 構建資料資訊中心 77

6.1 分析型資料庫 78

6.2 Dremel :均貧富 79

6.2.1 Dremel MapReduce 的不同之處 80

6.3 BigQuery :資料分析即服務 81

6.3.1 BigQuery 的查詢語言 82

6.4 建造自己的大資料資訊皮膚 83

6.4.1 授權訪問BigQuery API 84

6.4.2 執行查詢並獲取結果 87

6.4.3 快取查詢結果 88

6.4.4 新增視覺化圖形 89

6.5 分析型查詢引擎的未來 91

6.6 總結 91

7 章 探索大資料的視覺化策略 93

7.1 警世良言:將資料翻譯成故事 94

7.2 人類尺度 VS 機器尺度 97

7.2.1 互動性 97

7.3 開發互動式資料應用 98

7.3.1 使用R ggplot2 實現互動式視覺化 98

7.3.2 matplotlib: Python 2D 圖形庫 100

7.3.3 D3.js :用於Web 的互動式視覺化庫 100

7.4 總結 104

4 部分 構建資料流水線 107

8 章 整合:MapReduce 資料流水線 109

8.1 資料流水線是什麼 109

8.1.1 正確的工具 110

8.2 使用Hadoop Streaming 搭建資料流水線 111

8.2.1 MapReduce 和資料轉換 111

8.2.2 最簡單的流水線:stdin stdout 113

8.3 單步MapReduce 變換 115

8.3.1 從原始NVSS 資料中抽取相關資訊:map 階段 116

8.3.2 合計每月出生數:reducer 階段 117

8.3.3 在本地測試MapReduce 流水線 118

8.3.4 Hadoop 叢集上執行我們的MapReduce 作業 119

8.4 降低複雜性:Hadoop Python MapReduce 框架 120

8.4.1 使用mrjob 重寫Hadoop Streaming 示例 121

8.4.2 建造一個多步流水線 122

8.4.3 Elastic MapReduce 上執行mrjob 指令碼 124

8.4.4 其他基於Python MapReduce 框架 125

8.5 總結 125

9 章 使用Pig Cascading 構建資料轉換工作流 127

9.1 大規模資料工作流實戰 128

9.2 多步MapReduce 轉換真複雜 128

9.2.1 Apache Pig :拒絕複雜 129

9.2.2 使用互動式Grunt shell 執行Pig 130

9.2.3 過濾和最佳化資料工作流 132

9.2.4 以批處理模式執行Pig 指令碼 132

9.3 Cascading :構建健壯的資料工作流應用 133

9.3.1 source sink 的方式思考 134

9.3.2 構建Cascading 應用 135

9.3.3 建立一個Cascade :一個簡單的JOIN 例子 136

9.3.4 Hadoop 叢集上部署Cascading 應用 138

9.4 何時選擇Pig Cascading 139

9.5 總結 140

5 部分 基於大規模資料集的機器學習 141

10 章 使用Mahout 構建資料分類系統 143

10.1 機器能否預測未來 144

10.2 機器學習的挑戰 144

10.2.1 貝葉斯分類 146

10.2.2 聚類 146

10.2.3 推薦引擎 148

10.3 Apache Mahout :可伸縮的機器學習工具 148

10.3.1 使用Mahout 進行文字分類 149

10.4 MLbase :分散式機器學習框架 152

10.5 總結 152

6 部分 基於大規模資料集的統計分析 155

11 章 使用R 語言處理大資料集 157

11.1 統計學為什麼性感 158

11.1.1 R 處理大型資料集的侷限性 159

11.1.2 R 的資料幀和矩陣 161

11.2 處理大資料集的策略 162

11.2.1 大矩陣處理:bigmemory biganalytics 162

11.2.2 ff: 使用大於記憶體的資料幀 164

11.2.3 biglm :大規模資料集的線性迴歸 165

11.2.4 RHadoop: 使用R 訪問Apache Hadoop 166

11.3 總結 168

12 章 使用Python Pandas 構建分析工作流 171

12.1 資料樂園中自在的蟒蛇——Python 172

12.1.1 為統計性計算選擇一門語言 172

12.1.2 擴充套件現有程式碼 173

12.1.3 工具和測試 174

12.2 用於資料處理的Python 174

12.2.1 NumPy 175

12.2.2 SciPy Python 的科學計算庫 176

12.2.3 資料分析庫Pandas 178

12.3 構建更復雜的工作流 182

12.3.1 處理損壞或丟失的記錄 184

12.4 iPython :科學計算工具鏈的最後一環 185

12.4.1 在叢集上並行執行iPython 186

12.5 總結 190

7 部分 展望未來 191

13 章 何時選擇自制、購買或外包 193

13.1 功能重合的解決方案 193

13.2 理解你的資料問題 195

13.3 自制還是購買問題的參考手冊 197

13.3.1 你已經對哪些技術有所投入 197

13.3.2 從小處著手 198

13.3.3 規劃時考慮可擴充套件性 198

13.4 私人資料中心 199

13.5 瞭解開源的成本 201

13.6 一切皆服務 202

13.7 總結 202

14 章 未來:資料科技的幾個趨勢 205

14.1 Hadoop :攪局者與被攪局者 206

14.2 一切皆在雲中 208

14.3 資料科學家的興衰 209

14.4 融合:終極資料庫 212

14.5 文化融合 213

14.6 總結 214

作者簡介

Michael Manoochehri 是個企業家、作家和樂觀主義者。憑藉自己與企業、研究機構和非營利性機構多年的合作經驗,他力圖讓可擴充套件資料分析變得更加廉價和易獲取。Michael Google 雲平臺開發者關係組的成員之一,關注雲端計算和資料開發者產品,例如Google BigQuery。此外,Michael 是技術部落格ProgrammableWeb.com的作者之一,曾在烏干達農村地區研究行動電話的使用,擁有UC Berkeley 資訊學院的資訊管理與系統文學碩士學位。

媒體評論

大規模資料分析幾乎對所有行業都極其重要。移動和社交技術產生了海量的資料集,分散式雲端計算提供了儲存和分析這些資料所需的資源,專家們掌握著全新的技術,其中包括NoSQL資料庫。但是迄今為止,關於“大資料”的大部分書籍只不過是業務爭論或者產品目錄。本書則不同:它是每個大資料決策者、實施者和戰略制定者必不可少的實戰指南。

Michael Manoochehri是一個前Google工程師和資料駭客,他為那些需要低資源消耗和時間開銷的實用方案的專業人員寫作了本書。藉助其廣博的知識,作者幫助您專注於構建應用而不是基礎設施管理,因為這樣您才能從中獲得最大的價值。

作者展示瞭如何結合使用不同的技術經濟、有效地解決關鍵的大資料用例。您將看到進行海量資料集管理、資料視覺化、資料流水線和資訊皮膚構建、統計分析工具選擇等的專業方法。縱觀本書,作者演示了目前最先進的資料分析工具的使用技巧,其中包括HadoopHiveSharkRApache PigMahoutGoogle BigQuery

對資料進行採集、儲存和分析的工具種類非常繁多,而且新的工具還在不斷湧現。對於剛進入這個領域的新人來說,這往往意味著需要瀏覽眾多網站和相關書籍才能對大資料處理的基礎知識有個基本的瞭解。正因如此,這本書成為 Addison Wesley 資料分析(Data & Analytics)叢書的一個有力補充 :本書對構建大資料分析系統的工具、技術和實用技巧進行了全面的介紹。

Michael 是介紹大資料分析的絕佳人選,他曾在 Google 的雲平臺開發者關係組工作,幫助開發者使用 BigQueryGoogle TB 級資料分析平臺)進行大規模資料分析。他將自己在大資料領域廣闊的知識面帶到了這本書中,為剛接觸大資料的人和尋求建議、技巧和工具的人提供了非常實用的實戰指南。

本書從大資料系統的成功應用開始介紹,之後陸續對 NoSQL、分散式計算和CAP 理論進行了講解。在介紹使用 Hadoop Hive 分析大資料之後,又覆蓋了使用 BigQuery 進行實時分析的相關內容。之後還包括了 MapReduce 流水線、Pig Cascading、使用 Mahout 進行機器學習等高階課題。在書的最後,讀者會看到將Python R 整合到大資料工具鏈中的實際案例。本書大部分章節都包含了很多例子以幫助讀者學習和使用相關的大資料工具。如果你想要一本對大資料分析有一個全面瞭解的書籍,本書絕對是不二之選。

——Paul Dix

前言

注意到了嗎?移動技術和社會化媒體產生的資料已經超過了人類能夠理解的範圍,大規模資料分析突然變得魅力四射。

分散式和雲端計算領域正在快速發展以分析和處理這些資料。技術變革那令人難以置信的速度已經徹底顛覆了人們應對資料挑戰的舊有觀念,強迫他們跟上時代的步伐去評估一系列技術,而這些技術有時甚至是互相有衝突的。

很久以來,關係型資料庫一直是商業智慧應用的推進器,如今一些激進的開源NoSQL 新貴也加入了進來。二者的結合構成了一種全新的混合資料庫解決方案。基於Web 的計算所存在的優點驅使著大規模資料儲存從定製資料中心轉向可伸縮的“基礎設施即服務”上來。另一方面,基於開源的Hadoop 生態系統的專案使得普通開發者也能夠接觸到資料處理技術,這在以前只有一些做雲端計算的大公司,如Amazon Google 才能做到。

這些技術創新的結果通常被稱為大資料(Big Data)。關於這個詞彙的含義有很多爭論。大資料是一個新產生的趨勢,抑或只是老調重彈?大資料是如其字面意思那樣意味著很多的資料,還是指使用新的方式去挖掘資料價值的過程呢?科學歷史學家George Dyson 總結得很好:“當扔掉資料的代價大於所需機器代價時,大資料才有了存在的價值。”換句話說,當資料本身的價值超過了收集和處理這些資料所需的計算能力時,就有了大資料。

儘管一些支援大資料運動的公司和開源專案的令人驚奇的成功的確是事實,但同時很多人也已經發現,去了解大量新的資料解決方案和服務提供商非常具有挑戰性。而我發現設計解決方案去面對資料挑戰的過程往往可以歸納為一系列共同的用例,這些用例在這些解決方案中一再出現。

尋找高效的資料解決方案就意味著權衡。一些技術是為某類特殊的資料用例專門最佳化的,因此對於其他型別的資料來說並不是最好的選擇。一些資料庫軟體為了達到更高的分析速度而犧牲了靈活性,而另一些資料庫軟體可能為了更高的效能會犧牲一致性。本書會透過介紹實際用例和真實的成功案例幫助你學習如何去做選擇。

本書的適用範圍

在這個世界上沒有使用無限的金錢和資源解決不了的問題。不管怎樣,擁有大量資源的組織總是可以建造他們自己的系統去收集和分析任何規模的資料。本書並不是寫給這些擁有無限的時間、一大群努力的工程師和無窮預算的人們的。

本書寫給除此以外的其他人。這些人在尋找資料解決方案,但同時擁有的資源有限。大資料時代的一個主題是任何人都能夠獲取到合適的工具,而這些工具在幾年前還只有少數幾個大公司擁有。然而另一個擺在面前的事實是,很多工具非常新穎,並在快速演變,並不總是能夠無縫地互相銜接。本書的目標就是向讀者演示如何高效地將這些部件組裝在一起建造成一個個完整的系統。我們會討論解決資料問題的策略,如何使它們變得經濟、可行,當然還必須具有實用性。

開源軟體已經在無數的方面降低了人們獲取技術的難度,在大資料領域也是如此。但是,本書中涉及的技術和解決方案並不全部是開源的,有時候涉及商業公司提供的計算資源服務。

儘管如此,很多基於雲的服務是使用開源工具建造的,事實上,若沒有這些開源工具,很多雲服務根本就不會存在。因為規模經濟效應,公用計算平臺越來越多,使用者可以按需付費購買超級計算資源,就像人們購買自來水和電一樣。我們會討論在保證系統可伸縮性的同時儘量降低開銷的策略。

為什麼現在寫這本書

有一件事仍然讓我感到非常神奇,那就是如果不考慮經濟發展程度不一和語言障礙,寫一個能夠被整個星球的人使用的軟體並非不可能。像FacebookGoogle 搜尋、Yahoo !郵箱和中國的QQ 空間這樣的Web 應用擁有幾億甚至幾十億的活躍使用者並非不可能。Web 和相關開發工具的規模僅僅是大資料領域發展速度如此令人矚目的原因之一。讓我們來看看對此也有貢獻的其他趨勢吧。

開源大資料的成熟

2004 年,Google 釋出了一篇著名的論文,文中詳細介紹了一個叫作MapReduce的分散式計算框架。MapReduce 框架是Google 用以將海量資料處理問題分割成多個更小問題的關鍵技術。不久之後,Google 釋出了另一篇論文,介紹了Google 內部使用的分散式資料庫技術:BigTable

從此,很多開源技術出現了,它們要麼是這些Google 論文中技術的實現,要麼受到了其啟發。同時,由於關係型資料庫在分散式系統中使用所暴露出來的先天不足,新的資料庫正規化越來越為人們所接受。某些正規化徹底避開了關係型資料庫的核心屬性,拋棄了標準化的模式、確保的一致性,甚至SQL 本身。

Web 應用的崛起

隨著喜歡使用Web 的人越來越多,資料產生的速度也越來越快。Web 使用者的增加也帶來了Web 應用的增加。

基於Web 的軟體通常基於應用程式介面(API)構建。應用程式介面能夠將網路中獨立的服務連線起來。例如,很多應用允許使用者使用其Twitter 賬戶資訊來做認證,或者透過Google 地圖來視覺化地分享自己的地理位置。每一個介面都有可能會提供某種型別的日誌資訊用於做資料驅動的決策。

另一個對現在的“資料洪流”有所貢獻的是持續增長的使用者產生內容和社會化網路的普及。網際網路使得人們能夠以極小的代價釋出內容。儘管會有大量的噪聲資料,但是從營銷和廣告方面看,懂得如何收集和分析雪崩式的社會化網路資料仍然是非常有用的。

根據從這些Web 服務中收集的資訊來輔助進行商業決策是可行的。例如,想象一下如何根據地理資訊洞察銷售規律:是否購買了某種產品的獨立使用者有30% 來自於法國並且在Facebook 上分享了他們的購物資訊?像這樣的資料很可能會幫助你決定動用資源瞄準社會化網路上的法國客戶。

移動裝置

可伸縮的資料技術比過去任何時候都熱門的另一個原因是,全球行動通訊裝置數量的爆炸。與其說這種趨勢是由於個人對功能手機和智慧手機的使用造成的,不如把這種趨勢看作是以使用者身份為中心而與裝置無關的。假如你同時在使用一臺計算機和一部智慧手機,那麼或許你就能夠透過其中任何一個裝置來存取自己的個人資料。而這份資料或許是儲存在某個基礎設施即服務的提供商的資料中心中。類似地,我的智慧電視能夠在空閒的時候把我關注的Twitter 使用者的推文作為螢幕保護顯示出來。這些都是普適計算——基於你的身份從聯網的任何裝置存取資源的例子。

隨著移動裝置使用的加速增長,消費性移動裝置越來越多地被用於商業目的。我們正處於普適計算的早期階段,人們使用的裝置僅僅是作為透過網路存取個人資料的工具。業界和政府正開始認識到使用100% 基於雲的商業生產力軟體的關鍵優點,即能夠改進僱員的機動性和提高工作效率。

總之,每天有數百萬的使用者開始透過持續增長的裝置使用基於網路的應用程式。只要能夠收集、處理和分析這些資料,就能夠從中發現可用於進行商業決策的巨大價值。

物聯網

未來,任何使用電的裝置都可能會連線到網際網路,因此會有很多資料在使用者、裝置和伺服器之間來回傳輸。這通常被叫作物聯網(Internet of Things)。如果你認為現在的數十億網際網路使用者產生的資料很多的話,想想等到我們所有的汽車、手錶、燈泡和麵包機都上網了之後會怎麼樣吧。

儘管還不清楚能連線Wi-Fi 的麵包機有沒有市場,但是越來越多的商業公司和個人愛好者開始使用廉價硬體進行物聯網方面的探索。我們可以想象一下這種聯網裝置:使用者能夠完全透過智慧機或平板電腦來操控。這種技術已經出現在了電視機上,應該很快就能取代微波爐上那些令人無法容忍的控制皮膚了。

就像前面描述的移動應用和網路應用趨勢,物聯網對個人隱私和政策的影響需要進行詳細的評估:誰可以獲知你在哪裡如何使用你新買的支援Wi-Fi 的電動牙刷?另一方面,從這些裝置中收集的資訊也可以使市場更加高效、自動檢測裝置中的潛在故障,或者向使用者發出警告資訊,這些警告資訊可能會節省他們的時間和金錢。

通向普適計算之路

前面提到的資訊太多,可能反而轉移了大家的注意力,但是有一點是非常重要的:隨著網際網路背後的分散式計算技術使得人與人之間的交流越來越容易,大資料技術趨勢也讓尋找問題答案的過程從過去的不可能變得可能。

更重要的是,使用者體驗的進步意味著我們正在進入這樣一個世界——探究我們產生的令人無法想象的海量資料的技術正在變得越來越透明、經濟和唾手可得。

本書組織結構

處理海量的資料需要使用一系列專業技術,而每種技術本身都有取捨和挑戰。本書分成幾個部分,分別描述在一些常見用例下的資料挑戰和成功的解決方案。第1 部分“大資料時代指引”包含了第1 章:“資料成功四原則”,本章描述了為什麼大資料如此重要,以及為什麼新技術的前景不僅意味著機遇也意味著挑戰。本章介紹了貫穿全書的共同主題,如構建可伸縮的應用;構建解決資料孤島問題的協同工具;在考慮使用什麼技術之前先考慮應用場景;除非絕對必要,否則避免建造基礎設施。

2 部分“收集和共享海量資料”描述了關於收集和共享大規模資料的應用場景。第2 章“託管和共享TB 級原始資料”描述瞭如何應對託管和共享大量檔案中存在的看起來很簡單的挑戰。選擇合適的資料格式是非常重要的,本章覆蓋了共享資料時必須要考慮的問題,以及經濟地託管大量資料時所需的基礎設施。本章透過討論傳輸資料時使用的序列化格式給出了相應的結論。

3 章“構建基於NoSQL Web 應用採集眾包資料”介紹了可伸縮資料庫技術領域。本章討論了關係型資料庫和非關係型資料庫的歷史,以及如何在二者之間進行選擇。我們還會介紹流行的Redis 資料庫,以及將Redis 例項在多臺機器上進行分片的策略。

可伸縮資料分析需要多種技術知識和應用經驗,這常常導致資料被分割為一個個互不相容的資料孤島。第4 章“解決資料孤島問題的策略”詳細分析了資料孤島存在的原因和解決相關問題的策略。本章還討論了為何資料孤島也有利好的一面。

收集、儲存和共享資料之後,我們會想要探索資料。第3 部分“資料探究”包括了在探索大資料集的時候涉及的用例和技術。在大規模資料上執行查詢通常需要分散式解決方案。第5 章“使用HadoopHive Shark 探索大規模資料集”介紹了流行的用於在持續增長的資料集上執行查詢的可伸縮工具。本章重點關注Apache Hive,它能夠將類SQL 查詢語句翻譯為在Hadoop 上執行的MapReduce 作業。

有時資料查詢是迭代式的。分析型資料庫是一種為查詢資料集並迅速返回結果而專門進行了最佳化的軟體。第6 章“使用Google BigQuery 構建資料資訊中心”描述了分析型資料庫應用案例和如何將它們作為Hadoop 這樣的批處理工具的補充。本章介紹了Google BigQuery—— 一種完全託管的使用類SQL語法的分析型資料庫。本章還會演示如何將BigQuery API 作為基於Web 技術的資料資訊中心背後的引擎。

資料視覺化是一個歷史悠久而豐富多彩的研究領域。第7 章“探索大資料的視覺化策略”介紹了在大資料集上使用視覺化工具的益處和潛在陷阱。本章介紹了當資料量增長得很大時的視覺化策略,還介紹了資料視覺化過程中需要用到的資料分析工具。

使用可伸縮資料技術的時候,遇到的一個共同問題是不同的軟體工具是為了不同的用例做最佳化的。鑑於此,一個共同的用例是將大規模資料從一種格式或形態轉換成另一種格式或形態。第4 部分“構建資料流水線”介紹了實現用於改進資料轉換的流水線和工作流的方法。第8 章“整合:MapReduce 資料流水線”介紹了使用Hadoop MapReduce 框架處理大規模資料的思想。本章描述了使用Hadoop Streaming API 和像Python 這樣的指令碼語言建立實用且易行的MapReduce 應用。

當資料處理任務變得非常複雜之後,我們需要使用工作流工具來進一步使資料轉換任務變得更加自動化。第9 章“使用Pig Cascading 構建資料轉換工作流”介紹了表達複雜MapReduce 任務的兩種技術。Apache Pig 是一種工作流描述語言,它能夠使定義複雜的多步的MapReduce 作業變得容易。本章還介紹了Cascading——一個優雅的可用於使用Hadoop 構建複雜資料工作流應用的Java 庫。

當資料量增長到非常大之後,我們需要使用計算機來尋找對人類有用的資訊。如果能夠使用機器基於現有的資料模型對收到的資訊進行分類、推薦和預測,那將是非常有用的。第5 部分“基於大規模資料集的機器學習”包括第10 章“使用Mahout 構建資料分類系統”,本章介紹了機器學習領域,還會使用流行的Apache Mahout 機器學習庫來演示具有普遍性的機器學習任務——文字分類。

資料統計的目標之一是解釋資料的質量和意義。第6 部分“基於大規模資料集的統計分析”介紹了統計分析大規模資料的常用工具和用例。R 語言是最流行的一種用於表達統計分析任務的開源語言。第11 章“使用R 語言處理大資料集”講述了一種正在變得更加普遍的用例:使用R 語言高效地處理大資料集。本章介紹了當資料量增長到比系統可用記憶體更大的時候可以使用的R 語言庫,還介紹瞭如何將R作為Hadoop 叢集的介面使用。

雖然R 語言非常流行,但是使用通用語言來解決資料分析挑戰仍然有其優點。第12 章“使用Python Pandas 構建分析工作流”介紹了越來越流行的Python 分析工具棧。本章包括了用於處理時間序列資料的Pandas 庫的使用,以及iPython 筆記本—— 一種支援共享和協同的增強指令碼環境。

並不是所有的資料挑戰都是純技術相關的。第7 部分“展望未來”介紹了在面對資料分析創新時處理組織不確定性所使用的實用策略。第13 章“何時選擇自制、購買或外包”介紹了在面對資料分析這個高度創新的領域時制定採購決策的策略。本章還談到了使用開源技術構建資料解決方案的利弊。

最後,第14 章“未來:資料科技的幾個趨勢”介紹了可伸縮資料技術(包括推動創新的激勵因素)的當前趨勢。本章也將深入討論所謂資料科學家不斷演變的作用和各種資料技術的融合。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13164110/viewspace-1341658/,如需轉載,請註明出處,否則將追究法律責任。

相關文章