全部產品
Search
文件中心

E-MapReduce:使用JindoFS加速OSS檔案訪問

更新時間:Jul 07, 2024

本文介紹如何在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

操作流程

  1. 步驟一:在ACK叢集中安裝Fluid

  2. 步驟二:建立Dataset和JindoRuntime

  3. 步驟三:配置Spark叢集的串連參數

步驟一:在ACK叢集中安裝Fluid

  1. 登入Container Service管理主控台

  2. 在左側導覽列,選擇市場 > 應用市場

  3. 搜尋並選擇應用ack-fluid。

  4. 單擊右上方的一鍵部署

  5. 在彈出的面板中,選擇EMR關聯的ACK叢集,然後單擊下一步

  6. 參數配置頁面,選擇版本號碼並設定相應參數,然後單擊確定

步驟二:建立Dataset和JindoRuntime

  1. 建立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設定為磁碟掛載的路徑。

  2. 檔案內容修改完成後,執行以下命令,建立Dataset和JindoRuntime。

    kubectl create -f resource.yaml -n fluid-system

步驟三:配置Spark叢集的串連參數

  1. 執行如下命令,擷取JindoFS的串連地址。

    kubectl get svc -n fluid-system | grep jindo

    返回資訊如下圖所示,本樣本擷取的hadoop-jindofs-master-0.fluid-system:18000即為JindoFS的串連地址。IP Address

  2. 進入spark-defaults.conf頁簽。

    1. 登入EMR on ACK

    2. 在EMR on ACK頁面,單擊已建立的Spark叢集操作列的配置

    3. 配置頁簽,單擊spark-defaults.conf

  3. 配置Spark叢集以串連到JindoFS。

    1. 單擊上方的新增配置項

    2. 新增配置項對話方塊中,添加以下配置。

      參數

      描述

      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讀寫權限。

    3. 單擊確定

    4. 在彈出的對話方塊中,輸入執行原因,單擊儲存

  4. 生效配置。

    1. 單擊部署用戶端配置

    2. 在彈出的對話方塊中,輸入執行原因,單擊確定

    3. 確認對話方塊中,單擊確定

    後續正常提交的作業,讀取OSS時就可以體驗JinfoFS的緩衝加速效果了。