Alluxio 這一以內(nèi)存為中心的分布式虛擬文件系統(tǒng),最初誕生于加州大學(xué)伯克利分校的 AMPLab,其開源社區(qū)在目前大數(shù)據(jù)生態(tài)系統(tǒng)中發(fā)展很快。本書以廣泛使用的 Alluxio 1.8.1 版本為基礎(chǔ)進行編寫,是一本全面介紹 Alluxio 相關(guān)技術(shù)原理與實踐案例的書籍。本書主要內(nèi)容包括 Alluxio 系統(tǒng)快速入門、Alluxio 系統(tǒng)架構(gòu)及讀寫工作機制、Alluxio 與底層存儲系統(tǒng)的集成、Alluxio 與上層計算框架的集成、Alluxio 基本功能和高級功能的介紹與使用。此外,本書還詳細介紹了 Alluxio 的應(yīng)用案例與生產(chǎn)實踐,并詳細解讀了 Alluxio 的核心框架和技術(shù)應(yīng)用,旨在為大數(shù)據(jù)從業(yè)人員和大數(shù)據(jù)存儲技術(shù)愛好者提供一個深入學(xué)習(xí)的平臺,也可用作開源社區(qū)開發(fā)者指南。
范斌,Alluxio開源項目的管理委員會成員和源碼維護者,也是Alluxio公司的創(chuàng)始成員并現(xiàn)任開源副總裁。加入Alluxio項目之前, 范斌就職于谷歌山景城, 從事下一代大規(guī)模分布式存儲系統(tǒng)的研究與開發(fā), 并獲得谷歌基礎(chǔ)設(shè)施技術(shù)獎(Technical Infrastructure Award)。范斌2013年獲得卡內(nèi)基梅隆大學(xué)(Carnegie Mellon University)計算機系博士學(xué)位,博士期間從事分布式系統(tǒng)算法和實現(xiàn),是CuckooFilter,MemC3以及高性能的多線程KV庫libcuckoo的第一作者或聯(lián)合作者,并在SIGCOMM,SOSP,NSDI,CoNEXT等頂級學(xué)術(shù)會議以及IEEE Transactions on Networking等頂級學(xué)術(shù)期刊上發(fā)表論文。范斌著有多項專利,其學(xué)術(shù)研究成果在Alluxio、谷歌、Facebook、英特爾、微軟等高科技公司得到落地使用。顧榮,南京大學(xué)計算機科學(xué)與技術(shù)系助理研究員,并且是Alluxio項目的管理委員會成員和源碼維護者,于2016年獲得南京大學(xué)計算機專業(yè)博士學(xué)位,主要研究領(lǐng)域為大數(shù)據(jù)處理技術(shù)與系統(tǒng),發(fā)表國際期刊會議論文20余篇,包括IEEE TPDS、JPDC、IEEE ICDE、IEEE IPDPS、IEEE BigData、IEEE ICPADS等。部分研究成果已經(jīng)在英特爾、百度、華泰證券、蘇寧易購、華為、字節(jié)跳動等公司得到了落地使用,還有部分成果被主流開源大數(shù)據(jù)系統(tǒng)Apache Spark和Alluxio官方版本集成發(fā)布。顧榮還擔(dān)任多個學(xué)術(shù)期刊的審稿人、江蘇省計算機學(xué)會大數(shù)據(jù)專委會秘書長、中國計算機學(xué)會系統(tǒng)軟件專委會委員。
第 1 章 Alluxio 系統(tǒng)快速入門 ............................................................................................. 1
1.1 Alluxio 背景概述 ..................................................................................................... 1
1.1.1 Alluxio 系統(tǒng)功能簡介 ................................................................................. 4
1.1.2 Alluxio 項目發(fā)展歷史 ................................................................................. 5
1.2 獲取/編譯 Alluxio 軟件 ........................................................................................... 6
1.2.1 下載預(yù)編譯的 Alluxio 可執(zhí)行包 ................................................................ 6
1.2.2 編譯 Alluxio 源代碼 .................................................................................... 6
1.3 Alluxio 的搭建部署及程序運行 ........................................................................... 10
1.3.1 單機模式 .................................................................................................... 10
1.3.2 集群模式 .................................................................................................... 13
1.3.3 高可用集群模式 ........................................................................................ 16
第 2 章 Alluxio 系統(tǒng)架構(gòu)及讀寫工作機制 ....................................................................... 22
2.1 Alluxio 的構(gòu)架簡介與基本特征 ........................................................................... 22
2.1.1 提升遠程存儲讀寫性能 ............................................................................ 23
2.1.2 統(tǒng)一持久化數(shù)據(jù)訪問接口 ........................................................................ 24
2.1.3 數(shù)據(jù)的快速復(fù)用和共享 ............................................................................ 26
2.2 Alluxio 的系統(tǒng)功能組件 ....................................................................................... 27
2.2.1 Alluxio Master 組件 ................................................................................... 27
2.2.2 Alluxio Worker 組件 .................................................................................. 29
2.2.3 Alluxio Client 組件 .................................................................................... 30
2.3 Alluxio 讀寫場景的行為分析 ............................................................................... 31
2.3.1 Alluxio 的讀場景數(shù)據(jù)流 ........................................................................... 31
2.3.2 Alluxio 的寫場景數(shù)據(jù)流 ........................................................................... 37
第 3 章 Alluxio 與底層存儲系統(tǒng)的集成 ........................................................................... 40
3.1 配置 HDFS 作為 Alluxio 底層存儲 ...................................................................... 40
3.1.1 準備步驟與基本配置流程 ........................................................................ 41
3.1.2 高級參數(shù)配置 ............................................................................................ 43
3.1.3 使用 HDFS 在本地運行 Alluxio ............................................................... 44
3.2 配置 Secure HDFS 作為 Alluxio 底層存儲 .......................................................... 44
3.2.1 準備步驟與基本配置流程 ........................................................................ 45
3.2.2 使用安全認證模式 HDFS 在本地運行 Alluxio ....................................... 46
3.3 配置 AWS S3 作為 Alluxio 底層存儲 .................................................................. 47
3.3.1 準備步驟與基本配置流程 ........................................................................ 47
3.3.2 高級參數(shù)配置 ............................................................................................ 49
3.3.3 使用 S3 在本地運行 Alluxio ..................................................................... 51
3.4 配置 Google GCS 作為 Alluxio 底層存儲 ........................................................... 52
3.4.1 準備步驟與基本配置流程 ........................................................................ 52
3.4.2 高級參數(shù)配置 ............................................................................................ 53
3.4.3 使用 GCS 本地運行 Alluxio ..................................................................... 54
3.5 配置 Azure BLOB Store 作為 Alluxio 底層存儲系統(tǒng) ........................................ 55
3.5.1 準備步驟與基本配置流程 ........................................................................ 55
3.5.2 使用 Azure BLOB Store 本地運行 Alluxio .............................................. 57
第 4 章 Alluxio 與上層計算框架的集成 ........................................................................... 58
4.1 Alluxio 的管理員操作命令 ................................................................................... 58
4.1.1 操作命令列表 ............................................................................................ 59
4.1.2 操作命令示例 ............................................................................................ 59
4.2 Alluxio 的用戶操作命令 ....................................................................................... 61
4.2.1 操作命令列表 ............................................................................................ 62
4.2.2 操作命令示例 ............................................................................................ 65
4.3 Alluxio 與 Hadoop 操作命令行的集成 ................................................................ 78
4.3.1 前期準備與配置 ........................................................................................ 78
4.3.2 具體使用示例 ............................................................................................ 79
4.4 Alluxio 與 Hadoop MapReduce 的集成 ................................................................ 79
4.4.1 前期準備與配置 ........................................................................................ 80
4.4.2 具體使用示例 ............................................................................................ 82
4.5 Alluxio 與 Spark 的集成 ....................................................................................... 83
4.5.1 前期準備與配置 ........................................................................................ 83
4.5.2 使用 Alluxio 作為輸入/輸出源 ................................................................. 85
4.5.3 Alluxio 與 Spark 集成常見問題分析與解決 ............................................ 86
4.6 Alluxio 與 Hive 的集成 ......................................................................................... 89
4.6.1 安裝并配置 Hive 環(huán)境 .............................................................................. 89
4.6.2 使用 Alluxio 存儲部分 Hive 表 ................................................................ 90
4.6.3 使用 Alluxio 作為默認文件系統(tǒng)(存儲全部數(shù)據(jù)) .............................. 93
4.6.4 檢查 Hive 和 Alluxio 的集成情況(支持 Hive 2.x) ............................. 95
4.7 Alluxio 與 Presto 的集成 ....................................................................................... 96
4.7.1 前期準備 .................................................................................................... 96
4.7.2 部署分發(fā) Alluxio 客戶端 jar 包 ................................................................ 98
4.7.3 Presto 操作命令示例 ................................................................................. 98
4.8 Alluxio 與 TensorFlow 的集成 ........................................................................... 100
4.8.1 深度學(xué)習(xí)面臨的數(shù)據(jù)挑戰(zhàn) ...................................................................... 100
4.8.2 基于 Alluxio 解決深度學(xué)習(xí)存儲問題的分析 ........................................ 101
4.8.3 安裝并配置 Alluxio FUSE ..................................................................... 102
4.8.4 TensorFlow 使用 Alluxio FUSE 管理訪問數(shù)據(jù) ..................................... 103
第 5 章 Alluxio 基本功能的介紹與使用 ......................................................................... 105
5.1 Alluxio 系統(tǒng)環(huán)境與屬性的配置 ......................................................................... 105
5.1.1 Alluxio 系統(tǒng)組件參數(shù)的配置 ................................................................. 106
5.1.2 Alluxio 客戶端組件參數(shù)的配置 ............................................................. 109
5.1.3 Alluxio 參數(shù)配置的相關(guān)工具 ................................................................. 112
5.2 Alluxio 底層文件系統(tǒng)的配置與管理 ................................................................. 113
5.2.1 Alluxio 掛載底層存儲 ............................................................................. 113
5.2.2 Alluxio 與底層存儲的元數(shù)據(jù)一致性保證 ............................................. 116
5.3 Alluxio 緩存資源的配置與管理 ......................................................................... 120
5.3.1 配置 Alluxio 緩存存儲資源 .................................................................... 121
5.3.2 Alluxio 緩存數(shù)據(jù)的載入、駐留及釋放 ................................................. 126
5.3.3 配置 Alluxio 緩存數(shù)據(jù)的生存時間 ........................................................ 127
5.4 Alluxio 系統(tǒng) Web 用戶界面的查看與使用 ...................................................... 128
5.4.1 Alluxio Master Web 界面介紹 ................................................................ 128
5.4.2 Alluxio Worker Web 界面介紹 ............................................................... 134
第 6 章 Alluxio 高級功能的介紹與使用 ......................................................................... 137
6.1 Alluxio 的安全認證與權(quán)限控制 ......................................................................... 137
6.1.1 Alluxio 安全認證模式的介紹 ................................................................. 138
6.1.2 Alluxio 訪問權(quán)限控制的介紹 ................................................................. 139
6.1.3 Alluxio 用戶模擬功能的介紹 ................................................................. 141
6.1.4 Alluxio 審計日志功能的介紹 ................................................................. 142
6.2 Alluxio 的內(nèi)置 Metrics 系統(tǒng)............................................................................... 143
6.3 Alluxio 文件系統(tǒng)日志的使用與維護 ................................................................. 145
6.4 Alluxio 系統(tǒng)的異常排查 ..................................................................................... 148
Alluxio: 大數(shù)據(jù)統(tǒng)一存儲原理與實踐
第 7 章 Alluxio 的應(yīng)用案例與生產(chǎn)實踐 ......................................................................... 152
7.1 陌陌基于 Alluxio 加速 Spark SQL 查詢 ............................................................ 152
7.1.1 Alluxio 緩存應(yīng)用背景簡介 ..................................................................... 153
7.1.2 陌陌應(yīng)用場景結(jié)合 Alluxio 的分析 ........................................................ 153
7.1.3 基于 Alluxio 的陌陌 Ad Hoc 查詢系統(tǒng)架構(gòu) .......................................... 155
7.1.4 基于 Alluxio 的查詢性能評估與分析 .................................................... 156
7.1.5 陌陌在 Alluxio 實戰(zhàn)方面的后續(xù)實踐 .................................................... 158
7.2 京東基于 Alluxio 和 Presto 構(gòu)建交互式查詢引擎 ............................................ 158
7.2.1 京東大數(shù)據(jù)平臺的業(yè)務(wù)問題背景 .......................................................... 159
7.2.2 JDPresto on Alluxio 架構(gòu)與特性的介紹 ................................................. 160
7.2.3 JDPresto on Alluxio 的性能評估與分析 ................................................. 161
7.2.4 JDPresto on Alluxio 的應(yīng)用總結(jié) ............................................................. 164
7.3 Alluxio 在攜程實時計算平臺中的應(yīng)用與實踐 ................................................. 165
7.3.1 攜程實時計算的應(yīng)用背景 ...................................................................... 165
7.3.2 基于 Alluxio 的跨集群數(shù)據(jù)共享方案與性能評估 ................................ 168
7.4 去哪兒網(wǎng)利用 Alluxio 提升異地存儲訪問性能 ................................................ 169
7.4.1 去哪兒網(wǎng)流式處理背景簡介 .................................................................. 170
7.4.2 原有系統(tǒng)架構(gòu)及相關(guān)問題分析 .............................................................. 171
7.4.3 基于 Alluxio 改進后的系統(tǒng)架構(gòu)介紹與性能評估 ................................ 172
7.5 百度基于 Alluxio 加速遠程數(shù)據(jù)讀取 ................................................................ 176
7.5.1 百度跨機房數(shù)據(jù)查詢問題的描述 .......................................................... 177
7.5.2 使用 Alluxio 緩存遠端數(shù)據(jù)的方案與效果 ............................................ 177
7.5.3 使用 Alluxio 分層存儲的方案與效果 .................................................... 178
7.5.4 基于 Alluxio 提速遠程數(shù)據(jù)訪問的總結(jié) ................................................ 180
第 8 章 Alluxio 的開源社區(qū)開發(fā)者指南 ......................................................................... 181
8.1 Alluxio 的源代碼規(guī)范 ......................................................................................... 181
8.1.1 源代碼風(fēng)格要求 ...................................................................................... 182
8.1.2 Alluxio 的單元測試 ................................................................................. 184
8.1.3 Alluxio 的日志系統(tǒng) ................................................................................. 184
8.1.4 Alluxio 的 RPC 定義 ............................................................................... 186
8.1.5 Alluxio 文件系統(tǒng)日志消息 ..................................................................... 186
8.2 Alluxio 的單元測試流程介紹 ............................................................................. 187
8.2.1 運行 Alluxio 單元測試 ............................................................................ 187
8.2.2 創(chuàng)建 Alluxio 單元測試 ............................................................................ 188
8.2.3 單元測試需要避免的情況 ...................................................................... 190
8.2.4 Alluxio 單元測試的全局狀態(tài)管理 ......................................................... 191
8.3 貢獻源代碼至 Alluxio 開源社區(qū) ........................................................................ 193
8.3.1 開發(fā)者的系統(tǒng)要求和環(huán)境準備 .............................................................. 194
8.3.2 下載 Alluxio 源代碼并配置開發(fā)者郵箱 ................................................ 194
8.3.3 編譯 Alluxio 源代碼 ................................................................................ 195
8.3.4 領(lǐng)取一個開發(fā)者新手任務(wù) ...................................................................... 196
8.3.5 在本地副本中創(chuàng)建一個新的開發(fā)分支 .................................................. 196
8.3.6 提交本地的 commit ................................................................................. 197
8.3.7 提交一個社區(qū) Pull Request ..................................................................... 198
8.3.8 審閱社區(qū) Pull Request ............................................................................. 199