8.2.11 Azure Data Lake Storage

8.2.11.1 Azure Data Lake Gen1 (ADLS Gen1)

Microsoft Azure Data Lakeは、Hadoopクライアントを介したデータのストリーミングをサポートしています。このため、Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)のHadoop分散ファイル・システム(HDFS)ハンドラを使用するか、ファイル・ライター・ハンドラをHDFSイベント・ハンドラと組み合せて使用して、データ・ファイルをAzure Data Lakeに送信できます。

Microsoft Azure Data Lakeへの収集で推奨されるメカニズムは、HDFSイベント・ハンドラと組み合せたファイル・ライター・ハンドラです。

次のステップを使用して、GG for DAAからMicrosoft Azure Data Lakeに接続します。

  1. http://hadoop.apache.org/releases.htmlからHadoop 2.9.1をダウンロードします。
  2. ファイルを一時ディレクトリで解凍します。たとえば、/ggwork/hadoop/hadoop-2.9です。
  3. ディレクトリの/ggwork/hadoop/hadoop-2.9/hadoop-env.shファイルを編集します。
  4. 環境変数JAVA_HOMEおよびHADOOP_CLASSPATHのエントリを追加します。
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
    export HADOOP_CLASSPATH=/ggwork/hadoop/hadoop-2.9.1/share/hadoop/tools/lib/*:$HADOOP_CLASSPATH

    これはJava 8を指し、share/hadoop/tools/libがHadoopクラスパスに追加されます。デフォルトでは、ライブラリ・パスは変数にはなく、必要なAzureのライブラリはこのディレクトリにあります。

  5. /ggwork/hadoop/hadoop-2.9.1/etc/hadoop/core-site.xmlファイルを編集し、次を追加します。
    <configuration>
    <property>
    <name>fs.adl.oauth2.access.token.provider.type</name>
    <value>ClientCredential</value>
    </property>
    <property>
    <name>fs.adl.oauth2.refresh.url</name>
    <value>Insert the Azure https URL here to obtain the access token</value>
    </property>
    <property>
    <name>fs.adl.oauth2.client.id</name>
    <value>Insert the client id here</value>
    </property>
    <property>
    <name>fs.adl.oauth2.credential</name>
    <value>Insert the password here</value>
    </property>
    <property>
    <name>fs.defaultFS</name>
    <value>adl://Account Name.azuredatalakestore.net</value>
    </property>
    </configuration>
  6. ファイアウォールを開いて、トークンを取得するためのAzure URLとAzure Data Lake URLの両方に接続します。または、ネットワークまたはVPNから切断します。Azure Data Lakeへのアクセスでは、Apache Hadoopドキュメントごとのプロキシ・サーバーの使用は現在サポートされていません。
  7. Hadoopシェル・コマンドを使用して、Azure Data Lakeへの接続を証明します。たとえば、2.9.1 Hadoopインストール・ディレクトリで、次のコマンドを実行してルートHDFSディレクトリのリストを取得します。
    ./bin/hadoop fs -ls /
  8. Azure Data Lakeへの接続を確認します。
  9. HDFSイベント・ハンドラを使用してAzure Data Lakeにデータをプッシュするように、HDFSハンドラまたはファイル・ライター・ハンドラのいずれかを構成します。「フラット・ファイル」を参照してください。ファイル・ライター・ハンドラをHDFSイベント・ハンドラとともに使用することをお薦めします。

    gg.classpathの設定の例を次に示します。

    gg.classpath=/ggwork/hadoop/hadoop-2.9.1/share/hadoop/common/:/ggwork/hadoop/hadoop-
    2.9.1/share/hadoop/common/lib/:/ggwork/hadoop/hadoop-
    2.9.1/share/hadoop/hdfs/:/ggwork/hadoop/hadoop-2.9.1/share/hadoop/hdfs/lib/:/ggwork/hadoop/hadoop-
    2.9.1/etc/hadoop:/ggwork/hadoop/hadoop-2.9.1/share/hadoop/tools/lib/*

https://hadoop.apache.org/docs/current/hadoop-azure-datalake/index.htmlを参照してください。

8.2.11.2 HadoopクライアントおよびABFSを使用したAzure Data Lake Gen2

Microsoft Azure Data Lake Gen 2 (HadoopクライアントおよびABFSを使用)では、Hadoopクライアントによるデータのストリーミングをサポートしています。このため、Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA) HDFSハンドラを使用するか、ファイル・ライター・ハンドラをHDFSイベント・ハンドラと組み合せて使用して、データ・ファイルをAzure Data Lake Gen 2に送信できます。

Azure Data Lake Gen 2への接続には、Hadoop 3.3.0以上が推奨されます。Hadoop 3.3.0には、abfssスキームを使用したファイル・クローズ時にAzureイベントを正しく起動するための重要な修正が含まれています。詳細は、Hadoop Jira問題Hadoop-16182を参照してください。

ファイル・ライター・ハンドラは、HDFSイベント・ハンドラと組み合せて使用します。これは、Azure Data Lake Gen 2への収集に推奨されるメカニズムです。

前提条件

第1部:

  1. Azure Data Lake Gen 2への接続では、AzureポータルでAzure Data Lake Gen 2アカウントが正しくプロビジョニングされていることを想定しています。

    Azureポータルで、左側のコマンドから「ストレージ アカウント」を選択して、ストレージ・アカウントを表示/作成/削除します。

    Azure Data Lake Gen 2のプロビジョニング・プロセスの「詳細」タブで、「階層型名前空間」を有効にすることをお薦めします。

    Azureストレージ・アカウントの階層型名前空間を有効にすることは必須ではありません。

  2. ストレージ・アカウントに接続するためにWebアプリ/APIの「アプリの登録」が作成されていることを確認します。

    Azureポータルの左側のコマンドのリストから、「すべてのサービス」を選択し、フィルタ・コマンド・ボックスに「アプリ」と入力し、フィルタされたサービスのリストから「アプリの登録」を選択します。「Web アプリ/API」タイプの「アプリの登録」を作成します。

    Azure Storageにアクセスするための権限を追加します。アプリの登録をAzureアカウントに割り当てます。次のように、アプリの登録のキーを生成します。
    1. 各アプリの登録ページにナビゲートします。
    2. 左側のペインで、「証明書とシークレット」を選択します。
    3. + 新規クライアント・シークレットをクリックします(この列には、「値」列の下に新しいキーが表示されます)。
    生成されるキー文字列はクライアント・シークレットであり、キーの作成時にのみ表示されます。このため、生成されたキー文字列を記録してください。

第2部:

  1. Azure Data Lake Gen 2アカウントで、「アプリの登録」にアクセス権が付与されていることを確認します。

    Azureポータルで、左側のパネルから「ストレージ アカウント」を選択します。作成したAzure Data Lake Gen 2アカウントを選択します。

    「アクセス制御 (IAM)」コマンドを選択して、「アクセス制御 (IAM)」パネルを表示します。「ロールの割り当て」タブを選択し、作成したアプリの登録にロールの割当てを追加します。

    ストレージ・アカウントに割り当てられたアプリの登録には、Azureストレージ・アカウントへの読取りおよび書込みアクセスが必要です。

    Azure組込みロールStorage Blob Data Contributorまたは必要な権限を持つカスタム・ロールのいずれかを使用できます。
  2. Azure Data Lake Gen 2への接続は、プロキシ・サーバーを介してルーティングできます。
    これを有効にするには、Javaブート・オプションに3つのパラメータを設定する必要があります。
    jvm.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar -DproxySet=true -Dhttps.proxyHost={insert your proxy server} -Dhttps.proxyPort={insert your proxy port}
  3. Azure Data Lake Gen 2に対しては2つの接続スキーム(abfsおよびabfss)がサポートされています。

    abfssではHTTPSコールを使用することによってセキュリティおよびペイロードの暗号化が提供されるため、推奨される方法はabfssです。

Microsoft Azure Data Lakeへの接続 2

GG for DAAからMicrosoft Azure Data Lake 2に接続するには:

  1. http://hadoop.apache.org/releases.htmlからHadoop 3.3.0をダウンロードします。
  2. ファイルを一時ディレクトリで解凍します。たとえば、/usr/home/hadoop/hadoop-3.3.0です。
  3. Java 8を指すように{hadoop install dir}/etc/hadoop/hadoop-env.shファイルを編集し、Azure HadoopライブラリをHadoopクラスパスに追加します。hadoop-env.shファイルのエントリは次のとおりです。
    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_202
    export HADOOP_OPTIONAL_TOOLS="hadoop-azure"
  4. プライベート・ネットワークでは、パブリック・インターネットにアクセスするために、プロキシ・サーバーを介したルーティングが必要になることがよくあります。そのため、Azureへの接続をテストするには、hadoopコマンドライン・ユーティリティのプロキシ・サーバー設定を構成する必要がある場合があります。プロキシ・サーバー設定を構成するには、hadoop-env.shファイルで次のように設定します。
    export HADOOP_CLIENT_OPTS="-Dhttps.proxyHost={insert your proxy server} -Dhttps.proxyPort={insert your proxy port}"

    ノート:

    これらのプロキシ設定は、hadoopコマンドライン・ユーティリティでのみ機能します。GG for DAAでAzureに接続するためのプロキシ・サーバー設定は、ここで説明されているように、jvm.bootoptionsで設定されます。
  5. {hadoop install dir}/etc/hadoop/core-site.xmlファイルを編集し、次の構成を追加します。
    <configuration>
    <property>
      <name>fs.azure.account.auth.type</name>
      <value>OAuth</value>
    </property>
    <property>
      <name>fs.azure.account.oauth.provider.type</name>
      <value>org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider</value>
    </property>
    <property>
      <name>fs.azure.account.oauth2.client.endpoint</name>
      <value>https://login.microsoftonline.com/{insert the Azure Tenant id here}/oauth2/token</value>
    </property>
    <property>
      <name>fs.azure.account.oauth2.client.id</name>
      <value>{insert your client id here}</value>
    </property>
    <property>
      <name>fs.azure.account.oauth2.client.secret</name>
      <value>{insert your client secret here}</value>
    </property>
    <property>
      <name>fs.defaultFS</name>
      <value>abfss://{insert your container name here}@{insert your ADL gen2 storage account name here}.dfs.core.windows.net</value>
    </property>
    <property>
      <name>fs.azure.createRemoteFileSystemDuringInitialization</name>
      <value>true</value>
    </property>
    </configuration>

    AzureテナントIDを取得するには、Microsoft Azureポータルに移動します。「検索」バーに「Azure Active Directory」と入力し、サービス・リストから「Azure Active Directory」を選択します。テナントIDは、メインのAzure Active Directoryサービス・ページの中央にあります。

    AzureクライアントIDとクライアント・シークレットを取得するには、Microsoft Azureポータルに移動します。左側のリストから「すべてのサービス」を選択し、Azureサービスのリストを表示します。フィルタ・コマンド・ボックスに「アプリ」と入力し、リストされたサービスから「アプリの登録」を選択します。作成した「アプリの登録」を選択して、Azure Storageにアクセスします。「アプリの登録」に表示されるアプリケーションIDは、クライアントIDです。クライアント・シークレットは、新しいキーが追加されたときに生成されるキー文字列です。この生成されたキー文字列は、キーの作成時に1回のみ表示されます。生成されたキー文字列がわからない場合は、別のキーを作成し、生成されたキー文字列を確実に取得してください。

    ADL gen 2アカウント名は、Azure ADL gen 2アカウントを作成したときに生成したアカウント名です。

    ファイル・システムは、Azure Data Lake Gen 2ストレージ・アカウント内のサブ・パーティションです。次のHadoop構成が設定されている場合にのみ、新しいファイル・システムをその場で作成してアクセスできます。

    <property>
      <name>fs.azure.createRemoteFileSystemDuringInitialization</name>
      <value>true</value>
    </property>
  6. Hadoopシェル・コマンドを使用して接続性を検証します。
    ./bin/hadoop fs -ls /
    ./bin/hadoop fs -mkdir /tmp
  7. HDFSイベント・ハンドラを使用してAzure Data Lakeにデータをプッシュするように、HDFSハンドラまたはファイル・ライター・ハンドラのいずれかを構成します。「フラット・ファイル」を参照してください。ファイル・ライター・ハンドラをHDFSイベント・ハンドラとともに使用することをお薦めします。

    gg.classpathの設定の例を次に示します。

    gg.classpath=/ggwork/hadoop/hadoop-3.3.0/share/hadoop/common/*:/ggwork/hadoop/hadoop-3.3.0/share/hadoop/common/lib/*:/ggwork/hadoop/hadoop-3.3.0/share/hadoop/hdfs/*:
    /ggwork/hadoop/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/ggwork/hadoop/hadoop-3.3.0/etc/hadoop/:/ggwork/hadoop/hadoop-3.3.0/share/hadoop/tools/lib/*

https://hadoop.apache.org/docs/current/hadoop-azure-datalake/index.htmlを参照してください。

8.2.11.3 BLOBエンドポイントを使用するAzure Data Lake Gen2

Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)では、BLOBエンドポイントを使用してADLS Gen2に接続できます。BLOBエンドポイントを使用するGG for DAA ADLS Gen2レプリケーションでは、Hadoopのインストールは必要ありません。詳細は、「Azure Blob Storage」を参照してください。