すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:EMR on ACKスタートガイド

最終更新日:Jan 11, 2025

このトピックでは、Alibaba Cloudアカウントを使用してAlibaba Cloud E-MapReduce(EMR)コンソールにログオンし、EMR on ACKページでクラスタを作成し、コンソールでジョブを実行する方法について説明します。

注意事項

  • このトピックでは、必要なJARファイルはイメージにパッケージ化されています。独自のJARファイルを使用している場合は、Alibaba Cloud Object Storage Service(OSS)にJARファイルをアップロードできます。ファイルのアップロード方法の詳細については、「シンプルアップロード」をご参照ください。

    この場合、コマンドのlocal:///opt/spark/examples/spark-examples.jarを、JARファイルがOSSに保存されている実際のパスに置き換える必要があります。パスは、oss://<yourBucketName>/<path>.jar形式で指定されます。

準備

Container Service for Kubernetes (ACK) コンソールでEMR on ACKページにクラスタを作成する前に、以下の操作を実行する必要があります。

  1. ACKクラスタを作成します。詳細については、「ACK専用クラスタを作成する」または「ACKマネージドクラスタを作成する」をご参照ください。

  2. AliyunOSSFullAccessポリシーとAliyunDLFFullAccessポリシーをAlibaba Cloudアカウントにアタッチします。詳細については、「RAMロールにポリシーをアタッチする」をご参照ください。

説明

JARパッケージをAlibaba Cloud Object Storage Service(OSS)に保存する場合は、最初にOSSを有効化する必要があります。詳細については、「OSSを有効化する」をご参照ください。

ステップ 1:ロールの割り当て

EMR on ACKを使用する前に、Alibaba CloudアカウントにシステムデフォルトロールAliyunEMROnACKDefaultRoleが割り当てられている必要があります。詳細については、「Alibaba Cloudアカウントにロールを割り当てる」をご参照ください。

ステップ 2:クラスタの作成

EMR on ACKページでSparkクラスタを作成します。詳細については、「クラスタを作成する」をご参照ください。

  1. EMR コンソールにログオンします。左側のナビゲーションペインで、[EMR on ACK] をクリックします。

  2. EMR on ACKページで、[クラスタの作成] をクリックします。

  3. [e-mapreduce On ACK] ページで、パラメータを構成します。次の表にパラメータを示します。

    パラメータ

    説明

    リージョン

    中国 (杭州)

    クラスタを作成するリージョン。クラスタの作成後、リージョンを変更することはできません。

    クラスタタイプ

    Spark

    クラスタのタイプ。 Spark は、抽出、変換、読み込み (ETL)、バッチ処理、データモデリングなど、さまざまな機能を提供する一般的な分散ビッグデータ処理エンジンです。

    重要

    Spark クラスタを Shuffle Service クラスタに関連付ける場合は、クラスタの主要な EMR バージョンが同じである必要があります。たとえば、EMR バージョンが EMR-5.x-ack の Spark クラスタは、EMR バージョンが EMR-5.x-ack の Shuffle Service クラスタにのみ関連付けることができます。

    製品バージョン

    EMR-5.6.0-ack

    EMR のバージョン。デフォルトでは、最新バージョンが使用されます。

    コンポーネントバージョン

    SPARK (3.2.1)

    指定されたタイプのクラスタにデプロイされているコンポーネントのタイプとバージョンを表示します。

    ACK クラスタ

    Emr-ack

    既存の ACK クラスタを選択するか、ACK コンソールで ACK クラスタを作成します。

    重要

    同じ ACK クラスタを、EMR on ACK ページで作成された同じタイプの複数のクラスタに関連付けることはできません。

    [専用ノードの構成] をクリックして、EMR 専用ノードを構成できます。ノードまたはノードプールに taint とラベルを追加することで、EMR 専用ノードまたはノードプールを構成できます。

    説明

    ノードプールで専用ノードを構成することをお勧めします。ノードプールがない場合は、ノードプールを作成します。ノードプールの作成方法の詳細については、「ノードプールを作成する」をご参照ください。ノードプールの詳細については、「ノードプールの概要」をご参照ください。

    OSS バケット

    oss-spark-test

    既存のバケットを選択するか、OSS コンソールでバケットを作成します。

    クラスタ名

    Emr-Spark

    クラスタの名前。名前は 1 ~ 64 文字で、文字、数字、ハイフン (-)、アンダースコア (_) のみを使用できます。

  4. [作成] をクリックします。

    クラスタのステータスが [実行中] に変わると、クラスタが作成されます。

ステップ 3:ジョブの送信

クラスタが作成された後、ジョブを送信できます。このセクションでは、カスタムリソース定義 (CRD) を使用して Spark ジョブを送信する方法について説明します。 Spark の詳細については、「クイックスタート」をご参照ください。「クイックスタート」の情報を確認する場合は、プログラミング言語のタイプと Spark のバージョンを選択します。

さまざまなタイプのジョブを送信する方法については、以下のトピックをご参照ください。

  1. kubectl を使用して Alibaba Cloud Container Service for Kubernetes (ACK) クラスタに接続します。詳細については、「クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する」をご参照ください。

  2. spark-pi.yaml という名前のジョブファイルを作成します。次のコードは、ファイルの内容を示しています。

    apiVersion: "sparkoperator.k8s.io/v1beta2"
    kind: SparkApplication
    metadata:
      name: spark-pi-simple
    spec:
      type: Scala
      sparkVersion: 3.2.1
      mainClass: org.apache.spark.examples.SparkPi
      mainApplicationFile: "local:///opt/spark/examples/spark-examples.jar"
      arguments:
        - "1000"
      driver:
        cores: 1
        coreLimit: 1000m
        memory: 4g
      executor:
        cores: 1
        coreLimit: 1000m
        memory: 8g
        memoryOverhead: 1g
        instances: 1

    コードのフィールドの詳細については、「spark-on-k8s-operator」をご参照ください。

    説明
    • カスタムファイル名を指定できます。この例では、spark-pi.yaml が使用されています。

    • この例では、EMR V5.6.0 用の Spark 3.2.1 を使用しています。別のバージョンの Spark を使用する場合は、ビジネス要件に基づいて sparkVersion パラメータを構成します。

  3. 次のコマンドを実行して、ジョブを送信します。

    kubectl apply -f spark-pi.yaml --namespace <Namespace in which the cluster resides>

    <Namespace in which the cluster resides> を、ビジネス要件に基づいて名前空間に置き換えます。名前空間を表示するには、EMR コンソールにログオンし、[クラスタの詳細] タブに移動します。

    次の情報が返されます。

    sparkapplication.sparkoperator.k8s.io/spark-pi-simple created
    説明

    spark-pi-simple は、送信された Spark ジョブの名前です。

  4. オプション。 [ジョブの詳細] タブで、送信された Spark ジョブに関する情報を表示します。

ステップ 4:(オプション)クラスタの解放

クラスタが不要になった場合は、コストを削減するためにクラスタを解放できます。

  1. EMR on ACKページで、解放するクラスタを見つけ、[アクション] 列の [解放] をクリックします。

  2. [クラスタの解放] メッセージで、[OK] をクリックします。

参考資料