Hive性能調(diào)優(yōu)實戰(zhàn)
定 價:89 元
- 作者:林志煌
- 出版時間:2019/12/1
- ISBN:9787111644323
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.13
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
本書是一本關(guān)于Apache Hive調(diào)優(yōu)的書籍,旨在介紹如何進行Hive的調(diào)優(yōu),以及調(diào)優(yōu)時如果使用的工具。本書在*開始會介紹Hive優(yōu)化多面性,以及如何在眾多的調(diào)優(yōu)技巧中尋找一條調(diào)優(yōu)的思路。接著介紹Hive安裝,為了方便讀者的練習,我們主要介紹Docker安裝Hive的方式和使用cloudera提供工具Hive的方式。介紹完安裝Hive方式,我們會繼續(xù)介紹Hive在優(yōu)化時涉及的Hadoop組件和Hive工具。*后會介紹如何監(jiān)控Hive在運行時出現(xiàn)性能問題。本書適合對大數(shù)據(jù)開發(fā)感興趣的愛好者、對Hive優(yōu)化有興趣的人員使用。
前言
第1章 舉例感受Hive性能調(diào)優(yōu)的多樣性1
1.1 感受改寫SQL對性能的影響1
1.1.1 數(shù)據(jù)準備1
1.1.2 union案例4
1.1.3 改寫SQL實現(xiàn)union的優(yōu)化5
1.1.4 失敗的union調(diào)優(yōu)8
1.2 感受調(diào)整數(shù)據(jù)塊大小對性能的影響10
1.2.1 數(shù)據(jù)準備11
1.2.2 案例比較11
1.3 感受不同數(shù)據(jù)格式對性能的提升15
1.3.1 數(shù)據(jù)準備15
1.3.2 案例比較16
1.4 感受不同的表設(shè)計對性能的影響18
1.4.1 數(shù)據(jù)準備19
1.4.2 案例比較21
1.5 調(diào)優(yōu)其實不難24
第2章 Hive問題排查與調(diào)優(yōu)思路25
2.1 小白推演Hive的優(yōu)化方法25
2.1.1 類比關(guān)系型數(shù)據(jù)庫的調(diào)優(yōu)25
2.1.2 學習大數(shù)據(jù)分布式計算的基本原理28
2.1.3 學習使用YARN提供的日志31
2.1.4 干預(yù)SQL的運行方式33
2.2 老工對Hive的調(diào)優(yōu)理解36
2.2.1 從一個過度優(yōu)化案例說起36
2.2.2 編碼和調(diào)優(yōu)的原則43
2.2.3 Hive程序相關(guān)規(guī)范49
2.3 總結(jié)調(diào)優(yōu)的一般性過程51
第3章 環(huán)境搭建53
3.1 Docker基礎(chǔ)53
3.1.1 Docker介紹54
3.1.2 安裝Docker56
3.1.3 常見的Docker使用與管理命令58
3.1.4 使用Dockerfile構(gòu)建服務(wù)鏡像60
3.1.5 Dockerfile語法63
3.2 Cloudera Docker搭建偽分布式環(huán)境66
3.3 Docker搭建分布式集群68
3.3.1 構(gòu)建JDK鏡像69
3.3.2 構(gòu)建Hadoop鏡像70
3.3.3 構(gòu)建Hive鏡像72
3.3.4 啟動集群73
3.4 CDM搭建分布式集群75
3.4.1 Cloudera Manager組件75
3.4.2 Docker構(gòu)建軟件安裝內(nèi)部源76
3.4.3 CDM安裝分布式集群79
3.5 使用GitHub開源項目構(gòu)建集群87
第4章 Hive及其相關(guān)大數(shù)據(jù)組件89
4.1 Hive架構(gòu)89
4.1.1 Hive 1.x版本基本結(jié)構(gòu)89
4.1.2 Hive元數(shù)據(jù)91
4.2 YARN組件97
4.2.1 YARN的優(yōu)點97
4.2.2 YARN基本組成97
4.2.3 YARN工作流程99
4.2.4 YARN資源調(diào)度器100
4.3 HDFS架構(gòu)102
4.3.1 常見HDFS優(yōu)化102
4.3.2 HDFS基本架構(gòu)和讀寫流程103
4.3.3 HDFS高可用架構(gòu)105
4.3.4 NameNode聯(lián)盟107
4.4 計算引擎109
4.4.1 MapReduce計算引擎109
4.4.2 Tez計算引擎111
4.4.3 LLAP長時在線與處理程序113
4.4.4 Spark計算引擎115
第5章 深入MapReduce計算引擎117
5.1 MapReduce整體處理過程117
5.2 MapReduce作業(yè)輸入118
5.2.1 輸入格式類InputFormat118
5.2.2 InputFormat在Hive中的使用120
5.3 MapReduce的Mapper121
5.3.1 Mapper類121
5.3.2 Hive中與Mapper相關(guān)的配置123
5.4 MapReduce的Reducer125
5.4.1 Reducer類126
5.4.2 Hive中與Reducer相關(guān)的配置127
5.5 MapReduce的Shuffle128
5.6 MapReduce的Map端聚合129
5.6.1 Combiner類129
5.6.2 Map端的聚合與Hive配置130
5.7 MapReduce作業(yè)輸出131
5.7.1 OutputFormat作業(yè)輸出132
5.7.2 Hive配置與作業(yè)輸出133
5.8 MapReduce作業(yè)與Hive配置134
5.9 MapReduce與Tez對比135
5.9.1 通過案例代碼對比MapReduce和Tez135
5.9.2 Hive中Tez和LLAP相關(guān)的配置141
第6章 HiveSQL執(zhí)行計劃143
6.1 查看SQL的執(zhí)行計劃143
6.1.1 查看執(zhí)行計劃的基本信息144
6.1.2 查看執(zhí)行計劃的擴展信息148
6.1.3 查看SQL數(shù)據(jù)輸入依賴的信息148
6.1.4 查看SQL操作涉及的相關(guān)權(quán)限信息152
6.1.5 查看SQL的向量化描述信息152
6.2 簡單SQL的執(zhí)行計劃解讀158
6.3 帶普通函數(shù)/操作符SQL的執(zhí)行計劃解讀161
6.3.1 執(zhí)行計劃解讀161
6.3.2 普通函數(shù)和操作符162
6.4 帶聚合函數(shù)的SQL執(zhí)行計劃解讀164
6.4.1 在Reduce階段聚合的SQL164
6.4.2 在Map和Reduce階段聚合的SQL167
6.4.3 高級分組聚合169
6.5 帶窗口/分析函數(shù)的SQL執(zhí)行計劃解讀172
6.6 表連接的SQL執(zhí)行計劃解讀175
6.6.1 Hive表連接的類型175
6.6.2 內(nèi)連接和外連接176
6.6.3 左半連接178
第7章 Hive數(shù)據(jù)處理模式181
7.1 過濾模式181
7.1.1 where子句過濾模式182
7.1.2 having子句過濾183
7.1.3 distinct子句過濾184
7.1.4 表過濾186
7.1.5 分區(qū)過濾188
7.1.6 分桶過濾189
7.1.7 索引過濾191
7.1.8 列過濾191
7.2 聚合模式192
7.2.1 distinct模式193
7.2.2 count(列)、count(*)、count(1)行計數(shù)聚合模式194
7.2.3 可計算中間結(jié)果的聚合模式197
7.2.4 不可計算中間結(jié)果的聚合模式199
7.3 連接模式200
7.3.1 普通Map連接201
7.3.2 桶的Map連接和排序合并桶的Map連接207
7.3.3 傾斜連接209
7.3.4 表連接與基于成本的優(yōu)化器210
第8章 YARN日志212
8.1 查看YARN日志的方式212
8.1.1 ResourceManager Web UI界面212
8.1.2 JobHistory Web UI界面215
8.2 快速查看集群概況216
8.2.1 Cluster Metrics集群度量指標217
8.2.2 Cluster Node Metrics集群節(jié)點的度量信息218
8.2.3 Cluster Overview集群概況220
8.3 查看集群節(jié)點概況221
8.3.1 節(jié)點列表概況221
8.3.2 節(jié)點詳細信息223
8.3.3 節(jié)點作業(yè)信息224
8.4 查看集群的隊列調(diào)度情況226
8.5 查看集群作業(yè)運行信息230
8.5.1 集群作業(yè)運行狀態(tài)230
8.5.2 查看作業(yè)運行的基本信息231
8.5.3 查看作業(yè)計數(shù)器232
第9章 數(shù)據(jù)存儲236
9.1 文件存儲格式之Apache ORC236
9.1.1 ORC的結(jié)構(gòu)237
9.1.2 ORC的數(shù)據(jù)類型238
9.1.3 ACID事務(wù)的支持240
9.2 與ORC相關(guān)的Hive配置241
9.2.1 表配置屬性241
9.2.2 Hive表的配置屬性241
9.3 文件存儲格式之Apache Parquet242
9.3.1 Parquet基本結(jié)構(gòu)243
9.3.2 Parquet的相關(guān)配置245
9.4 數(shù)據(jù)歸檔245
第10章 發(fā)現(xiàn)并優(yōu)化Hive中的性能問題247
10.1 監(jiān)控Hive數(shù)據(jù)庫的狀態(tài)247
10.2 監(jiān)控當前集群狀態(tài)253
10.3 定位性能瓶頸258
10.3.1 使用HS2 WebUI排除非大數(shù)據(jù)組件的問題258
10.3.2 排查長時等待調(diào)度260
10.3.3 Map任務(wù)讀取小文件和大文件261
10.3.4 Reduce的數(shù)據(jù)傾斜262
10.3.5 緩慢的Shuffle264
10.3.6 集群資源的限制265
10.4 數(shù)據(jù)傾斜266
10.4.1 不可拆分大文件引發(fā)的數(shù)據(jù)傾斜266
10.4.2 業(yè)務(wù)無關(guān)的數(shù)據(jù)引發(fā)的數(shù)據(jù)傾斜267
10.4.3 多維聚合計算數(shù)據(jù)膨脹引起的數(shù)據(jù)傾斜268
10.4.4 無法削減中間結(jié)果的數(shù)據(jù)量引發(fā)的數(shù)據(jù)傾斜268
10.4.5 兩個Hive數(shù)據(jù)表連接時引發(fā)的數(shù)據(jù)傾斜269
第11章 Hive知識體系總結(jié)270
11.1 Hive知識體系270
11.2 數(shù)據(jù)粒度271
11.3 SQL相關(guān)275
11.3.1 select查詢語句276
11.3.2 數(shù)據(jù)定義語言(DDL)276
11.3.3 數(shù)據(jù)控制語言(DML)279
11.3.4 用戶自定義函數(shù)(UDF)280
11.4 文件操作281