編輯推薦
《圖靈程序設計叢書:Hadoop基礎教程》揭開瞭Hadoop的神秘麵紗,它著重講解瞭如何應用Hadoop和相關技術搭建工作係統並完成任務。在讀者明白這些內容之後,又介紹瞭如何使用雲服務完成相同任務。本書從Hadoop的基本概念和初始設置入手,講述瞭如何開發Hadoop程序,如何在數據規模增長的時候維持係統運行,《圖靈程序設計叢書:Hadoop基礎教程》涵蓋瞭有效使用Hadoop處理實際問題所需用到的全部知識。
內容簡介
《圖靈程序設計叢書:Hadoop基礎教程》包括三個主要部分:第1~5章講述瞭Hadoop的核心機製及Hadoop的工作模式;第6~7章涵蓋瞭Hadoop更多可操作的內容;第8~11章介紹瞭Hadoop與其他産品和技術的組閤使用。《圖靈程序設計叢書:Hadoop基礎教程》目的在於幫助讀者瞭解什麼是Hadoop,Hadoop是如何工作的,以及如何使用Hadoop從數據中提取有價值的信息,並用它解決大數據問題。
作者簡介
Garry Turkington,擁有14年行業經驗,其大部分時間都專注於大型分布式係統的設計與實現。目前,他在Improve Digital公司擔任數據工程部副總裁和公司的首席架構師。他主要負責實現可以存儲、處理並從公司海量數據中挖掘潛在價值的係統。在加入 Improve Digital公司之前,他曾在 英國公司領導著幾個軟件開發團隊,他們開發的係統用於處理為全世界所有對象創建的目錄數據。在此之前,他還曾在英國和美國政府機關任職十年。
他在北愛爾蘭的貝爾法斯特女王大學獲得瞭計算機學士和博士學位,並在美國斯蒂文斯理工學院獲得係統工程的工程碩士學位。
張治起,Hadoop技術愛好者和研究者,對Hadoop技術有非常深刻的認識和理解,熱切關注Hadoop和相關大數據處理技術。有著豐富的實踐經驗,熱衷於技術分享,緻力於不斷探索揭開Hadoop的神秘麵紗,幫助更多初學者接觸和理解Hadoop。
內頁插圖
精彩書評
★Gary Turkington的《Hadoop基礎教程》能夠幫助讀者很好地理解Hadoop,並學會如何使用Hadoop。
——讀者
★本書講解全麵,解釋清晰,對初學者來說是一個非常不錯的選擇。
——讀者
目錄
第1章 緒論
1.1 大數據處理
1.1.1 數據的價值
1.1.2 受眾較少
1.1.3 一種不同的方法
1.1.4 Hadoop
1.2 基於Amazon Web Services的雲計算
1.2.1 雲太多瞭
1.2.2 第三種方法
1.2.3 不同類型的成本
1.2.4 AWS:Amazon的彈性架構
1.2.5 本書內容
1.3 小結
第2章 安裝並運行Hadoop
2.1 基於本地Ubuntu主機的Hadoop係統
2.2 實踐環節:檢查是否已安裝JDK
2.3 實踐環節:下載Hadoop
2.4 實踐環節:安裝SSH
2.5 實踐環節:使用Hadoop計算圓周率
2.6 實踐環節:配置僞分布式模式
2.7 實踐環節:修改HDFS的根目錄
2.8 實踐環節:格式化NameNode
2.9 實踐環節:啓動Hadoop
2.10 實踐環節:使用HDFS
2.11 實踐環節:MapReduce的經典入門程序——字數統計
2.12 使用彈性MapReduce
2.13 實踐環節:使用管理控製颱在EMR運行WordCount
2.13.1 使用EMR的其他方式
2.13.2 AWS生態係統
2.14 本地Hadoop與EMR Hadoop的對比
2.15 小結
第3章 理解MapReduce
3.1 鍵值對
3.1.1 具體含義
3.1.2 為什麼采用鍵/值數據
3.1.3 MapReduce作為一係列鍵/值變換
3.2 MapReduce的Hadoop Java API
3.3 編寫MapReduce程序
3.4 實踐環節:設置classpath
3.5 實踐環節:實現WordCount
3.6 實踐環節:構建JAR文件
3.7 實踐環節:在本地Hadoop集群運行WordCount
3.8 實踐環節:在EMR上運行WordCount
3.8.1 0.20之前版本的Java MapReduce API
3.8.2 Hadoop提供的mapper和reducer實現
3.9 實踐環節:WordCount的簡易方法
3.10 查看WordCount的運行全貌
3.10.1 啓動
3.10.2 將輸入分塊
3.10.3 任務分配
3.10.4 任務啓動
3.10.5 不斷監視JobTracker
3.10.6 mapper的輸入
3.10.7 mapper的執行
3.10.8 mapper的輸齣和reducer的輸入
3.10.9 分塊
3.10.10 可選分塊函數
3.10.11 reducer類的輸入
3.10.12 reducer類的執行
3.10.13 reducer類的輸齣
3.10.14 關機
3.10.15 這就是MapReduce的全部
3.10.16 也許缺瞭combiner
3.11 實踐環節:使用combiner編寫WordCount
3.12 實踐環節:更正使用combiner的WordCount
3.13 Hadoop專有數據類型
3.13.1 Writable和Writable-Comparable接口
3.13.2 wrapper類介紹
3.14 實踐環節:使用Writable包裝類
3.15 輸入/輸齣
3.15.1 文件、split和記錄
3.15.2 InputFormat和RecordReader
3.15.3 Hadoop提供的InputFormat
3.15.4 Hadoop提供的RecordReader
3.15.5 OutputFormat和Record-Writer
3.15.6 Hadoop提供的OutputFormat
3.15.7 彆忘瞭Sequence files
3.16 小結
第4章 開發MapReduce程序
4.1 使用非Java語言操作Hadoop
4.1.1 Hadoop Streaming工作原理
4.1.2 使用Hadoop Streaming的原因
4.2 實踐環節:使用Streaming實現Word-Count
4.3 分析大數據集
4.3.1 獲取UFO目擊事件數據集
4.3.2 瞭解數據集
4.4 實踐環節:統計匯總UFO數據
4.5 實踐環節:統計形狀數據
4.6 實踐環節:找齣目擊事件的持續時間與UFO形狀的關係
4.7 實踐環節:在命令行中執行形狀/時間分析
4.8 實踐環節:使用ChainMapper進行字段驗證/分析
4.9 實踐環節:使用Distributed Cache改進地點輸齣
4.10 計數器、狀態和其他輸齣
4.11 實踐環節:創建計數器、任務狀態和寫入日誌
4.12 小結
第5章 高級MapReduce技術
5.1 初級、高級還是中級
5.2 多數據源聯結
5.2.1 不適閤執行聯結操作的情況
5.2.2 map端聯結與reduce端聯結的對比
5.2.3 匹配賬戶與銷售信息
5.3 實踐環節:使用MultipleInputs實現reduce端聯結
5.3.1 實現map端聯結
5.3.2 是否進行聯結
5.4 圖算法
5.4.1 Graph
5.4.2 圖和MapReduce
5.4.3 圖的錶示方法
5.5 實踐環節:圖的錶示
5.6 實踐環節:創建源代碼
5.7 實踐環節:第一次運行作業
5.8 實踐環節:第二次運行作業
5.9 實踐環節:第三次運行作業
5.10 實踐環節:第四次也是最後一次運行作業
5.10.1 運行多個作業
5.10.2 關於圖的終極思考
5.11 使用語言無關的數據結構
5.11.1 候選技術
5.11.2 Avro簡介
5.12 實踐環節:獲取並安裝Avro
5.13 實踐環節:定義模式
5.14 實踐環節:使用Ruby創建Avro源數據
5.15 實踐環節:使用Java語言編程操作Avro數據
5.16 實踐環節:在MapReduce中統計UFO形狀
5.17 實踐環節:使用Ruby檢查輸齣數據
5.18 實踐環節:使用Java檢查輸齣數據
5.19 小結
第6章 故障處理
6.1 故障
6.1.1 擁抱故障
6.1.2 至少不怕齣現故障
6.1.3 嚴禁模仿
6.1.4 故障類型
6.1.5 Hadoop節點故障
6.2 實踐環節:殺死DataNode進程
6.3 實踐環節:復製因子的作用
6.4 實踐環節:故意造成數據塊丟失
6.5 實踐環節:殺死TaskTracker進程
6.6 實踐環節:殺死JobTracker
6.7 實踐環節:殺死NameNode進程
6.8 實踐環節:引發任務故障
6.9 數據原因造成的任務故障
6.10 實踐環節:使用skip模式處理異常數據
6.11 小結
第7章 係統運行與維護
7.1 關於EMR的說明
7.2 Hadoop配置屬性
7.3 實踐環節:瀏覽默認屬性
7.3.1 附加的屬性元素
7.3.2 默認存儲位置
7.3.3 設置Hadoop屬性的幾種方式
7.4 集群設置
7.4.1 為集群配備多少颱主機
7.4.2 特殊節點的需求
7.4.3 不同類型的存儲係統
7.4.4 Hadoop的網絡配置
7.5 實踐環節:查看默認的機櫃配置
7.6 實踐環節:報告每颱主機所在機櫃
7.7 集群訪問控製
7.8 實踐環節:展示Hadoop的默認安全機製
7.9 管理NameNode
7.10 實踐環節:為fsimage文件新增一個存儲路徑
7.11 實踐環節:遷移到新的NameNode主機
7.12 管理HDFS
7.12.1 數據寫入位置
7.12.2 使用平衡器
7.13 MapReduce管理
7.13.1 通過命令行管理作業
7.13.2 作業優先級和作業調度
7.14 實踐環節:修改作業優先級並結束作業運行
7.15 擴展集群規模
7.15.1 提升本地Hadoop集群的計算能力
7.15.2 提升EMR作業流的計算能力
7.16 小結
第8章 Hive:數據的關係視圖
8.1 Hive概述
8.1.1 為什麼使用Hive
8.1.2 感謝Facebook
8.2 設置Hive
8.2.1 準備工作
8.2.2 下載Hive
8.3 實踐環節:安裝Hive
8.4 使用Hive
8.5 實踐環節:創建UFO數據錶
8.6 實踐環節:在錶中插入數據
8.7 實踐環節:驗證錶
8.8 實踐環節:用正確的列分隔符重定義錶
8.9 實踐環節:基於現有文件創建錶
8.10 實踐環節:執行聯結操作
8.11 實踐環節:使用視圖
8.12 實踐環節:導齣查詢結果
8.13 實踐環節:製作UFO目擊事件分區錶
8.13.1 分桶、歸並和排序
8.13.2 用戶自定義函數
8.14 實踐環節:新增用戶自定義函數
8.14.1 是否進行預處理
8.14.2 Hive和Pig的對比
8.14.3 未提到的內容
8.15 基於Amazon Web Services的Hive
8.16 實踐環節:在EMR上分析UFO數據
8.16.1 在開發過程中使用交互式作業流
8.16.2 與其他AWS産品的集成
8.17 小結
第9章 與關係數據庫協同工作
9.1 常見數據路徑
9.1.1 Hadoop用於存儲檔案
9.1.2 使用Hadoop進行數據預處理
9.1.3 使用Hadoop作為數據輸入工具
9.1.4 數據循環
9.2 配置MySQL
9.3 實踐環節:安裝並設置MySQL
9.4 實踐環節:配置MySQL允許遠程連接
9.5 實踐環節:建立員工數據庫
9.6 把數據導入Hadoop
9.6.1 使用MySQL工具手工導入
9.6.2 在mapper中訪問數據庫
9.6.3 更好的方法:使用Sqoop
9.7 實踐環節:下載並配置Sqoop
9.8 實踐環節:把MySQL的數據導入HDFS
9.9 實踐環節:把MySQL數據導齣到Hive
9.10 實踐環節:有選擇性的導入數據
9.11 實踐環節:使用數據類型映射
9.12 實踐環節:通過原始查詢導入數據
9.13 從Hadoop導齣數據
9.13.1 在reducer中把數據寫入關係數據庫
9.13.2 利用reducer輸齣SQL數據文件
9.13.3 仍是最好的方法
9.14 實踐環節:把Hadoop數據導入MySQL
9.15 實踐環節:把Hive數據導入MySQL
9.16 實踐環節:改進mapper並重新運行數據導齣命令
9.17 在AWS上使用Sqoop
9.18 小結
第10章 使用Flume收集數據
10.1 關於AWS的說明
10.2 無處不在的數據
10.2.1 數據類彆
10.2.2 把網絡流量導入Hadoop
10.3 實踐環節:把網絡服務器數據導入Hadoop
10.3.1 把文件導入Hadoop
10.3.2 潛在的問題
10.4 Apache Flume簡介
10.5 實踐環節:安裝並配置Flume
10.6 實踐環節:把網絡流量存入日誌文件
10.7 實踐環節:把日誌輸齣到控製颱
10.8 實踐環節:把命令的執行結果寫入平麵文件
10.9 實踐環節:把遠程文件數據寫入本地平麵文件
10.9.1 信源、信宿和信道
10.9.2 Flume配置文件
10.9.3 一切都以事件為核心
10.10 實踐環節:把網絡數據寫入HDFS
10.11 實踐環節:加入時間戳
10.12 實踐環節:多層Flume網絡
10.13 實踐環節:把事件寫入多個信宿
10.13.1 選擇器的類型
10.13.2 信宿故障處理
10.13.3 使用簡單元件搭建復雜係統
10.14 更高的視角
10.14.1 數據的生命周期
10.14.2 集結數據
10.14.3 調度
10.15 小結
第11章 展望未來
11.1 全書迴顧
11.2 即將到來的Hadoop變革
11.3 其他版本的Hadoop軟件包
11.4 其他Apache項目
11.4.1 HBase
11.4.2 Oozie
11.4.3 Whir
11.4.4 Mahout
11.4.5 MRUnit
11.5 其他程序設計模式
11.5.1 Pig
11.5.2 Cascading
11.6 AWS資源
11.6.1 在EMR上使用HBase
11.6.2 SimpleDB
11.6.3 DynamoDB
11.7 獲取信息的渠道
11.7.1 源代碼
11.7.2 郵件列錶和論壇
11.7.3 LinkedIn群組
11.7.4 Hadoop用戶群
11.7.5 會議
11.8 小結
隨堂測驗答案
前言/序言
本書目的在於幫助讀者理解Hadoop,並用它解決大數據問題。能使用Hadoop這樣的數據處理技術進行工作是令人激動的。對大規模數據集進行復雜分析的能力,曾一度被大公司和政府機構所壟斷,而現在通過免費的OSS(open source software,開源軟件)即可獲得這種能力。
該領域看上去有些復雜,並且變化節奏很快,所以理解這方麵的基本知識讓人望而生畏。這就是本書誕生的意義所在,它幫助讀者瞭解什麼是Hadoop,Hadoop是如何工作的,以及如何使用Hadoop從數據中提取有價值的信息。
除瞭解釋Hadoop的核心機製,本書也會用幾章內容來學習其他相關技術,這些技術要麼用到瞭Hadoop,要麼需要與Hadoop配套使用。我們的目標是,讓讀者不僅理解Hadoop是什麼,還要理解如何在更寬泛的技術設施中使用Hadoop。
本書中提到的另一種技術是雲計算的應用,尤其是AWS(Amazon Web Services,亞馬遜網絡服務)産品。本書中,我們將展示如何使用這些服務來承載Hadoop工作負載。這就意味著,讀者無需購買任何物理硬件,就能處理大規模數據。
本書內容
本書包括3個主要部分:第1~5章講述瞭Hadoop的核心機製及Hadoop的工作模式;第6~7章涵蓋瞭Hadoop更多可操作的內容;第8~11章介紹瞭Hadoop與其他産品和技術的組閤使用。每章內容具體如下。
第1章“緒論”。簡要介紹瞭産生Hadoop和雲計算的背景。如今看來,這些技術是如此重要。
第2章“安裝並運行Hadoop”。指導讀者完成本地Hadoop集群的安裝,並運行一些示例作業。為瞭進行對比,在托管於亞馬遜服務的Hadoop上執行同樣的任務。
第3章“理解MapReduce”。深入研究Hadoop運行原理,揭示瞭MapReduce作業的執行方式,並展示瞭如何使用Java API編寫MapReduce應用程序。
第4章“開發MapReduce程序”。通過對一個中等規模數據集案例的學習研究,演示如何著手處理和分析新數據源。
第5章“高級MapReduce技術”。介紹一些更復雜的應用MapRedece解決問題的方法,Hadoop似乎並不直接適用於這些問題。
第6章“故障處理”。詳細檢查Hadoop備受贊譽的高可用性和容錯能力,通過強製結束進程和故意使用錯誤數據等方式故意製造破壞,以檢驗Hadoop在上述情況下的錶現。
第7章“係統運行與維護”。從更具操作性的角度講解Hadoop,這對於Hadoop集群的管理人員非常有用。本章在介紹一些最佳做法的同時,也描述瞭如何預防最糟糕的操作性災難,因此係統管理員可以高枕無憂瞭。
第8章“Hive:數據的關係視圖”。介紹Apache Hive,它允許使用類似SQL的語法對Hadoop數據進行查詢。
第9章“與關係數據庫協同工作”。探討Hadoop如何與現有數據庫融閤,特彆是如何將數據從一個數據庫移到另一個數據庫。
第10章“使用Flume收集數據”。介紹如何使用Apache Flume從多
圖靈程序設計叢書:Hadoop基礎教程 [Hadoop Beginner's Guide] 下載 mobi epub pdf txt 電子書