Hive性能調優實戰

Hive性能調優實戰

《Hive性能調優實戰》由機械工業出版社出版,作者林志煌。 曾在中國網際網路頭部公司長期從事大數據相關項目的研發。

基本介紹

  • 書名:Hive性能調優實戰
  • 作者:林志煌
  • 出版社:機械工業出版社 
  • 出版時間:2020年1月
  • 頁數:296 頁
  • 定價:89 元
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787111644323
內容簡介,圖書目錄,作者簡介,

內容簡介

本書旨在介紹如何進行Hive性能調優,以及調優時所涉及的工具。書中重點介紹了Hive性能調優所涉及的Hadoop組件和Hive工具。考慮到很多調優方法的著眼點有一定的相似性,這些調優方法可以適用於多個Hive版本,所以本書在介紹Hive的相關內容時會穿插Hive 1.x、Hive 2.x及Hive 3.x等多個版本的內容。
本書共11章,涵蓋的內容:舉例感受Hive性能調優的多樣性;Hive問題查與調優思路;環境搭建;Hive及其相關大數據組件;深入MapReduce計算引擎;Hive SQL執行計畫;Hive數據處理模式;YARN日誌;數據存儲;發現並最佳化Hive中的性能問題;Hive知識體系總結。
本書內容實用,非常適合對大數據技術感興趣的讀者閱讀,尤其是Hive進階讀者。另外,本書還適合IT培訓機構的大數據培訓學員和高校相關專業的學生閱讀。

圖書目錄

第1章 舉例感受Hive性能調優的多樣性 1
1.1 感受改寫SQL對性能的影響 1
1.1.1 數據準備 1
1.1.2 union案例 4
1.1.3 改寫SQL實現union的最佳化 5
1.1.4 失敗的union調優 8
1.2 感受調整數據塊大小對性能的影響 10
1.2.1 數據準備 11
1.2.2 案例比較 11
1.3 感受不同數據格式對性能的提升 15
1.3.1 數據準備 15
1.3.2 案例比較 16
1.4 感受不同的表設計對性能的影響 18
1.4.1 數據準備 19
1.4.2 案例比較 21
1.5 調優其實不難 24
第2章 Hive問題排查與調優思路 25
2.1 小白推演Hive的最佳化方法 25
2.1.1 類比關係型資料庫的調優 25
2.1.2 學習大數據分散式計算的基本原理 28
2.1.3 學習使用YARN提供的日誌 31
2.1.4 干預SQL的運行方式 33
2.2 老工對Hive的調優理解 36
2.2.1 從一個過度最佳化案例說起 36
2.2.2 編碼和調優的原則 43
2.2.3 Hive程式相關規範 49
2.3 總結調優的一般性過程 51
第3章 環境搭建 53
3.1 Docker基礎 53
3.1.1 Docker介紹 54
3.1.2 安裝Docker 56
3.1.3 常見的Docker使用與管理命令 58
3.1.4 使用Dockerfile構建服務鏡像 60
3.1.5 Dockerfile語法 63
3.2 Cloudera Docker搭建偽分散式環境 66
3.3 Docker搭建分散式集群 68
3.3.1 構建JDK鏡像 69
3.3.2 構建Hadoop鏡像 70
3.3.3 構建Hive鏡像 72
3.3.4 啟動集群 73
3.4 CDM搭建分散式集群 75
3.4.1 Cloudera Manager組件 75
3.4.2 Docker構建軟體安裝內部源 76
3.4.3 CDM安裝分散式集群 79
3.5 使用GitHub開源項目構建集群 87
第4章 Hive及其相關大數據組件 89
4.1 Hive架構 89
4.1.1 Hive 1.x版本基本結構 89
4.1.2 Hive元數據 91
4.2 YARN組件 97
4.2.1 YARN的優點 97
4.2.2 YARN基本組成 97
4.2.3 YARN工作流程 99
4.2.4 YARN資源調度器 100
4.3 HDFS架構 102
4.3.1 常見HDFS最佳化 102
4.3.2 HDFS基本架構和讀寫流程 103
4.3.3 HDFS高可用架構 105
4.3.4 NameNode聯盟 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作業輸入 118
5.2.1 輸入格式類InputFormat 118
5.2.2 InputFormat在Hive中的使用 120
5.3 MapReduce的Mapper 121
5.3.1 Mapper類 121
5.3.2 Hive中與Mapper相關的配置 123
5.4 MapReduce的Reducer 125
5.4.1 Reducer類 126
5.4.2 Hive中與Reducer相關的配置 127
5.5 MapReduce的Shuffle 128
5.6 MapReduce的Map端聚合 129
5.6.1 Combiner類 129
5.6.2 Map端的聚合與Hive配置 130
5.7 MapReduce作業輸出 131
5.7.1 OutputFormat作業輸出 132
5.7.2 Hive配置與作業輸出 133
5.8 MapReduce作業與Hive配置 134
5.9 MapReduce與Tez對比 135
5.9.1 通過案例代碼對比MapReduce和Tez 135
5.9.2 Hive中Tez和LLAP相關的配置 141
第6章 HiveSQL執行計畫 143
6.1 查看SQL的執行計畫 143
6.1.1 查看執行計畫的基本信息 144
6.1.2 查看執行計畫的擴展信息 148
6.1.3 查看SQL數據輸入依賴的信息 148
6.1.4 查看SQL操作涉及的相關許可權信息 152
6.1.5 查看SQL的向量化描述信息 152
6.2 簡單SQL的執行計畫解讀 158
6.3 帶普通函式/操作符SQL的執行計畫解讀 161
6.3.1 執行計畫解讀 161
6.3.2 普通函式和操作符 162
6.4 帶聚合函式的SQL執行計畫解讀 164
6.4.1 在Reduce階段聚合的SQL 164
6.4.2 在Map和Reduce階段聚合的SQL 167
6.4.3 高級分組聚合 169
6.5 帶視窗/分析函式的SQL執行計畫解讀 172
6.6 表連線的SQL執行計畫解讀 175
6.6.1 Hive表連線的類型 175
6.6.2 內連線和外連線 176
6.6.3 左半連線 178
第7章 Hive數據處理模式 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 分區過濾 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)行計數聚合模式 194
7.2.3 可計算中間結果的聚合模式 197
7.2.4 不可計算中間結果的聚合模式 199
7.3 連線模式 200
7.3.1 普通Map連線 201
7.3.2 桶的Map連線和排序合併桶的Map連線 207
7.3.3 傾斜連線 209
7.3.4 表連線與基於成本的最佳化器 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集群節點的度量信息 218
8.2.3 Cluster Overview集群概況 220
8.3 查看集群節點概況 221
8.3.1 節點列表概況 221
8.3.2 節點詳細信息 223
8.3.3 節點作業信息 224
8.4 查看集群的佇列調度情況 226
8.5 查看集群作業運行信息 230
8.5.1 集群作業運行狀態 230
8.5.2 查看作業運行的基本信息 231
8.5.3 查看作業計數器 232
第9章 數據存儲 236
9.1 檔案存儲格式之Apache ORC 236
9.1.1 ORC的結構 237
9.1.2 ORC的數據類型 238
9.1.3 ACID事務的支持 240
9.2 與ORC相關的Hive配置 241
9.2.1 表配置屬性 241
9.2.2 Hive表的配置屬性 241
9.3 檔案存儲格式之Apache Parquet 242
9.3.1 Parquet基本結構 243
9.3.2 Parquet的相關配置 245
9.4 數據歸檔 245
第10章 發現並最佳化Hive中的性能問題 247
10.1 監控Hive資料庫的狀態 247
10.2 監控當前集群狀態 253
10.3 定位性能瓶頸 258
10.3.1 使用HS2 WebUI排除非大數據組件的問題 258
10.3.2 排查長時等待調度 260
10.3.3 Map任務讀取小檔案和大檔案 261
10.3.4 Reduce的數據傾斜 262
10.3.5 緩慢的Shuffle 264
10.3.6 集群資源的限制 265
10.4 數據傾斜 266
10.4.1 不可拆分大檔案引發的數據傾斜 266
10.4.2 業務無關的數據引發的數據傾斜 267
10.4.3 多維聚合計算數據膨脹引起的數據傾斜 268
10.4.4 無法削減中間結果的數據量引發的數據傾斜 268
10.4.5 兩個Hive數據表連線時引發的數據傾斜 269
第11章 Hive知識體系總結 270
11.1 Hive知識體系 270
11.2 數據粒度 271
11.3 SQL相關 275
11.3.1 select查詢語句 276
11.3.2 數據定義語言(DDL) 276
11.3.3 數據控制語言(DML) 279
11.3.4 用戶自定義函式(UDF) 280
11.4 檔案操作 281

作者簡介

林志煌 曾在中國網際網路頭部公司長期從事大數據相關項目的研發。擅長並能夠熟練使用Hive、MapReduce和Spark等大數據相關技術。經手過日數據流量TB級別和總量PB級別的Hadoop大數據平台建設。從事過數據採集、數據清洗、數據倉庫模型構建及數據產品研發等工作,涵蓋了數據生命周期的主要階段。

相關詞條

熱門詞條

聯絡我們