緩衝模式(Cache)主要相容原生OSS儲存方式,檔案以對象的形式儲存在OSS上,每個檔案根據實際訪問情況會在本地進行緩衝,提升EMR叢集內訪問OSS的效率,同時相容了原有OSS原有檔案形式,資料訪問上能夠與其他OSS用戶端完全相容。本文主要介紹JindoFS的緩衝模式及其使用方式。
背景資訊
緩衝模式最大的特點就是相容性,保持了OSS原有的對象語義,叢集中僅做緩衝,因此和其他的各種OSS用戶端是完全相容的,對原有OSS上的存量資料也不需要做任何的遷移、轉換工作即可使用。同時叢集中的緩衝也能一定程度上提升資料訪問效能,緩解讀寫OSS的頻寬壓力。
配置使用方式
- OSS Scheme
詳情請參見配置OSS Scheme(推薦)。
- JFS Scheme
詳情請參見配置JFS Scheme。
配置OSS Scheme(推薦)
OSS Scheme保留了原有OSS檔案系統的使用習慣,即直接通過oss://<bucket_name>/<path_of_your_file>
的形式訪問OSS上的檔案。使用該方式訪問OSS,無需進行額外的配置,建立EMR叢集後即可使用,對於原有讀寫OSS的作業也無需做任何修改即可運行。
配置JFS Scheme
- 進入SmartData服務。
- 登入阿里雲E-MapReduce控制台。
- 在頂部功能表列處,根據實際情況選擇地區和資源群組。
- 單擊上方的叢集管理頁簽。
- 在叢集管理頁面,單擊相應叢集所在行的詳情。
- 在左側導覽列,選擇 。
- 登入阿里雲E-MapReduce控制台。
- 進入namespace服務配置。
- 單擊配置頁簽。
- 單擊namespace。
- 配置以下參數。JindoFS支援多命名空間,本文命名空間以test為例。
- 修改jfs.namespaces為test。test表示當前JindoFS支援的命名空間,多個命名空間時以逗號(,)隔開。
- 單擊自訂配置,在新增配置項對話方塊中增加以下參數。
參數 參數說明 樣本 jfs.namespaces.test.oss.uri 表示test命名空間的後端儲存。 oss://<oss_bucket>/<oss_dir>/ 說明 該配置必須配置到OSS Bucket下的具體目錄,也可以直接使用根目錄。jfs.namespaces.test.mode 表示test命名空間為緩衝模式。 cache
- 修改jfs.namespaces為test。
- 單擊右上方的儲存。
- 選擇右上方的 。重啟後即可通過
jfs://test/<path_of_file>
的形式訪問JindoFS上的檔案。
啟用緩衝
啟用緩衝會利用本地磁碟對訪問的熱資料區塊進行緩衝,預設狀態為禁用,即所有OSS讀取都直接存取OSS上的資料。
- 在 的配置頁面,單擊client頁簽。
- 修改jfs.cache.data-cache.enable為1,表示啟用緩衝。此配置為用戶端配置,不需要重啟SmartData服務。
緩衝啟用後,Jindo服務會自動管理本機快取備份,通過水位清理本機快取,請您根據需求配置一定的比例用於緩衝,詳情請參見磁碟空間水位控制。
磁碟空間水位控制
JindoFS後端基於OSS,可以提供海量的儲存,但是本地碟的容量是有限的,因此JindoFS會自動淘汰本地較冷的資料備份。我們提供了storage.watermark.high.ratio
和storage.watermark.low.ratio
兩個參數來調節本機存放區的使用容量,值均為0~1的小數,表示使用磁碟空間的比例。
- 修改磁碟水位配置。 在服務配置地區的storage頁簽,修改如下參數。
參數 描述 storage.watermark.high.ratio 表示磁碟使用量的上水位比例,每塊資料盤的JindoFS資料目錄佔用的磁碟空間到達上水位即會觸發清理。預設值:0.4。 storage.watermark.low.ratio 表示使用量的下水位比例,觸發清理後會自動清理冷資料,將JindoFS資料目錄佔用空間清理到下水位。預設值:0.2。 說明 您可以通過設定上水位比例調節期望分給JindoFS的磁碟空間,下水位必須小於上水位,設定合理的值即可。 - 儲存配置。
- 單擊右上方的儲存。
- 在確認修改對話方塊中,輸入執行原因,開啟自動更新配置。
- 單擊確定。
- 重啟Jindo Storage Service使配置生效。
- 單擊右上方的 。
- 在執行叢集操作對話方塊中,設定相關參數。
- 單擊確定。
- 在確認對話方塊中,單擊確定。
訪問OSS bucket
- OSS Scheme
- 在 的配置頁面,單擊smartdata-site頁簽。
- 單擊自訂配置,在新增配置項對話方塊中增加以下參數,單擊確定。
參數 參數說明 fs.jfs.cache.oss-accessKeyId 表示儲存後端OSS的AccessKey ID。 fs.jfs.cache.oss-accessKeySecret 表示儲存後端OSS的AccessKey Secret。 fs.jfs.cache.oss-endpoint 表示儲存後端OSS的endpoint。
- JFS Scheme
- 在 的配置頁面,單擊bigboot頁簽。
- 修改jfs.namespaces為test。
- 單擊自訂配置,在新增配置項對話方塊中增加以下參數,單擊確定。
參數 參數說明 jfs.namespaces.test.oss.uri 表示test命名空間的後端儲存。樣本:oss://<oss_bucket.endpoint>/<oss_dir>。 endpoint資訊直接配置在oss.uri中。
jfs.namespaces.test.oss.access.key 表示儲存後端OSS的AccessKey ID。 jfs.namespaces.test.oss.access.secret 表示儲存後端OSS的AccessKey Secret。
- OSS Scheme
- JFS Scheme
- 在 的配置頁面,單擊namespace頁簽。
進階配置
Cache模式還包含一些進階配置,用於效能調優,以下配置均為用戶端配置,修改後無需重啟SmartData服務。
- 在服務配置地區的client頁簽,配置以下參數。
參數 參數說明 client.oss.upload.threads 每個檔案寫入流的OSS上傳線程數。預設值:4。 client.oss.upload.max.parallelism 進程層級OSS上傳總並發度上限,防止過多上傳線程造成過大的頻寬壓力以及過大的記憶體消耗。預設值:16。 - 在服務配置地區的smartdata-site頁簽,配置以下參數。
參數 參數說明 fs.jfs.cache.copy.simple.max.byte rename過程使用普通copy介面的檔案大小上限(小於閾值的使用普通 copy介面,大於閾值的使用multipart copy介面以提高copy效率)。 說明 如果確認已開通OSS fast copy功能,參數值設為-1,表示所有大小均使用普通copy介面,從而有效利用fast copy獲得最優的rename效能。fs.jfs.cache.write.buffer.size 檔案寫入流的buffer大小,參數值必須為2的冪次,最大為8MB,如果作業同時開啟的寫入流較多導致記憶體使用量過大,可以適當調小此參數。預設值:1048576。 fs.oss.committer.magic.enabled 啟用Jindo Job Committer,避免Job Committer的rename操作,來提升效能。預設值:true。 說明 針對Cache模式下,由於OSS這類Object Storage Servicerename操作效能較差的問題,推出了Jindo Job Committer。