MaxCompute は MapReduce プログラミングインターフェイスを提供します。Java で記述された MapReduce ジョブをスケジュールおよび実行するための MaxCompute MR ノードを作成し、大規模なデータセットを処理できます。
背景情報
MapReduce は、ユーザーが記述したビジネスロジックと組み込みコンポーネントを統合して、Hadoop クラスター上で同時実行される完全な分散プログラムを作成する分散コンピューティングフレームワークです。MaxCompute では、MapReduce プログラミングインターフェイスの 2 つのバージョンを提供しています。詳細については、「MapReduce」をご参照ください。
MaxCompute MapReduce:MaxCompute のネイティブインターフェイスです。高速な実行性能、迅速な開発を実現し、ファイルシステムを公開しません。
拡張 MaxCompute MapReduce(MR2):MaxCompute MapReduce を拡張した機能で、より複雑なジョブスケジューリングをサポートします。その MapReduce 実装は、ネイティブの MaxCompute インターフェイスと互換性があります。
DataWorks では、MaxCompute MR ノードを使用して MaxCompute MapReduce タスクをスケジュールおよび実行し、他のジョブと統合できます。
前提条件
MaxCompute コンピューティングリソースはDataWorks ワークスペースにアタッチされています。
必要なリソースがアップロードおよび公開済みである必要があります。詳細については、「リソース管理」をご参照ください。
MaxCompute MR ノードを作成する前に、必ずリソースをアップロードおよび公開してください。
制限事項
MaxCompute MR ノードの使用に関する制限事項については、「制限事項」をご参照ください。
操作手順
MaxCompute MR ノードエディターで、以下の手順を実行します。
MR コードの開発
この例では、MaxCompute MR ノードを使用して、
wc_in テーブル内の各文字列の出現回数をカウントし、結果を wc_out テーブルに書き込みます。mapreduce-examples.jarリソースをアップロード、提出、および公開します。詳細については、「リソース管理」をご参照ください。説明mapreduce-examples.jarパッケージの内部ロジックについては、「WordCount の例」をご参照ください。エディターに以下のサンプルコードを入力します。
-- 入力テーブルを作成します。 CREATE TABLE IF NOT EXISTS wc_in (key STRING, VALUE STRING); -- 出力テーブルを作成します。 CREATE TABLE IF NOT EXISTS wc_out (key STRING, cnt BIGINT); --- システムの dual テーブルを作成します。 DROP TABLE IF EXISTS dual; CREATE TABLE dual(id BIGINT); -- ワークスペースに疑似テーブルが存在しない場合は、作成してデータを初期化する必要があります。 --- システムの疑似テーブルにデータを初期化します。 INSERT OVERWRITE TABLE dual SELECT count(*) FROM dual; --- 入力テーブル wc_in にサンプルデータを挿入します。 INSERT OVERWRITE TABLE wc_in SELECT * FROM ( SELECT 'project','val_pro' FROM dual UNION ALL SELECT 'problem','val_pro' FROM dual UNION ALL SELECT 'package','val_a' FROM dual UNION ALL SELECT 'pad','val_a' FROM dual ) b; -- 先ほどアップロードした JAR リソースを参照します。このリソースは [リソース] セクションで確認でき、右クリックして [リソースの参照] を選択すると参照できます。 --@resource_reference{"mapreduce-examples.jar"} jar -resources mapreduce-examples.jar -classpath ./mapreduce-examples.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out説明コードの説明:
--@resource_reference:[リソース] セクション内のリソース名を右クリックし、リソースの参照を選択すると、この文が自動生成されます。-resources:参照する JAR リソースファイルの名前です。-classpath:JAR パッケージへのパスです。リソースが参照されているため、パスは常に./に JAR ファイル名を続けた形式になります。com.aliyun.odps.mapred.open.example.WordCount:実行時に呼び出される JAR パッケージ内のメインクラスです。この名前は、JAR パッケージ内のメインクラスと厳密に一致させる必要があります。wc_in:MapReduce ジョブの入力テーブル名です。このテーブルは上記のコードで作成されています。wc_out:MapReduce ジョブの出力テーブル名です。このテーブルは上記のコードで作成されています。MapReduce ジョブで複数の JAR リソースを使用する場合、クラスパスは
-classpath ./xxxx1.jar,./xxxx2.jarのように、カンマ(,)で区切って指定します。
MR ジョブの実行
右側の Run Configuration セクションで、コンピュートエンジンインスタンス、コンピュートクォータ、および リソースグループ を構成します。
説明パブリックネットワークまたは仮想プライベートクラウド(VPC)上のデータソースにアクセスするには、当該データソースに接続可能なスケジューリング用リソースグループを使用する必要があります。詳細については、「ネットワーク接続ソリューション」をご参照ください。
ツールバーで 実行 をクリックします。パラメーター ダイアログボックスが表示されたら、ご利用の MaxCompute データソースを選択してジョブを実行します。
(任意)結果の確認
MaxCompute SQL ノードを使用して、出力テーブル
wc_outのデータをクエリします。SELECT * FROM wc_out;以下のような結果が返されます:
+------------+------------+ | key | cnt | +------------+------------+ | package | 1 | | pad | 1 | | problem | 1 | | project | 1 | | val_a | 2 | | val_pro | 2 | +------------+------------+ノードを定期的に実行する必要がある場合は、スケジューリングプロパティを構成します。詳細については、「ノードのスケジューリング構成」をご参照ください。
ノードの構成が完了したら、デプロイする必要があります。詳細については、「ノードおよびワークフローのデプロイメント」をご参照ください。
タスクがデプロイされた後は、オペレーションセンターでそのステータスを確認できます。詳細については、「オペレーションセンターの使い始め」をご参照ください。
関連ドキュメント
さまざまなユースケース向けに MaxCompute MR ジョブを開発する方法については、以下をご参照ください:
MR ジョブ実行時に発生する可能性のある一般的な問題の解決方法については、「MaxCompute MapReduce のよくある質問」をご参照ください。