大數據技術入門到商業實戰 — Hadoop + Spark + Flink 全解析
內容描述
本書全面詳細地介紹了大數據生態系統中的主流技術。
全書共10章,主要包括大數據生態系統概述、大數據採集技術、大數據存儲技術、大數據分析處理技術等內容,
書中涵蓋了Hadoop、Hive、Hbase、Kafka、Spark、Flink等技術的原理和實踐,其中重點介紹了Hadoop技術、Spark技術及Flink技術。
本書詳細介紹了主流大數據技術框架的基本原理、環境搭建、操作使用和在典型行業中的具體應用,
使讀者不僅能夠在宏觀上全面認知大數據生態系統,而且還能在微觀上深入理解大數據技術細節。
本書不僅適合大數據技術初學者閱讀,還可以幫助金融、電信、電商、能源、政府部門的大數據應用決策和技術人員,
以及IT經理、CTO、CIO等快速學習大數據技術,並能作為大數據相關崗位培訓的教程。
目錄大綱
前言
●第1章初識大數據
1.1什麼是大數據
1.2大數據行業應用
1.3什麼是Hadoop
1.4Hadoop產生背景
1.5Hadoop的架構模塊介紹
1.6Hadoop在大數據、雲計算中的
位置和關係
1.7國內外Hadoop應用案例介紹
1.8Hadoop生態圈以及各組成部分
簡介
1.9本章小結
●第2章Hadoop之分佈式文件系統
HDFS
2.1構建Hadoop集群
2.1.1集群簡介
2.1.2Hadoop集群部署
2.2Hadoop集群啟動和停止
2.2.1Hadoop集群啟動
2.2.2Hadoop集群停止
2.3HDFS的Shell命令行客戶端
操作
2.4HDFS的工作機制
2.4.1HDFS概述
2.4.2HDFS的重要特性
2.4.3HDFS寫數據流程
2.4.4HDFS讀數據流程
2.5NameNode和SecondaryNameNode
功能剖析
2.5.1NameNode與SecondaryNameNode
解析
2.5.2元數據的checkpoint的條件
2.5.3fsimage與edits詳解
2.5.4fsimage和edits文件信息查看
2.6DataNode的工作機制及存儲
2.6.1DataNode工作機制
2.6.2數據完整性保證
2.6.3DataNode掉線判斷時限參數
2.7HDFS的安全模式
2.8本章小結
●第3章Hadoop之分佈式計算
MapReduce
3.1MapReduce概述
3.1.1MapReduce介紹
3.1.2為什麼要使用MapReduce
3.2MapReduce框架結構及核心
運行機制
3.3MapReduce編程規範和示例
編寫
3.3.1編程規範
3.3.2MapReduce編程入門之
單詞計數
3.4MapTask數量及切片機制
3.4.1MapTask個數
3.4.2如何控制MapTask的個數
3.4.3Map並行度的經驗之談
3.5ReduceTask並行度的決定
3.6MapReduce中的combiner
3.7MapReduce中的Shuffle
3.7.1Map端
3.7.2Reduce端
3.7.3Shuffle小結
3.8MapReduce與Yarn
3.8.1Yarn概述
3.8.2Yarn的重要概念
3.9MapReduce在Yarn上運行
流程
3.9.1job 提交過程
3.9.2job 初始化過程
3.9.3Task 任務分配
3.9.4Task 任務執行
3.9.5運行進度與狀態更新
3.9.6job 完成
3.10實戰項目1:基於MapReduce
實現用戶流量分析
3.10.1需求描述
3.10.2需求分析
3.10.3開發實現
3.10.4提交任務
3.11本章小結
●第4章分佈式協調服務
Zookeeper
4.1Zookeeper簡介
4.1.1Zookeeper是什麼
4.1.2Zookeeper常用應用場景
4.2Zookeeper集群部署
4.2.1Zookeeper集群角色
4.2.2Zookeeper集群安裝
4.3Zookeeper核心工作機制
4.3.1Zookeeper特性
4.3.2Zookeeper數據結構
4.3.3節點類型
4.4Zookeeper的Shell命令行
操作
4.4.1客戶端連接
4.4.2命令行操作
4.5項目實戰2:基於Zookeeper
實現服務器上下線動態感知
4.5.1需求描述
4.5.2開發實現
4.6本章小結
●第5章分佈式數據庫Hbase
5.1Hbase數據庫介紹
5.1.1Hbase簡介
5.1.2Hbase表的數據模型
5.2Hbase整體架構
5.3Hbase集群搭建
5.4Hbase的Shell命令演示
5.5Hbase的內部原理
5.5.1Hbase的存儲原理
5.5.2Hbase讀數據流程
5.5.3Hbase寫數據流程
5.6Hbase的Flush、compact
機制
5.6.1Flush觸發條件
5.6.2Flush的流程
5.6.3Compact合併機制
5.7Hbase表的預分區
5.8region合併
5.8.1region合併說明
5.8.2如何進行region合併
5.9Hbase表的rowkey設計
5.9.1rowkey長度原則
5.9.2rowkey散列原則
5.9.3rowkey唯一原則
5.10Hbase表的熱點
5.10.1表的熱點描述
5.10.2熱點問題解決
5.11項目實戰3:基於MapReduce
實現數據入庫Hbase表中
5.11.1需求描述
5.11.2開發實現
5.12本章小結
●第6章數據倉庫Hive
6.1Hive基本概念
6.1.1Hive簡介
6.1.2Hive與傳統數據庫對比
6.2Hive的架構原理
6.3Hive的數據類型
6.4Hive的安裝部署
6.5Hive的交互方式
6.5.1Hive交互Shell
6.5.2Hive JDBC服務
6.5.3Hive的命令
6.6Hive的DDL操作
6.6.1數據庫的DDL操作
6.6.2表的DDL操作
6.7Hive的分區表
6.8Hive的靜態分區和動態
分區
6.8.1靜態分區
6.8.2動態分區
6.9Hive的數據導入
6.10Hive數據導出
6.11項目實戰4:基於Hive分析
用戶搜索日誌數據
6.11.1需求描述
6.11.2數據格式
6.11.3開發實現
6.12本章小結
●第7章日誌採集框架Flume
7.1Flume介紹
7.1.1Flume概述
7.1.2Flume的優勢
7.1.3Flume的運行機制
7.1.4Flume採集系統結構圖
7.2Flume安裝部署
7.3Flume數據採集應用
7.3.1採集目錄到HDFS
7.3.2採集文件到HDFS
7.4項目實戰5:Flume之靜態攔
截器的使用
7.4.1案例場景
7.4.2場景分析
7.4.3數據流程處理分析
7.4.4開發實現
7.5本章小結
●第8章分佈式消息系統Kafka
8.1Kafka概述
8.1.1Kafka定義
8.1.2Kafka的特性
8.1.3Kafka集群架構和角色
8.2Kafka集群安裝部署
8.3Kafka命令行的管理使用
8.4Kafka生產者和消費者的API
代碼開發
8.4.1生產者代碼開發
8.4.2消費者代碼開發
8.5Kafka分區策略
8.6為什麼Kafka速度那麼快
8.7Kafka的文件存儲機制
8.7.1文件存儲概述
8.7.2Segment文件
8.7.3Kafka如何快速查詢數據
8.7.4Kafka高效文件存儲
設計特點
8.8consumer消費原理
8.8.1consumer與topic關係
8.8.2Offset管理
8.8.3coordinator工作機制
8.9項目實戰6: Kafka整合
Flume
8.9.1需求描述
8.9.2需求分析
8.9.3需求實現
8.10本章小結
●第9章Spark內存計算框架
9.1Spark 概述
9.1.1Spark簡介
9.1.2Spark生態圈概述
9.1.3Spark運行模式
9.2Spark環境部署實戰
9.3Spark編程模型RDD
9.3.1RDD的概述
9.3.2RDD的五大特性
9.3.3RDD的構建
9.3.4RDD的transformation算子
操作
9.3.5RDD的action算子操作
9.3.6RDD的依賴關係
9.3.7RDD的血統和緩存機制
9.3.8RDD的checkpoint機制
9.3.9項目實戰7:基於RDD編程
實現流量日誌分析
9.4SparkSQL結構化數據處理
9.4.1SparkSQL簡介
9.4.2SparkSQL的四大特性
9.4.3DataFrame概述
9.4.4DataFrame常用操作
9.4.5DataSet概述
9.4.6構建DataSet
9.4.7SparkSQL讀取外部數據源
9.5SparkStreaming實時
處理模塊
9.5.1SparkStreaming簡介
9.5.2SparkStreaming架構流程
9.5.3DStream概述
9.5.4DStream的transformations
算子操作
9.5.5DStream的output operations
算子操作
9.5.6SparkStreaming的checkpoint
容錯機制
9.6項目實戰8:SparkStreaming整合
Kafka
9.7本章小結
●第10章Flink實時流處理
10.1Flink概述
10.1.1Flink介紹
10.1.2Flink的特點
10.1.3Flink 的應用場景
10.1.4Flink基本技術棧
10.1.5Flink任務提交模型
10.2Flink 環境部署實戰
10.2.1Standalone HA模式部署
10.2.2Flink on Yarn 模式部署
10.2.3Flink on Yarn 任務提交
流程
10.3Flink編程入門案例
10.3.1實時處理代碼開發
10.3.2離線處理代碼開發
10.4DataStream編程
10.4.1DataStream的數據源
10.4.2DataStream轉換算子
10.4.3DataStream的sink數據
目標
10.4.4任務並行度、slot、task
10.4.5task之間的數據傳輸策略
10.4.6Operator Chain操作鏈
10.5Flink中的狀態保存和恢復
10.5.1State概述
10.5.2State類型
10.5.3Flink的StateBackend
狀態保存
10.5.4Flink的checkpoint檢查
點機制
10.5.5Flink的savepoint保存點
機制
10.6項目實戰9: Flink流式處理
集成Kafka
10.7Flink中的窗口window
10.7.1window概念
10.7.2window類型
10.7.3TimeWindow分類
10.7.4Window API
10.7.5窗口函數
10.8Flink的WaterMark機制
10.8.1Flink的Time三兄弟
10.8.2WaterMark的概念
10.8.3WaterMark的原理
10.8.4生活場景理解WaterMark
10.8.5WaterMark 使用存在
的三種情況
10.8.6WaterMark結合EventTime
實戰
10.8.7遲到的數據處理機制
10.9Flink的Table和SQL
10.9.1Table與SQL基本介紹
10.9.2為什麼需要SQL
10.9.3Flink Table和SQL開發
環境構建
10.9.4Flink Table API 操作
10.9.5Flink SQL 操作
10.10項目實戰10: 基於FlinkSQL
讀取Kafka數據到MySQL
表中
10.11本章小結