使用 AWS Cloudformation 在 Amazon EMR 中一分鐘配置 JuiceFS
這是一篇使用 JuiceFS 作為 Amazon EMR 儲存後端的快速入門文章,JuiceFS 是一個專門為在雲端工作而設計的 POSIX 相容的共享檔案系統並且相容 HDFS。JuiceFS 與自建的 HDFS 相比,可以節省 50% ~ 70% 的成本,同時達到與自建 HDFS接近的效能。
為什麼在 Amazon EMR 中使用 JuiceFS?
在 Hadoop 叢集中使用 HDFS 是儲存計算耦合架構,叢集中的每個節點都同時承擔計算和儲存的職責。在實際業務場景中,資料量的增長通常遠遠快於計算需求的增長,但是在 Hadoop 儲存計算耦合的架構下,擴容必須要求儲存和計算同時擴容,自然會帶來計算資源利用率的低下。隨著儲存規模的增大,HDFS 的負載壓力越來越高,但又不支援橫向擴充套件,給運維帶來很高的複雜度,NameNode 重啟、Full GC 等問題會給整個叢集帶來數十分鐘到數小時的不可用,影響業務健康度。
如果將 Hadoop 儲存由 HDFS 換成 Amazon S3,在相容性、一致性、效能、許可權管理等方面要一一解決差異。相容性方面,使用者如果想用 EMR 沒有內建的計算引擎,可能要自己解決驅動適配的問題;效能方面的下降可能要擴大叢集規模;許可權管理方式的變化可能要重建整個 ACL 體系。
在 HDFS 和 Amazon S3 之間是否有一個兩全其美的方案呢?JuiceFS 正是這樣一個低成本彈性伸縮的全託管 HDFS 服務。可以為客戶帶來和 HDFS 一樣的相容性、一致性和接近的效能,和 Amazon S3 一樣的全託管、彈性伸縮、低成本。
什麼是 JuiceFS?
JuiceFS 是面向雲原生環境設計的分散式檔案系統,完全相容 POSIX 和 HDFS,適用於大資料、機器學習訓練、Kubernetes 共享儲存、海量資料歸檔管理場景。支援全球所有公有云服務商,並提供全託管服務,客戶無需投入任何運維力量,即刻擁有一個彈性伸縮,並可擴充套件至 100PB 容量的檔案系統。
在下面的這張架構圖中可以看出,JuiceFS 已經支援將各種公有云物件儲存作為後端資料持久服務,同時也支援了開源物件儲存,如 Ceph、MinIO、Swift 等。在 Linux 和 macOS 上提供 FUSE 客戶端,在 Windows 系統上也提供原生客戶端,都可以將 JuiceFS 的檔案系統掛載到系統中,使用體驗和本地盤一模一樣。在 Hadoop 環境中提供 Java SDK,使用體驗和 HDFS 一樣。JuiceFS 的元資料服務在所有公有云上都部署了全託管服務,客戶不用自己維護任何服務,學習和使用門檻極低。
效能測試
綜合 效能
TPC-DS 由事務效能管理委員會(TPC)釋出,該委員會是目前最知名的資料管理系統評測基準標準化組織。TPC-DS 採用星型、雪花型等多維資料模式。它包含 7 張事實表,17 張緯度表,平均每張表含有 18 列。其工作負載包含 99 個 SQL 查詢,覆蓋 SQL99 和 2003 的核心部分以及 OLAP。這個測試集包含對大資料集的統計、報表生成、聯機查詢、資料探勘等複雜應用,測試用的資料和值是有傾斜的,與真實資料一致。可以說 TPC-DS 是與真實場景非常接近的一個測試集,也是難度較大的一個測試集。
測試環境
ningxia (cn-northwest-1) region
1 Master m5.2xlarge 8 vCore, 32 GiB memory, 128 GB EBS storage
3 Core m5d.4xlarge 16 vCore, 64 GiB memory, 600 SSD GB storage
emr-6.1.0 Hive 3.1.2, Spark 3.0.0, Tez 0.9.2
Juicefs-hadoop-1.0-beta.jar
JuiceFS 專業試用版
使用 500GB TPC-DS 資料集 測試。
JuiceFS 引數
juicefs.cache-dir=/mnt*/jfs
juicefs.cache-size=10240M
juicefs.cache-full-block=false
Hive 測試的結果
由於完整的測試時間比較長,我們選取了部分測試集作為參考。每個測試指令碼均執行2次並取兩次的平均值作為測試結果。
Hive on Parquet 測試總時間開銷:
-
JuiceFS 685.34秒
-
HDFS 615.31秒
-
S3 1887.99秒
JuiceFS 比 S3 速度提升 175%,比 HDFS 慢 11%。
Hive on ORC 測試總時間開銷:
-
JuiceFS 789.58秒
-
HDFS 695.25秒
-
S3 1796.34秒
JuiceFS 比 S3 速度提升 127%,比 HDFS 慢 13%。
寫入效能
我們通過 Spark 來做資料寫入測試,寫入 143.2 GB 文字(未分割槽)格式的資料,具體的 SQL 語句如下:
CREATE TABLE catalog_sales2 AS SELECT * FROM catalog_sales;
Juicedata 與亞馬遜雲科技聯合開發的解決方案通過 AWS CloudFormation 模板可以在 Amazon EMR 中自動配置好可用的 JuiceFS 環境,並且提供一個 TPC-DS Benchmark 測試程式供使用。上述測試結果均使用該解決方案搭建環境。
如何利用 AWS CloudFormation 在 Amazon EMR 中快速使用 JuiceFS
Github 原始碼
http://github.com/aws-samples/amazon-emr-with-juicefs/
架構圖
注意
-
EMR 叢集需要連線到 JuiceFS 元資料服務。它需要一個 NAT 閘道器來訪問公共網際網路。
-
EMR 叢集的每個節點都需要安裝 JuiceFS Hadoop 擴充套件 JAR 包,才能使用 JuiceFS 作為儲存後端。
-
JuiceFS 只儲存元資料,原始資料仍然儲存在您的賬戶 S3 中。
部署指南
先決條件
-
註冊 JuiceFS 賬戶
-
在 JuiceFS 控制檯上建立一個卷。選擇你的 AWS 賬戶區域,並建立一個新卷。請在 “高階選項” 中將 “壓縮” 項改為 Uncompressed
注意: JuiceFS 檔案系統預設啟用 lz4 演算法對資料進行壓縮。在大資料分析場景中經常使用 ORC 或者 Parquet 等列存檔案格式,查詢過程中往往只需要讀取檔案中的一部分,如果啟用壓縮演算法,則必須讀取完整 block 解壓後才能獲得需要的部分,這樣會造成讀放大。關閉壓縮後,則可以直接讀取部分資料
-
從 JuiceFS 控制檯獲取訪問令牌和桶名。
啟動 AWS CloudFormation Stack
-
從 AWS 中國區域控制檯中啟動
-
從 AWS 海外區域控制檯中啟動
-
填寫配置項
引數說明
引數名 | 解釋 |
EMRClusterName | EMR 叢集名稱 |
MasterInstanceType | 主節點例項型別 |
CoreInstanceType | 核心節點型別 |
NumberOfCoreInstances | 核心節點數量 |
JuiceFSAccessToken | JuiceFS 訪問令牌 |
JuiceFSVolumeName | JuiceFS 儲存卷 Volume 名稱 |
JuiceFSCacheDir | 本地快取目錄,可以指定多個資料夾,用冒號 : 分隔,也可以使用萬用字元(比如 * ) |
JuiceFSCacheSize | 磁碟快取容量,單位 MB。如果配置多個目錄,這是所有快取目錄的空間總和 |
JuiceFSCacheFullBlock | 是否快取連續讀資料,在磁碟空間有限或者磁碟效能低下的時候,設定為 false |
啟動 CloudFormation Stack 完成部署後可以在 EMR 服務中檢查你的叢集。
進入硬體選項卡。
找到你的 Master 節點。
通過 AWS Systems Manager Session Manager 會話管理器連線到主節點。
登入到 Master 節點。
接下來驗證叢集環境。
$ sudo su hadoop
# JFS_VOL 是一個預製的環境變數,指向您所在的JuiceFS儲存卷
$ hadoop fs -ls jfs://${JFS_VOL}/ # 別忘了最後一個“斜線”
$ hadoop fs -mkdir jfs://${JFS_VOL}/hello-world
$ hadoop fs -ls jfs://${JFS_VOL}/
執行 TPC-DS 基準測試
-
通過 AWS Systems Manager Session Manager 會話管理器登入到叢集主節點,然後將當前使用者改為 hadoop。
$ sudo su hadoop
-
解壓 benchmark-sample.zip。
$ cd && unzip benchmark-sample.zip
-
執行 TPC-DS 測試。
$ cd benchmark-sample
$ screen -L
# ./emr-benchmark.py 為 benchmark 測試程式
# 它會生成 TPC-DS 基準的測試資料,並執行測試集(從 q1.sql 到 q10.sql)
# 測試會包含一下部分:# 1. 生成 TXT 測試資料
# 2. 將 TXT 資料轉成 Parquet 格式
# 3. 將 TXT 資料轉成 Orc 格式
# 4. 執行 Sql 測試用例並統計 Parquet 和 Orc 格式的耗時
# 支援的引數
# --engine 計算引擎選擇 hive 或 spark
# --show-plot-only 只在控制檯中顯示柱狀圖
# --cleanup, --no-cleanup 是否在每次測試時清除 benchmark 資料,預設:否
# --gendata, --no-dendata 是否在每次測試時生成資料,預設:是
# --restore 從已有的資料中恢復資料庫,此選項需要在 --gendata 開啟後才生效
# --scale 資料集大小(例如:100 代表 100GB 資料)
# --jfs 開啟 uiceFS benchmark 測試
# --s3 開啟 S3 benchmark 測試
# --hdfs 開啟 HDFS benchmark 測試
# 請確保機型有足夠的空間儲存測試資料,例如:500GB 推薦 Core Node 使用 m5d.4xlarge 或以上
# 關於機型儲存空間選擇請參考 http://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-storage.html
$ ./emr-benchmark.py --scale 500 --engine hive --jfs --hdfs --s3 --no-cleanup --gendata
Enter your S3 bucket name for benchmark. Will create it if it doesn\'t exist: (請輸入用來存放s3基準測試的桶名,若不存在則會建立一個新的) xxxx
$ cat tpcds-setup-500-duration.2021-01-01_00-00-00.res # 測試結果
$ cat hive-parquet-500-benchmark.2021-01-01_00-00-00.res # 測試結果
$ cat hive-orc-500-benchmark.2021-01-01_00-00-00.res # 測試結果
# 刪除資料
$ hadoop fs -rm -r -f jfs://$JFS_VOL/tmp
$ hadoop fs -rm -r -f s3://<your-s3-bucketname-for-benchmark>/tmp
$ hadoop fs -rm -r -f "hdfs://$(hostname)/tmp/tpcds*"
-
注意:AWS Systems Manager Session Manager 會話管理器可能會超時導致終端連線斷開,建議使用 screen -L 命令講會話保持在後臺 screen 的日誌會儲存在當前目錄下的 screenlog.0
-
注意:若測試機器一共超過 10vcpu,需要開通 JuiceFS 專業版試用,例如:您有可能會遇到以下錯誤 juicefs[1234] <WARNING>: register error: Too many connections
-
樣例輸出
-
刪除 Stack
結語
通過測試驗證可以看到 JuiceFS 確實是彈性伸縮的全託管 HDFS 服務。可以為客戶帶來和 HDFS 一樣的相容性、一致性和接近的效能,和 Amazon S3 一樣的全託管、彈性伸縮、低成本。
原文發表於 Amazon 雲科技中國官方部落格:
http://aws.amazon.com/cn/blogs/china/use-aws-cloudformation-to-configure-juicefs-in-amazon-emr-in-one-minute/
- JuiceFS 資料讀寫流程詳解
- 如何在 Kubernetes 叢集中玩轉 Fluid JuiceFS
- 如何在 Kubernetes 叢集中玩轉 Fluid JuiceFS
- 如何利用 JuiceFS 的效能工具做檔案系統分析和調優
- 知乎利用 JuiceFS 給 Flink 容器啟動加速實踐
- JuiceFS 在大搜車資料平臺的實踐
- 環球易購資料平臺如何做到既提速又省錢?
- JuiceFS CSI Driver 的最佳實踐
- JuiceFS CSI Driver 的最佳實踐
- 百億級小檔案儲存,JuiceFS 在自動駕駛行業的最佳實踐
- JuiceFS 如何幫助趣頭條超大規模 HDFS 降負載
- ClickHouse 存算分離架構探索
- Elasticsearch 儲存成本省 60%,稿定科技乾貨分享
- Elasticsearch 儲存成本省 60%,稿定科技乾貨分享
- 常見開源分散式檔案系統架構對比
- 如何藉助 JuiceFS 為 AI 模型訓練提速 7 倍
- 如何藉助 JuiceFS 為 AI 模型訓練提速 7 倍
- JuiceFS 使用 TiKV 資料庫上手指南
- JuiceFS CSI Driver v0.10 全新架構解讀
- 基於 JuiceFS 搭建 Milvus 分散式叢集