Wsl2 使用flink

6 min read Sep 30, 2024
Wsl2 使用flink

WSL2 上での Flink 使用: セットアップと実行ガイド

Windows ユーザーが Apache Flink を使い始めるのは難しい場合があります。これは、Flink が Java で書かれており、通常は Linux 環境で実行されるためです。しかし、Windows Subsystem for Linux 2 (WSL2) のおかげで、Windows マシン上で Linux 環境をシームレスに実行できるようになり、Flink の実行が簡単になりました。

このガイドでは、WSL2 で Flink をセットアップして実行する方法をステップバイステップで説明します。

1. WSL2 のインストールと構成

まず、Windows マシンに WSL2 をインストールする必要があります。以下の手順に従ってください。

  1. Windows 機能の有効化: Windows 設定を開き、「アプリ」>「アプリと機能」>「プログラムと機能」>「Windows の機能の有効化または無効化」を選択します。
  2. WSL の有効化: 「Windows Subsystem for Linux」と「仮想マシン プラットフォーム」にチェックを入れ、「OK」をクリックします。
  3. Linux ディストリビューションのインストール: Microsoft Store からお好みの Linux ディストリビューション(Ubuntu、Debian など)をダウンロードしてインストールします。

WSL2 のインストールが完了したら、次の手順で WSL2 を構成します。

  1. WSL2 モードの有効化: コマンドプロンプトまたは PowerShell を開き、以下のコマンドを実行します。

    wsl --set-default-version 2
    
  2. WSL2 用の仮想マシンの設定: 以下のコマンドを実行して WSL2 用の仮想マシンの設定を確認します。

    wsl --list --verbose
    

    「Version」列が「2」になっていることを確認してください。

2. Java のインストール

Flink は Java で書かれているため、WSL2 に Java をインストールする必要があります。Oracle Java または OpenJDK のいずれかを選択できます。

  1. Oracle Java のインストール: Oracle Java の Web サイトから最新の Java Development Kit (JDK) をダウンロードします。

  2. OpenJDK のインストール: Ubuntu の場合は、以下のコマンドを実行して OpenJDK をインストールします。

    sudo apt update
    sudo apt install default-jdk
    

    他の Linux ディストリビューションでは、パッケージマネージャーを使用して OpenJDK をインストールできます。

3. Apache Flink のインストール

Flink をインストールするには、次の手順に従います。

  1. Flink のダウンロード: Apache Flink の Web サイトから最新の Flink バージョンをダウンロードします。

  2. Flink の展開: ダウンロードした Flink アーカイブを解凍します。

  3. 環境変数の設定: Flink を実行するために必要な環境変数を設定します。以下のコマンドを実行して Flink の bin ディレクトリを PATH 環境変数に追加します。

    export PATH=$PATH:/bin
    

    <Flinkディレクトリ> は Flink を展開したディレクトリに置き換えます。

4. Flink の実行

Flink のインストールが完了したら、次の手順で Flink を実行します。

  1. Flink の起動: コマンドプロンプトまたは PowerShell を開き、以下のコマンドを実行して Flink を起動します。

    flink run -c <クラス名> 
    

    <クラス名> は Flink ジョブのエントリポイントとなるクラスの名前、<jarファイル> は Flink ジョブを含む JAR ファイルです。

  2. ジョブの監視: Flink Web UI を使用してジョブの監視ができます。Flink Web UI にアクセスするには、以下のコマンドを実行します。

    flink run -c <クラス名>  -y
    

    -y オプションを指定すると、Flink Web UI が自動的に起動されます。

5. 例: 単純な Flink ジョブの実行

以下は、WSL2 で実行できる単純な Flink ジョブの例です。

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;

public class WordCount {

    public static void main(String[] args) throws Exception {

        // 実行環境の取得
        final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        // データソースの作成
        DataSource text = env.fromElements(
                "To be, or not to be, that is the question",
                "Whether 'tis nobler in the mind to suffer",
                "The slings and arrows of outrageous fortune"
        );

        // 単語の分割
        text.flatMap(new FlatMapFunction>() {
            @Override
            public void flatMap(String value, Collector> out) throws Exception {
                String[] words = value.split("\\s+");
                for (String word : words) {
                    out.collect(new Tuple2<>(word, 1));
                }
            }
        })

        // 単語の集計
        .groupBy(0)
        .sum(1)

        // 結果の出力
        .print();

        // ジョブの実行
        env.execute("WordCount");
    }
}

このジョブは、3 つの文章を処理し、各単語の出現回数をカウントします。このジョブを実行するには、まず Java コードを WordCount.java ファイルに保存し、以下のコマンドを実行します。

javac WordCount.java
jar cfe WordCount.jar WordCount WordCount.class
flink run -c WordCount WordCount.jar

このコマンドを実行すると、Flink ジョブが実行され、Flink Web UI でジョブの状態を確認できます。

WSL2 上での Flink 使用に関する追加のヒント:

  • ネットワーク設定: WSL2 で Flink を実行する際には、Flink ジョブから外部サービス(例えば、データベースなど)にアクセスできるように、ネットワーク設定を確認してください。
  • メモリ割り当て: メモリ不足エラーが発生する場合は、Flink のメモリ割り当てを増やす必要があります。flink-conf.yaml ファイルで taskmanager.memory.process.sizejobmanager.memory.process.size の値を変更できます。
  • ログの確認: Flink ジョブで問題が発生した場合は、Flink のログを確認してください。ログファイルは通常、Flinkディレクトリ/log ディレクトリにあります。

結論

WSL2 は、Windows マシン上で Flink を実行するための強力なツールです。このガイドに従うことで、WSL2 で Flink を簡単にセットアップして実行することができます。Flink の機能をさらに活用したい場合は、Flink の公式ドキュメントやコミュニティフォーラムを参照してください。

Featured Posts