內容簡介
     大數據讓我們以一種****的方式,通過對海量數據進行分析,獲得有巨大價值的産品和服務,最終形成變革之力。
  《大數據開發工程師係列:Hadoop & Spark大數據開發實戰》圍繞Hadoop和Spark這兩個主流技術進行講解,主要內容包括Hadoop環境配置、分布式文件係統HDFS、分布式計算框架MapReduce、資源調度框架YARN與Hadoop新特性、大數據數據倉庫Hive、離綫處理輔助係統、SparkCore、Spark SQL、Spark Streaming等知識。
  為保證學習效果,《大數據開發工程師係列:Hadoop & Spark大數據開發實戰》緊密結閤實際應用,利用大量案例說明和實踐,提煉含金量十足的開發經驗。
  《大數據開發工程師係列:Hadoop & Spark大數據開發實戰》使用Hadoop和Spark進行大數據開發,並配以完善的學習資源和支持服務,包括視頻教程、案例素材下載、學習交流社區、討論組等終身學習內容,為開發者帶來全方位的學習體。     
內頁插圖
          目錄
   前言
關於引用作品版權說明
第1章  初識Hadoop
本章任務
任務1  大數據概述
1.1.1  大數據基本概念
1.1.2  大數據對於企業帶來的挑戰
任務2  Hadoop概述
1.2.1  Hadoop簡介
1.2.2  HadooD生態係統
1.2.3  大數據應用案例
任務3  Hadoop環境措建
1.3.1  虛擬機安裝
1.3.2  Linux係統安裝
1.3.3  Hadoop僞分布式環境搭建
本章總結
本章作業
第2章  分布式文件係統HDFS
本章任務
任務1  初識HDFS
2.1.1  HDFS概述
2.1.2  HDFS基本概念
2.1.3  HDFS體係結構
任務2  HDFS操作
2.2.1  HDFS shell訪問
2.2.2  Java API訪問
任務3  HDFS運行機製
2.3.1  HDFS文件讀寫流程
2.3.2  HDFS副本機製
2.3.3  數據負載均衡
2.3.4  機架感知
任務4  HDFS進階
2.4.1  Hadoop序列化
2.4.2  基於文件的數據結構SequenceFile
2.4.3  基於文件的數據結構MapFile
本章總結
本章作業
第3章  分布式計算框架MapReduce
本章任務
任務1  MapReduce編程模型
3.1.1  MapReduce概述
3.1.2  MapReduce編程模型
3.1.3  MapReduce Woracount編程實例
任務2  MapReduce進階
3.2.1  MapReduce類型
3.2.2  MapReduce輸入格式
3.2.3  MapReduce輸齣格式
3.2.4  Combiner
3.2.5  Partitioner
3.2.6  RecordReader
任務3  MapReduce高級編程
3.3.1  Join的MapReduce實現
3.3.2  排序的MapReduce實現
3.3.3  二次排序的MapReduce實現
3.3.4  閤並小文件的MapReduce實現
本章總結
本章作業
第4章  YARN與Hadoop新特性
本章任務
任務1  初識資源調度框架YARN
4.1.1  YARN産生背景
4.1.2  初識YARN
4.1.3   YARN運行機製
任務2  HDFS新特性
4.2.1  HDFS NameNOde HA
4.2.2  HDFS NameN0de Federation
4.2.3  HDFSSnaoshots
4.2.4  WebHOFS RESTAPI
4.2.5  DistCp
任務3  YARN新特性
4.3.1  ResourceManager Restart
4.3.2  ResourceManager HA
本章總結
本章作業
第5章  大數據數據倉庫Hive
本章任務
任務1  初識Hive
5.1.1  Hiye簡介
5.1.2  Hiye架構
5.1.3  Hiye與Hadoop的關係
5.1.4  Hive與傳統關係型數據庫對比
5.1.5  Hive數據存儲
5.1.6  Hive環境部署
任務2  Hive基本操作
5.2.1  DDL操作
5.2.2  DML操作
5.2.3  Hive shell操作
任務3  Hive進階
5.3.1  Hive函數
5.3.2  Hive常用調優策略
本章總結
本章作業
第6章  離綫處理輔助係統
本章任務
任務1  使用Sqoop完成數據遷移
6.1.1  Sqoop簡介
6.1.2  導入MysQL數據到HDFS
6.1.3  導齣HOFS數據到MySQL
6.1.4  導入MySQL數據到Hive
6.1.5  Sqoop中Job的使用
任務2  工作流調度框架Azkaban
6.2.1  Azkaban簡介
6.2.2  Azkaban部署
6.2.3  Azkaban實戰
本章總結
本章作業
第7章  Spark入門
本章任務
任務1  初識Spark
7.1.1  Spark概述
7.1.2  Spark優點
7.1.3  Spark生態係統BDAs
任務2  Scala入門
7.2.1  Scala介紹
7.2.2  Scala函數
7.2.3  Scala麵嚮對象
7.2.4  Scala集閤
7.2.5  Scala進階
任務3  獲取Spark源碼並進行編譯
7.3.1  獲取Spark源碼
7.3.2  Spark源碼編譯
任務4  第次與Spark親密接觸
7.4.1  Spark環境部署
7.4.2  Spark完成詞頻統計分析
本章總結
本章作業
第8章  SparkCore
本章任務
任務1  SparK的基石RDD
8.1.1  RDD概述
8.1.2  RDD常用創建方式
8.1.3  RDD的轉換
8.1.4  ROD的動作
8.1.5  RDD的依賴
任務2  RDD進階
8.2.1  RDD緩存
8.2.2  共享變量(Shared Variables)
8.2.3  Spark核心概念
8.2.4  Spark運行架構
任務3  基於RDD的Spark編程
8.3.1  開發前置準備
8.3.2  使用SparkCore開發詞頻計數WordCount
8.3.3  使用SparkCore進行年齡統計
本章總結
本章作業
第9章  Spark SQL
本章任務
任務1 SparkSQL前世今生
9.1.1  為什麼需要SQL
9.1.2  常用的SQL on Hadoop框架
9.1.3  Spark SQL概述
任務2  Spark SQL編程
9.2.1  SparkSQL編程入口
9.2.2  DataFrame是什麼
9.2.3  DataFrame編程
任務3  SparkSQL進階
9.3.1  Spark SQL外部數據源操作
9.3.2  SparkSQL函數的使用
9.3.3  Spark SQL常用調優
本章總結
本章作業
第10章  Spark Streaming
本章任務
任務1  初始流處理框架及Spark Streaming
10.1.1  流處理框架概述
10.1.2  Spark Streaming概述
任務2  Spark Streaming編程
10.2.1  Spark Streaming核心概念
10.2.2  使用Spark Streaming編程
任務3  Spark Streaming進階
10.3.1  Spark Streaming整閤Flume
10.3.2  Spark Streaming整閤Kafka
10.3.3  Spark Streaming常用優化策略
本章總結
本章作業      
前言/序言
     叢書設計:
  準備好瞭嗎?進入大數據時代!大數據已經並將繼續影響人類的方方麵麵。2015年8月31日,經李剋強總理批準,國務院正式下發《關於印發促進大數據發展行動綱要的通知》,這是從國傢層麵正式宣告大數據時代的到來!企業資本則以BAT互聯網公司為首,不斷進行大數據創新,從而實現大數據的商業價值。本叢書根據企業人纔實際需求,參考曆史學習難度麯綫,選取“Java+大數據”技術集作為學習路徑,旨在為讀者提供一站式實戰型大數據開發學習指導,幫助讀者踏上由開發入門到大數據實戰的互聯網+大數據開發之旅!
  叢書特點:
  1.以企業需求為設計導嚮
  滿足企業對人纔的技能需求是本叢書的核心設計原則,為此課工場大數據開發教研團隊,通過對數百位BAT-綫技術專傢進行訪談、對上韆傢企業人力資源情況進行調研、對上萬個企業招聘崗位進行需求分析,從而實現技術的準確定位,達到課程與企業需求的高契閤度。
  2.以任務驅動為講解方式
  叢書中的技能點和知識點都由任務驅動,讀者在學習知識時不僅可以知其然,而且可以知其所以然,幫助讀者融會貫通、舉一反三。
  3.以實戰項目來提升技術
  本叢書均設置項目實戰環節,該環節綜閤運用書中的知識點,幫助讀者提升項目開發能力。每個實戰項目都設有相應的項目思路指導、重難點講解、實現步驟總結和知識點梳理。
  4.以互聯網+實現終身學習
  本叢書可通過使用課工場APP進行二維碼掃描來觀看配套視頻的理論講解和案例操作,同時課工場(www.kgc.cn)開闢教材配套版塊,提供案例代碼及案例素材下載。此外,課工場還為讀者提供瞭體係化的學習路徑、豐富的在綫學習資源和活躍的學習社區,方便讀者隨時學習。
  讀者對象:
  1.大中專院校的老師和學生
  2.編程愛好者
  3.初中級程序開發人員
  4.相關培訓機構的老師和學員
  讀者服務:
  為解決本叢書中存在的疑難問題,讀者可以訪問課工場官方網站(www.kgc.cn),也可以發送郵件到ke@kgc.cn,我們的客服專員將竭誠為您服務。
  緻謝:
  本叢書是由課工場大數據開發教研團隊研發編寫的,課工場(kgc.cn)是北京大學旗下專注於互聯網人纔培養的高端教育品牌。作為國內互聯網人纔教育生態係統的構建者,課工場依托北京大學優質的教育資源,重構職業教育生態體係,以學員為本、以企業為基,構建教學大咖、技術大咖、行業大咖三咖一體的教學矩陣,為學員提供高端、靠譜、炫酷的學習內容!
  感謝您購買本叢書,希望本叢書能成為您大數據開發之旅的好夥伴!    
				
 
				
				
					深入理解現代數據處理的基石:從數據倉庫到實時分析的演進之路  在這個數據爆炸的時代,如何高效、智能地處理和分析海量數據,已經成為衡量企業競爭力的關鍵。本書將帶您踏上一段深入理解現代數據處理技術演進的旅程,從傳統的數據倉庫概念齣發,逐步探索分布式計算的崛起,直至當前備受矚目的實時流式處理和機器學習集成。我們旨在為您構建一個清晰、係統的認知框架,幫助您掌握驅動當今數據驅動決策的核心技術和理念。  第一章:迴溯與展望——數據處理的演進史  在開始探索前沿技術之前,迴顧曆史是理解現狀的基石。本章將追溯數據處理技術的發展脈絡。我們將從早期的數據管理方式聊起,例如文件係統和簡單的數據庫,探討它們在處理結構化數據時的局限性。接著,我們會重點介紹關係型數據庫的齣現及其對數據組織和查詢方式帶來的革命。  隨著數據量的指數級增長,單機處理能力迅速觸及瓶頸。這催生瞭對分布式處理的需求,而“數據倉庫”(Data Warehouse)的概念也應運而生。我們將詳細闡釋數據倉庫的核心理念,包括ETL(Extract, Transform, Load)流程、OLAP(Online Analytical Processing)技術以及其在商業智能(BI)領域的應用。您將瞭解到數據倉庫如何幫助企業整閤分散的數據,進行統一的分析和報告,從而支持業務決策。  然而,傳統數據倉庫在處理半結構化和非結構化數據,以及應對海量、高吞吐量數據流時,依然麵臨挑戰。大數據時代的到來,對數據存儲、計算能力以及處理速度提齣瞭全新的要求。本章的最後,我們將為接下來的分布式計算和更現代的數據處理範式奠定基礎,展望未來的技術發展趨勢。  第二章:分布式計算的曙光——Hadoop生態圈詳解  當單機不再滿足需求,分布式計算便成為必然。本章將深入剖析Hadoop生態圈,這是大數據處理的基石之一。我們將從Hadoop的核心組件——HDFS(Hadoop Distributed File System)和MapReduce——講起。  HDFS的分布式存儲機製將打破單機存儲的容量限製。您將瞭解其主從架構(Master/Slave),包括NameNode(名稱節點)和DataNode(數據節點)的角色和職責,以及文件塊(Block)的分布、復製策略和容錯機製。我們將探討HDFS如何實現高可用性和數據冗餘,確保數據安全可靠。  MapReduce作為Hadoop的計算引擎,將開啓並行處理的新篇章。我們將詳細講解MapReduce的編程模型,包括Map(映射)階段和Reduce(歸約)階段的工作流程。通過實際的例子,您將理解如何將復雜的計算任務分解為一係列可並行的Map和Reduce操作,並學會如何編寫簡單的MapReduce程序。此外,我們還會討論MapReduce的局限性,例如其批處理特性帶來的延遲問題,為後續介紹更快的處理引擎做鋪墊。  除瞭HDFS和MapReduce,Hadoop生態圈還包含瞭一係列協同工作的工具。本章將對其中一些關鍵組件進行介紹,例如:     YARN(Yet Another Resource Negotiator):作為Hadoop 2.x的核心,YARN負責集群資源的統一管理和調度,使得Hadoop能夠運行MapReduce以外的計算框架。我們將探討其ResourceManager、NodeManager、ApplicationMaster等核心概念。    Hive:一個構建在Hadoop之上的數據倉庫工具,它提供瞭類SQL的查詢語言(HiveQL),方便用戶在Hadoop上進行數據分析。我們將討論Hive的架構,包括Metastore、Driver、Compiler等,以及其如何將HiveQL轉換為MapReduce或Spark作業。    HBase:一個分布式、非關係型(NoSQL)的列式數據庫,它運行在HDFS之上,為Hadoop提供瞭實時讀寫海量數據的能力。我們將瞭解HBase的數據模型、Region、Tablet等概念,以及其適用場景。    ZooKeeper:一個分布式協調服務,在Hadoop生態係統中扮演著至關重要的角色,用於實現分布式應用的統一命名、狀態同步、集群管理等。  通過本章的學習,您將全麵掌握Hadoop生態圈的基本原理、核心組件及其相互關係,為後續更高級的數據處理技術打下堅實基礎。  第三章:實時計算的引擎——Spark性能飛躍的奧秘  當Hadoop的批處理模式已不能滿足日益增長的實時數據處理需求時,Spark應運而生,以其卓越的性能和易用性,迅速成為大數據處理領域的新寵。本章將深入剖析Apache Spark,揭示其性能飛躍的奧秘。  Spark的核心優勢在於其內存計算能力。我們將詳細講解Spark的RDD(Resilient Distributed Dataset)抽象,理解RDD的不可變性、惰性求值以及分布式數據集的錶示。您將學習如何通過各種轉換(Transformations)和行動(Actions)操作來構建和操作RDD,實現數據處理的邏輯。  RDD的革命性在於其引入瞭彈性分布式數據集的概念,可以在內存中緩存中間結果,從而避免瞭MapReduce中頻繁的磁盤I/O操作。本章將重點介紹Spark的DAG(Directed Acyclic Graph)調度器,它能夠有效地構建和優化計算任務的執行計劃,最大限度地利用內存資源,實現比MapReduce更快的執行速度。  Spark不僅僅局限於批處理,它更是一個統一的數據處理引擎,能夠支持多種工作負載。我們將重點介紹Spark的以下核心組件:     Spark SQL:用於處理結構化數據,它允許用戶通過SQL或DataFrame API對數據進行查詢和分析。我們將深入理解DataFrame和Dataset的抽象,以及Spark SQL的Catalyst優化器如何進行查詢優化。    Spark Streaming:用於處理實時數據流。我們將講解Spark Streaming如何將數據流分割成小的RDD批次進行處理,實現近乎實時的流式計算。您將學習如何構建Spark Streaming應用程序,處理來自Kafka、Flume等數據源的實時數據。    MLlib(Machine Learning Library):Spark的機器學習庫,提供瞭豐富的算法和工具,用於構建和部署機器學習模型。我們將介紹MLlib支持的分類、迴歸、聚類、降維等算法,以及如何將其集成到Spark數據處理流程中。    GraphX:Spark的圖計算框架,用於處理圖結構數據。我們將簡要介紹GraphX的基本概念和API,展示其在社交網絡分析、推薦係統等領域的應用潛力。  本章將通過實例,演示如何利用Spark的強大功能,實現高效的數據分析、實時流處理和機器學習任務。您將深刻理解Spark如何通過內存計算、DAG調度和統一的API,革新大數據處理的模式。  第四章:數據集成與治理——構建可靠的數據管道  即使擁有強大的計算引擎,如果數據本身質量不高、集成睏難,其價值也將大打摺扣。本章將聚焦於數據集成與治理,探討如何構建可靠、高效的數據管道,確保數據的可用性和可信度。  我們將從數據源的多樣性齣發,分析不同類型的數據源(如關係型數據庫、NoSQL數據庫、日誌文件、API接口、消息隊列等)的特點,以及如何有效地將它們的數據抽取、轉換和加載到統一的數據存儲中。     ETL/ELT流程的優化:我們將迴顧傳統的ETL流程,並介紹在Hadoop和Spark環境下,如何使用Sqoop、Flume、Kafka Connect等工具實現高效的數據導入,以及如何利用Spark的強大處理能力進行數據轉換和清洗。同時,我們也會探討ELT(Extract, Load, Transform)模式在數據倉庫和數據湖中的應用。    數據質量管理:數據質量是數據價值的生命綫。本章將討論數據校驗、數據清洗、去重、異常值檢測等關鍵的數據質量控製技術。您將瞭解到如何利用自動化工具和規則來保障數據的準確性和完整性。    數據治理與元數據管理:隨著數據量的增長,對數據的管理變得越來越重要。我們將介紹數據治理的基本概念,包括數據目錄、數據譜係(Data Lineage)、數據安全和閤規性。您將瞭解到如何使用Apache Atlas等工具來管理元數據,實現數據的可追溯和可理解。    數據管道的構建與監控:一個健壯的數據管道需要可靠的調度和監控機製。我們將探討Airflow、Oozie等工作流調度工具在自動化數據處理任務中的應用,以及如何通過Prometheus、Grafana等工具對數據管道的運行狀態進行實時監控和告警。  通過本章的學習,您將掌握構建健壯、可靠數據管道的關鍵技術和最佳實踐,為上層的數據分析和應用提供高質量的數據支撐。  第五章:走嚮智能——數據挖掘與機器學習在實際應用中的落地  大數據處理的最終目標往往是為瞭從中挖掘齣有價值的洞察,並將其應用於智能化的業務場景。本章將重點關注數據挖掘和機器學習的實際應用。  我們將從機器學習的基本概念入手,包括監督學習、無監督學習、半監督學習以及強化學習。您將瞭解常見的機器學習算法,如綫性迴歸、邏輯迴歸、決策樹、隨機森林、支持嚮量機(SVM)、K-Means聚類等。     模型訓練與評估:本章將詳細介紹如何使用MLlib或其他框架(如Scikit-learn)來訓練機器學習模型。您將學習到如何進行特徵工程,如何選擇閤適的模型,以及如何使用交叉驗證、準確率、召迴率、F1分數等指標來評估模型的性能。    模型部署與集成:訓練好的模型需要能夠被實際應用所調用。我們將探討模型部署的不同策略,包括模型服務化(如使用RESTful API)、批量預測等。您將瞭解如何將機器學習模型集成到現有的數據處理流程或業務係統中。    實際應用場景解析:本章將通過多個實際案例,展示大數據技術在各個領域的應用:        推薦係統:如何利用用戶行為數據和協同過濾、矩陣分解等算法,構建個性化的商品或內容推薦係統。        欺詐檢測:如何通過異常檢測、分類模型來識彆金融交易中的欺詐行為。        客戶流失預測:如何分析客戶行為數據,預測客戶流失的可能性,並采取相應的挽留措施。        自然語言處理(NLP):如何利用Spark NLP或第三方庫,進行文本情感分析、主題建模、實體識彆等。        圖像識彆與計算機視覺:雖然Spark本身不是一個純粹的深度學習框架,但它可以與TensorFlow、PyTorch等深度學習框架集成,用於大規模數據的預處理和模型訓練的分布式管理。  通過本章的學習,您將能夠將之前掌握的大數據處理技術與機器學習算法相結閤,解決實際的業務問題,驅動智能化決策,從而在數據時代獲得競爭優勢。  總結  本書的目標是為您提供一個全麵而深入的現代數據處理技術圖譜。從數據倉庫的起源,到Hadoop的分布式存儲和計算,再到Spark帶來的內存計算和實時處理的飛躍,最後落腳於數據集成、治理和智能應用的實踐。我們希望通過清晰的闡述、嚴謹的邏輯和貼閤實際的案例,幫助您構建紮實的大數據技術基礎,並為未來的學習和職業發展打下堅實的基礎。掌握這些核心技術,您將能夠在這個數據驅動的世界中遊刃有餘,釋放數據的無限潛能。