開發者學堂課程【資料湖 JindoFS + OSS 實操幹貨36講:雲上計算雲下資料: HDFS 緩存加速】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/833/detail/13975雲上計算雲下資料:HDFS 緩存加速
内容介紹
一、背景介紹
二、功能介紹
三、實觀原理
四、實操示範
傳統的大資料服務,通常是自己部署一套 Hive、Spark、HDFS 線上下的 IDC 機房,現在的雲計算越來越成熟,雲計算可以帶來彈性擴容,運維友善,節省成本等優點。
是以,越來越多的企業開始将他們的大資料平台搬到雲上。
第一步他們先會将 Hive、Spark 等服務搬到雲上,在雲上執行計算,雲下 IDC HDFS 叢集存在着一些曆史資料,是以,HDFS 叢集的資料搬到雲上需要一定的時間,并且有些客戶的存在一些敏感資料,傾向于繼續保留在雲下。
或者說還有一些曆史原因,會儲存在其他雲下叢集上。是以這時候就涉及到跨機房跨雲房通路 HDFS 資料。
雲上通路餘下HDFS資料,存在一些問題:
叢集之間網絡延遲或者帶寬限制。
作業突發流量,線下 HDFS 資源相對于雲上來說會比較有限,核心叢集磁盤/網絡被打滿。
為了解決這些問題,就必須引入 HDFS 跨機房服務。
Jindo Namespace Service
Jindo Storage Service
Jindo SDK

我們在計算叢集上部署一套 Jindo FS,Jindo FS 具有分布式緩存的能力,它可以解決我們上面提到的兩個問題,第一點,可以利用計算機學閑置資源,比如說雲盤,hdd 或者記憶體進行資料緩存來做加速計算。
第二點,進行流量控制,避免計算機群占用核心叢集過多資源。
這張圖就詳細介紹 Jindo FS 緩存服務的系統架構。
包含三個部分,Namespace 服務儲存檔案的中繼資料和緩存原始資訊的中繼資料。
Jindo SDK 是用戶端,部署 spark 服務上。
Storage 服務負責管理緩存塊的資料,整個流程是:
計算服務通過 Jindo SDK 通路資料,記錄 SDK,從 Namespacs 服務查詢緩存位置資訊,然後向叢集中的 storage 服務,讀取出緩存資料,如果命中緩存直接傳回,如果沒有命中緩存,則從 OSS 讀取資料,并且将緩存寫入到 storage 服務供下次使用。
部署緩存服務
1. 下載下傳最新 Release 包 b2smartdata-x.x.x.tar.gz,解壓并部署到叢集所有節點上
2. 修改配置檔案 conf/bigboot.cfg
[bigboot-storage]
storage.rpc.port - 6101
storage.data-dirs =/mnt/disk1/bigboot,/mnt/disk2/bigboot,/mnt/disk3/bigboot,/mnt/disk4/bigboot
storage.data-dirs.capacities = 527371075584,527371075584,527371075584,527371075584
storage.namespace.rpc.address = emr-header-1:8101
storage.watermark.high.ratio-0.4 storage.watermark.low.ratio-0.2
[bigboot-namespace] namespace.rpc.port = 8101
namespace.meta-dir =/mnt/disk1/bigboot
3. 修改 sbin/nodes,配置所有storage service的節點清單
4. 啟動所有服務./sbin/start-service.sh
詳細文檔可參考:
https://github.com/aliyun/alibabacloud-jindofs/blob/master/docs/jindofs_cache_modedeploy.md
部署 Jindo SDK
1. 安裝 jar 包:下載下傳最新的 jar 包 jindofs-sdk-x.x.xjar,在所有 Hadoop 節點安裝。
cp./jindofs-sdk-*.jar/share/hadoop/hdfs/lib/jindofs-sdkjar
2. 将 namespace位址配置到Hadoop的core-site.xml中。
fs.jfs.namespace.rpc-address 172.16.xx.xx:8101,172.16.xx.xx:8101,172.16.xx.xx:8101
通過 JindoFS 加速通路 HDFS
我們通過 jfs:///路徑通路,跟直接通路遠端 HDFS 路徑得到一樣 的資料,并且獲得了加速效果
。
相關資源
JindoFS SDK
https://github.com/aliyun/alibabacloud-jindofs/blob/master/docs/indofs _sdk download.md
JindoFS緩存服務
jindofs/blob/master/docs/indofs cache mode deploy.md
下載下傳最新版本的 SDK 和 smartdate
可以看見 Jindo FS 的詳細使用流程和配置方法,參考 Jindo FS 相容模式部署,程式安裝好後參考使用流程來進行配置部署。
Overview
Start Time: Sun Jun 27 23:06:53 2021
Status: Active
Meta Backend: RocksDB (Standalone) emr-header-1.cluster-234515:8101 [192.168.0.30](Active)
Node: Live Nodes:[3], Decommission Nodes:[0]
Version: 3.6.0
Build No: 1d2d462e9844d63d587127504ece7c87b58ad/42
Namespace Info (3)
Namespace: ifs:/ftest/
Namespaces: test
Mode: BLOCK_MODE
Backend URI: oss://chengli-sh-test/uyue/C-DBD8BBF30589E5BE
Summary: Directory Count:[1], File Count: [0], File Size:[0], Task Count:[0], Computed at 2021-06-27 23:48:03
每個節點都有700GB的記憶體
利用 Jindo FS 加速緩存的效果,可以看到效果還是比較明顯的。