本文介紹如何在E-MapReduce(簡稱EMR)on ACK的Spark叢集中,通過Fluid和JindoRuntime加速訪問OSS檔案。
背景資訊
Fluid是一個開源的Kubernetes原生的分布式資料集編排和加速引擎,主要服務於雲原生情境下的資料密集型應用,例如巨量資料應用和AI應用等。有關Fluid的更多介紹,請參見資料加速Fluid概述。JindoRuntime來源於阿里雲EMR團隊JindoFS,是基於C++實現的支撐Dataset資料管理和緩衝的執行引擎,支援OSSObject Storage Service。
使用Fluid和JindoRuntime,可以加速EMR on ACK上的Spark作業讀取OSS檔案,達到節省頻寬流量的效果。
前提條件
已在EMR on ACK控制台建立Spark叢集,詳情請參見快速入門。
已在本地安裝Helm,安裝詳細步驟請參見Install Helm。
操作流程
步驟一:在ACK叢集中安裝Fluid
在左側導覽列,選擇。
搜尋並選擇應用ack-fluid。
單擊右上方的一鍵部署。
在彈出的面板中,選擇EMR關聯的ACK叢集,然後單擊下一步。
在參數配置頁面,選擇版本號碼並設定相應參數,然後單擊確定。
步驟二:建立Dataset和JindoRuntime
建立resource.yaml檔案,檔案內容如下。
apiVersion: data.fluid.io/v1alpha1 kind: Dataset metadata: name: hadoop spec: mounts: - mountPoint: oss://test-bucket/ options: fs.oss.accessKeyId: <OSS_ACCESS_KEY_ID> fs.oss.accessKeySecret: <OSS_ACCESS_KEY_SECRET> fs.oss.endpoint: <OSS_ENDPOINT> name: hadoop --- apiVersion: data.fluid.io/v1alpha1 kind: JindoRuntime metadata: name: hadoop spec: replicas: 2 tieredstore: levels: - mediumtype: HDD path: /mnt/disk1 quota: 100Gi high: "0.9" low: "0.8"檔案內容包含以下兩部分:
第一部分是Dataset CRD對象,其中描述了資料集的來源。程式碼範例中的test-bucket,表示需要加速的OSS Bucket。
第二部分是JindoRuntime,相當於啟動了一個JindoFS的叢集來提供快取服務。具體的參數說明參見JindoRuntime文檔。
其中path表示節點上緩衝的儲存路徑,建議使用資料盤容量充足的節點,將path設定為磁碟掛載的路徑。
檔案內容修改完成後,執行以下命令,建立Dataset和JindoRuntime。
kubectl create -f resource.yaml -n fluid-system
步驟三:配置Spark叢集的串連參數
執行如下命令,擷取JindoFS的串連地址。
kubectl get svc -n fluid-system | grep jindo返回資訊如下圖所示,本樣本擷取的hadoop-jindofs-master-0.fluid-system:18000即為JindoFS的串連地址。

進入spark-defaults.conf頁簽。
登入EMR on ACK。
在EMR on ACK頁面,單擊已建立的Spark叢集操作列的配置。
在配置頁簽,單擊spark-defaults.conf。
配置Spark叢集以串連到JindoFS。
單擊上方的新增配置項。
在新增配置項對話方塊中,添加以下配置。
參數
描述
spark.hadoop.fs.xengine
固定值為jindofsx。
spark.hadoop.fs.jindofsx.data.cache.enable
資料緩衝開關。固定值為true。
spark.hadoop.fs.jindofsx.meta.cache.enable
中繼資料快取開關:
false(預設值):禁用中繼資料快取。
true:啟用中繼資料快取。
spark.hadoop.fs.jindofsx.client.metrics.enable
固定值true。
spark.hadoop.fs.jindofsx.storage.connect.enable
固定值true。
spark.hadoop.fs.jindofsx.namespace.rpc.address
步驟1擷取到的JindoFS的串連地址。本樣本為hadoop-jindofs-master-0.fluid-system:18000。
spark.hadoop.fs.oss.accessKeyId
OSS的AccessKey ID。帳號需要有OSS讀寫權限。
spark.hadoop.fs.oss.accessKeySecret
OSS的AccessKey Secret。帳號需要有OSS讀寫權限。
單擊確定。
在彈出的對話方塊中,輸入執行原因,單擊儲存。
生效配置。
單擊部署用戶端配置。
在彈出的對話方塊中,輸入執行原因,單擊確定。
在確認對話方塊中,單擊確定。
後續正常提交的作業,讀取OSS時就可以體驗JinfoFS的緩衝加速效果了。