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

Tablestore:EMR の使用

最終更新日:Dec 28, 2024

E-MapReduce (EMR) JindoFS をキャッシュモードで使用して、データレイクとして使用されるオブジェクトストレージサービス (OSS) に接続できます。

背景情報

EMR JindoFS をキャッシュモードまたはブロックストレージモードで使用して、OSS に接続できます。

  • JindoFS をキャッシュモードで使用する場合、ファイルは OSS にオブジェクトとして保存され、頻繁にアクセスされるオブジェクトは EMR クラスタのローカルディスクにキャッシュされて、データアクセス効率が向上します。キャッシュモードでは、JindoFS はオブジェクト形式を変換することなく OSS 内のオブジェクトにアクセスできます。JindoFS は OSS クライアントと完全に互換性があります。詳細については、JindoFS をキャッシュモードで使用する を参照してください。

  • ブロックストレージモードは、効率的な読み取りおよび書き込み操作と高いメタデータアクセス性を保証します。JindoFS は OSS をストレージバックエンドとして使用します。ブロックストレージモードでは、JindoFS はデータを OSS にブロックとして保存し、Namespace Service を使用してメタデータを維持します。これにより、データの読み取り、書き込み、またはメタデータのクエリを実行する際の高いパフォーマンスが保証されます。詳細については、JindoFS をブロックストレージモードで使用する を参照してください。

前提条件

  • EMR クラスタが作成されていること。詳細については、クラスタの作成 を参照してください。

    クラスタを作成する前に、以下の点に注意してください。

    • EMR クラスタと OSS が同じ Alibaba Cloud アカウントに属していること。EMR クラスタと OSS バケットは同じリージョンに配置することをお勧めします。

    • クラスタを作成するときに、インターネット経由でクラスタにアクセスするには パブリック IP アドレスの割り当て をオンにし、Shell を使用してリモートサーバーにログオンするには リモートログオン をオンにします。

    • SmartData と Bigboot は、JindoFS の構成を使用するための依存サービスです。これらのサービスがデフォルトで選択されていない場合は、これらのサービスを選択してください。

  • 配信タスクが作成されていること。詳細については、Tablestore コンソールを使用して OSS にデータを配信する を参照してください。

手順

  1. EMR JindoFS をキャッシュモードで使用して OSS に接続し、ローカルキャッシュを有効にします。詳細については、JindoFS をキャッシュモードで使用する を参照してください。

    ローカルキャッシュを有効にすると、ホットデータブロックがローカルディスクにキャッシュされます。デフォルトでは、この機能は無効になっており、EMR が OSS から直接データを読み取ることを示します。ローカルキャッシュを有効にすると、Jindo はキャッシュされたデータを自動的に管理します。Jindo は、構成したディスク容量の使用状況に基づいてキャッシュされたデータをクリアします。キャッシュされたデータをクリアするための使用状況を構成し、ローカルディスクの容量使用率を調整します。

  2. Spark SQL を起動します。

    1. PuTTY などのリモートログオンツールを使用して、EMR ヘッダーサーバーにログオンします。

    2. 次のコマンドを実行して Spark SQL を実行します。

      spark-sql --master yarn --num-executors 5 --executor-memory 1g --executor-cores 2
  3. SQL ステートメントを使用して、OSS フォルダーにマップする外部テーブルを作成します。

    Tablestore コンソールで SQL ステートメントを取得します。次の SQL ステートメントの例は、参照用にのみ使用されます。

    CREATE EXTERNAL TABLE  lineitem (l_orderkey bigint,l_linenumber bigint,l_receiptdate string,l_returnflag string,l_tax double,l_shipmode string,l_suppkey bigint,l_shipdate string,l_commitdate string,l_partkey bigint,l_quantity double,l_comment string,l_linestatus string,l_extendedprice double,l_discount double,l_shipinstruct string) PARTITIONED BY (`year` int, `month` int) STORED AS PARQUET  LOCATION  'jfs://test/' ;

    fig001

    Tablestore コンソールで SQL ステートメントを取得するには、次の方法を使用します。

    OSS にデータを配信する タブで、配信タスクに対応する アクション 列の テーブルを作成するための SQL ステートメントを表示 をクリックします。SQL ステートメントを表示およびコピーできます。次の図は、外部テーブルを作成するために使用される SQL ステートメントの例を示しています。

    pic002

  4. 次の SQL ステートメントを実行して、OSS ソースからデータパーティションを読み込みます。

    lineitem は外部テーブルの名前です。

    msck repair table lineitem;

    load

  5. データをクエリします。

    select * from lineitem limit 1;

    pic003