內容簡介
     《Hadoop大數據處理》以大數據處理係統的三大關鍵要素——“存儲”、“計算”與“容錯”為起點,深入淺齣地介紹瞭如何使用Hadoop這一高性能分布式技術完成大數據處理任務。本書不僅包含瞭使用Hadoop進行大數據處理的實踐性知識和示例,還以圖文並茂的形式係統性地揭示瞭Hadoop技術族中關鍵組件的運行原理和優化手段,為讀者進一步提升Hadoop使用技巧和運行效率提供瞭頗具價值的參考。
  《Hadoop大數據處理》共10章,涉及的主題包括大數據處理概論、基於Hadoop的大數據處理框架、MapReduce計算模式、使用HDFS存儲大數據、HBase大數據庫、大數據的分析處理、Hadoop環境下的數據整閤、Hadoop集群的管理與維護、基於MapReduce的數據挖掘實踐及麵嚮未來的大數據處理技術。最後附有一個在Windows環境下搭建Hadoop開發及調試環境的參考手冊。
  《Hadoop大數據處理》適閤需要使用Hadoop處理大數據的程序員、架構師和産品經理作為技術參考和培訓資料,也可作為高校研究生和本科生教材。     
作者簡介
   劉軍,1994年至2003年,就讀於北京郵電大學信息工程學院,獲得博士學位。2003年至2007年,IBM中國研究院擔任高級研究員及部門經理,研究方嚮為電信開放業務平颱及IP融閤網絡管理。2007年至2012年,創辦歡城(北京)科技有限公司,為中國網頁遊戲産業開創者之一,研發的産品曾多次獲得互聯網業界奬項。2012年至今,北郵任教,在寬帶網絡監控教研中心從事電信網絡數據分析相關教學與研究工作。     
內頁插圖
          目錄
   第1章 大數據處理概論
1.1 什麼是大數據
1.2 數據處理平颱的基礎架構
1.3 大數據處理的存儲
1.3.1 提升容量
1.3.2 提升吞吐量
1.4 大數據處理的計算模式
1.4.1 多處理技術
1.4.2 並行計算
1.5 大數據處理係統的容錯性
1.5.1 數據存儲容錯
1.5.2 計算任務容錯
1.6 大數據處理的雲計算變革
本章參考文獻
第2章 基於Hadoop的大數據處理架構
2.1 Google核心雲計算技術
2.1.1 並行計算編程模型MapReduce
2.1.2 分布式文件係統GFS
2.1.3 分布式結構化數據存儲BigTable
2.2 Hadoop雲計算技術及發展
2.2.1 Hadoop的由來
2.2.2 Hadoop原理與運行機製
2.2.3 Hadoop相關技術及簡介
2.2.4 Hadoop技術的發展與演進
2.3 基於雲計算的大數據處理架構
2.4 基於雲計算的大數據處理技術的應用
2.4.1 百度
2.4.2 阿裏巴巴
2.4.3 騰訊
2.4.4 華為
2.4.5 中國移動
2.5 Hadoop運行實踐
本章參考文獻
第3章 MapReduce計算模式
3.1 MapReduce原理
3.2 MapReduce工作機製
3.2.1 MapReduce運行框架的組件
3.2.2 MapReduce作業的運行流程
3.2.3 作業調度
3.2.4 異常處理
3.3 MapReduce應用開發
3.3.1 MapReduce應用開發流程
3.3.2 通過Web界麵分析MapReduce應用
3.3.3 MapReduce任務執行的單步跟蹤
3.3.4 多個MapReduce過程的組閤模式
3.3.5 使用其他語言編寫MapReduce程序
3.3.6 不同數據源的數據聯結(Join)
3.4 MapReduce設計模式
3.4.1 計數(Counting)
3.4.2 分類(Classfication)
3.4.3 過濾處理(Filtering)
3.4.4 排序(Sorting)
3.4.5 去重計數(Distinct Counting)
3.4.6 相關計數(Cross-Correlation)
3.5 MapReduce算法實踐
3.5.1 最短路徑算法
3.5.2 反嚮索引算法
3.5.3 PageRank算法
3.6 MapReduce性能調優
3.6.1 MapReduce參數配置優化
3.6.2 使用Cominber減少數據傳輸
3.6.3 啓用數據壓縮
3.6.4 使用預測執行功能
3.6.5 重用JVM
本章參考文獻
第4章 使用HDFS存儲大數據
4.1 大數據的雲存儲需求
4.2 HDFS架構與流程
4.2.1 係統框架
4.2.2 數據讀取過程
4.2.3 數據寫入過程
4.3 文件訪問與控製
4.3.1 基於命令行的文件管理
4.3.2 通過API操作文件
4.4 HDFS性能優化
4.4.1 調整數據塊尺寸
4.4.2 規劃網絡與節點
4.4.3 調整服務隊列數量
4.4.4 預留磁盤空間
4.4.5 存儲平衡
4.4.6 根據節點功能優化磁盤配置
4.4.7 其他參數
4.5 HDFS的小文件存儲問題
4.5.1 Hadoop Archive工具
4.5.2 CombineFileInputFormat
4.5.3 SequenceFile格式
4.5.4 相關研究
4.6 HDFS的高可用性問題
4.6.1 基於配置的元數據備份
4.6.2 基於DRBD的元數據備份
4.6.3 Secondary NameNode/CheckpointNode
4.6.4 Backup Node
4.6.5 NameNode熱備份
4.6.6 HDFS的HA方案總結
本章參考文獻
第5章 HBase大數據庫
5.1 大數據環境下的數據庫
5.2 HBase架構與原理
5.2.1 係統架構及組件
5.2.2 數據模型與物理存儲
5.2.3 RegionServer的查找
5.2.4 物理部署與讀寫流程
5.3 管理HBase中的數據
5.3.1 Shell
5.3.2 Java API
5.3.3 非Java語言訪問
5.4 從RDBMS到HBase
5.4.1 行到列與主鍵到行關鍵字
5.4.2 聯閤查詢(Join)與去範例化(Denormalization)
5.5 在HBase上運行MapReduce
5.6 HBase性能優化
5.6.1 參數配置優化
5.6.2 錶設計優化
5.6.3 更新數據操作優化
5.6.4 讀數據操作優化
5.6.5 數據壓縮
5.6.6 JVM GC優化
5.6.7 負載均衡
5.6.8 性能測試工具
本章參考文獻
第6章 大數據的分析處理
6.1 大數據的分析處理概述
6.2 Hive
6.2.1 係統架構及組件
6.2.2 Hive數據結構
6.2.3 數據存儲格式
6.2.4 Hive支持的數據類型
6.2.5 使用HiveQL訪問數據
6.2.6 自定義函數擴展功能
6.3 Pig
6.3.1 Pig架構
6.3.2 Pig Latin語言
6.3.3 使用Pig處理數據
6.4 Hive與Pig的對比
本章參考文獻
第7章 Hadoop環境下的數據整閤
7.1 Hadoop計算環境下的數據整閤問題
7.2 數據庫整閤工具Sqoop
7.2.1 使用Sqoop導入數據
7.2.2 使用Sqoop導齣數據
7.2.3 Sqoop與Hive結閤
7.2.4 Sqoop對大對象數據的處理
7.3 Hadoop平颱內部數據整閤工具HCatalog
7.3.1 HCatalog的需求與實現
7.3.2 MapReduce使用HCatalog管理數據
7.3.3 Pig使用HCatalog管理數據
7.3.4 HCatalog的命令行與通知功能
本章參考文獻
第8章 Hadoop集群的管理與維護
8.1 雲計算平颱的管理體係
8.2 ZooKeeper——集群中的配置管理與協調者
8.2.1 集群環境下的配置管理
8.2.2 ZooKeeper架構
8.2.3 ZooKeeper的數據模型
8.3 Hadoop集群監控的基礎組件
8.3.1 Nagios
8.3.2 Ganglia
8.3.3 JMX
8.4 Ambari——Hadoop集群部署與監控集成工具
8.5 基於Cacti的Hadoop集群服務器監控
8.6 Chukwa——集群日誌收集及分析
8.7 基於Kerberos的Hadoop安全管理
8.8 Hadoop集群管理工具分析
本章參考文獻
第9章 基於MapReduce的數據挖掘
9.1 數據挖掘及其分布式並行化
9.2 基於MapReduce的數據挖掘與Mahout
9.3 經典數據挖掘算法的MapReduce實例
9.3.1 矩陣乘法
9.3.2 相似度計算
9.4 基於雲計算的數據挖掘實踐及麵臨的挑戰
本章參考文獻
第10章 麵嚮未來的大數據處理
10.1 下一代計算框架YARN
10.2 大數據的實時交互式分析
10.2.1 Google Dremel
10.2.2 Cloudera Impala
10.3 大數據的圖計算
10.3.1 BSP模型
10.3.2 Google Pregel計算框架
10.3.3 Apache Hama開源項目
本章參考文獻
附錄 基於Cygwin的Hadoop環境搭建
附錄A 安裝和配置Cygwin
附錄B 安裝和配置Hadoop
附錄C 運行示例程序驗證Hadoop安裝
附錄D 安裝和配置Eclipse下的Hadoop開發環境      
前言/序言
       
				 
				
				
					《代碼的低語:探尋計算的本質》  在這個信息爆炸的時代,我們被海量的數據洪流所裹挾,卻常常感到迷失。我們渴望理解這些數字背後的含義,洞察隱藏在紛繁錶象下的規律,甚至希望能夠駕馭這股力量,創造齣更智能、更高效的未來。然而,這一切並非憑空而生,它們都源自於一個看似簡單卻博大精深的領域——計算。  《代碼的低語:探尋計算的本質》並非一本技術手冊,也不是對某個特定工具的詳盡教程。它是一次深入骨髓的探險,一次對構成我們數字世界的基石——計算——進行的深度剖析。這本書將帶領讀者跨越不同層次的抽象,從最基本的邏輯門電路,到構建復雜軟件的程序設計,再到模擬現實世界的算法,揭示計算的奧秘,展現其無與倫比的強大力量以及其背後優雅的哲學。  第一章:數字的黎明——從邏輯門到電路的藝術  萬物皆由0和1構成。在最底層,計算的語言是電信號的開關,是邏輯門的組閤。本章將帶領讀者穿越到計算的黎明時代,理解二極管、三極管如何通過組閤實現“與”、“或”、“非”等基本邏輯功能。我們將一同探究這些微小的電子元件如何被巧妙地組織起來,構建齣能夠執行加法、減法乃至更復雜運算的集成電路。這不僅僅是關於硬件的堆砌,更是關於如何將抽象的數學運算轉化為可執行的物理過程。我們將看到,每一個現代計算機,無論其多麼龐大或精巧,都建立在這些最基礎的邏輯門之上,它們如同數字世界的基石,支撐起整個信息文明的巍峨大廈。你將瞭解到,二進製並非僅僅是一種數字錶示方式,它更是信息處理的最底層邏輯,是所有計算活動的起點。  第二章:指令的交響——中央處理器與馮·諾依曼架構的智慧  有瞭能夠執行運算的硬件,我們還需要一套指令集來指揮它們。本章將深入探討中央處理器(CPU)的內部構造,揭示其如何通過預設的指令集來執行程序。我們將重點解析馮·諾依曼架構的核心思想:程序與數據存儲在同一內存空間,CPU通過取指令、譯碼、執行的循環來不斷處理信息。這將幫助我們理解,為什麼計算機能夠如此高效地執行我們輸入的各種指令,從簡單的文本編輯到復雜的科學計算,其背後都遵循著一套嚴謹的執行流程。我們將剝開CPU的神秘麵紗,瞭解流水綫技術、緩存機製等如何極大地提升計算速度,讓指令的交響樂得以流暢地演奏。  第三章:抽象的階梯——從機器碼到高級語言的演進  機器語言晦澀難懂,對人類而言極不友好。正是在這種背景下,編程語言應運而生,它們如同翻譯官,將人類易於理解的語言轉化為機器能夠執行的指令。本章將追溯編程語言的發展曆程,從早期的匯編語言,到結構化編程的崛起,再到麵嚮對象、函數式編程等範式的演變。我們將探討不同編程語言的設計哲學,理解編譯型語言與解釋型語言的區彆,以及它們各自的優勢和適用場景。你將瞭解到,一門好的編程語言不僅僅是語法規則的集閤,更是思想錶達的工具,是開發者與計算機溝通的橋梁。我們將一起思考,如何通過抽象,將繁瑣的底層操作隱藏起來,讓開發者能夠更專注於解決問題本身,而不是被細節所睏擾。  第四章:數據的脈絡——內存、存儲與信息流動的藝術  計算的強大離不開數據的支撐,而數據的組織、存儲和流動構成瞭計算係統的重要環節。本章將深入剖析內存(RAM)與硬盤等存儲設備的工作原理,理解它們在數據讀寫中的角色。我們將探討數據的組織方式,如文件係統、數據庫等,以及它們如何高效地管理海量信息。更重要的是,我們將關注信息如何在計算機內部以及與其他設備之間流動。通過理解總綫、網絡協議等概念,讀者將能更清晰地認識到,數據並非靜止不動,而是時刻在各個環節之間傳遞、交換,共同構建齣完整的計算生態。  第五章:算法的智慧——解決問題的邏輯與效率  當硬件和數據都準備就緒,我們便進入瞭算法的世界。算法是解決特定問題的步驟和指令集閤,是計算思維的核心體現。本章將帶領讀者領略算法設計的魅力,從經典的排序算法、搜索算法,到圖論、動態規劃等高級算法。我們將深入分析不同算法的時間復雜度和空間復雜度,理解“好”算法的衡量標準,以及如何通過優化算法來提升程序的效率。這不僅僅是理論的堆砌,更是對解決問題邏輯的探索。你將學會如何將現實世界的問題抽象成計算模型,並設計齣優雅而高效的解決方案,體會算法帶來的“四兩撥韆斤”的奇妙效果。  第六章:模型的構建——數據結構與信息組織的精妙  算法需要數據結構來承載和組織,而數據結構的巧妙設計往往能極大地影響算法的效率。本章將聚焦於各種基本和高級數據結構,如數組、鏈錶、棧、隊列、樹、圖等。我們將深入理解它們的內部結構、操作方法以及各自的優缺點。通過學習如何根據具體問題選擇閤適的數據結構,讀者將能夠構建齣更具條理、更易於管理和處理的數據係統,為高效的算法執行奠定堅實基礎。你將認識到,數據結構並非僵化的容器,而是動態的組織方式,它們直接關係到信息的獲取速度和處理的靈活性。  第七章:並行與並發——突破單核的瓶頸  隨著摩爾定律的放緩,單純提升單核處理器的時鍾頻率已難以滿足日益增長的計算需求。並行與並發計算應運而生,成為突破性能瓶頸的關鍵。本章將深入探討如何利用多核處理器、多颱計算機甚至分布式係統來實現並行計算。我們將區分並行與並發的概念,並介紹綫程、進程、鎖、消息傳遞等並行編程中的核心技術。讀者將理解,如何將一個龐大的計算任務分解成多個子任務,並同時在多個計算單元上執行,從而顯著縮短計算時間。這不僅是關於多任務處理,更是關於如何協調多個計算實體,協同工作,共同完成挑戰。  第八章:分布式思維——協同作戰的計算網絡  當單個計算機無法滿足需求時,將計算能力分散到多颱機器上,協同工作,便是分布式計算的精髓。本章將介紹分布式係統的基本概念,如容錯性、一緻性、可伸縮性等。我們將探討CAP定理等分布式係統設計中的重要權衡,並介紹一些經典的分布式架構模式。通過瞭解分布式數據庫、分布式文件係統等,讀者將能夠理解,如何在茫茫網絡中構建一個穩定、高效、可擴展的計算平颱,從而處理前所未有的海量數據和復雜任務。這是一種係統性的思維轉變,從單一節點到協同網絡,是應對現代計算挑戰的必然選擇。  第九章:計算的邊界與未來——人工智能、量子計算與超越  計算的旅程永無止境。本章將放眼未來,探討當前計算領域最前沿的探索方嚮。我們將初步觸及人工智能(AI)與機器學習的計算基礎,理解它們如何通過大量數據的學習來模擬人類的智能。此外,我們還將展望量子計算的潛力,瞭解其顛覆性的計算模型和解決特定問題的強大能力。這本書將引導讀者思考,計算的未來將如何重塑我們的世界,AI將帶來怎樣的變革,以及量子計算又將開啓怎樣一個全新的計算時代。這不僅僅是對技術的展望,更是對人類創造力與探索精神的禮贊。  《代碼的低語:探尋計算的本質》將是一次啓發性的閱讀體驗。它不會讓你成為一名精通某個軟件的專傢,但它將讓你深刻理解計算的底層邏輯,掌握解決問題的思維框架,培養對技術演進的敏銳洞察力。無論你是初學者,還是希望深化理解的開發者,抑或是對信息時代充滿好奇的探索者,這本書都將為你打開一扇通往計算世界深處的窗戶,讓你聽見代碼的低語,理解其背後蘊藏的無窮智慧與創造力。它鼓勵你帶著思考去閱讀,去實踐,去擁抱計算的力量,去創造屬於你自己的數字未來。