次の方法で共有


チュートリアル:Azure Data Factory を使用して HDInsight でオンデマンド Apache Hadoop クラスターを作成する

このチュートリアルでは、Azure Data Factory を使用して Azure HDInsight で Apache Hadoop クラスターをオンデマンドで作成する方法について説明します。 次に、Azure Data Factory のデータ パイプラインを使用して Hive ジョブを実行し、クラスターを削除します。 このチュートリアルの終わりまでに、クラスターの作成、ジョブの実行、クラスターの削除がスケジュールに従って実行されるビッグ データ ジョブの実行を operationalize する方法について説明します。

このチュートリアルに含まれるタスクは次のとおりです。

  • Azure のストレージ アカウントの作成
  • Azure Data Factory アクティビティについて
  • Azure portal を使用してデータ ファクトリを作成する
  • リンクされたサービスを作成します
  • パイプラインを作成する
  • パイプラインをトリガーする
  • パイプラインの監視
  • 出力を検証する

Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。

[前提条件]

  • PowerShell Az Module がインストールされています。

  • Microsoft Entra サービス プリンシパル。 サービス プリンシパルを作成したら、リンクされた記事の手順に従って 、アプリケーション ID認証キー を取得してください。 これらの値は、このチュートリアルの後半で必要になります。 また、サービス プリンシパルが、クラスターが作成されるサブスクリプションまたはリソース グループの 共同作成者 ロールのメンバーであることを確認します。 必要な値を取得し、適切なロールを割り当てる手順については、「 Microsoft Entra サービス プリンシパルの作成」を参照してください。

予備的な Azure オブジェクトを作成する

このセクションでは、オンデマンドで作成する HDInsight クラスターに使用されるさまざまなオブジェクトを作成します。 作成されたストレージ アカウントには、クラスターで実行されるサンプルの Apache Hive ジョブをシミュレートするために使用するサンプル HiveQL スクリプト ( partitionweblogs.hql) が含まれます。

このセクションでは、Azure PowerShell スクリプトを使用してストレージ アカウントを作成し、ストレージ アカウント内の必要なファイルをコピーします。 このセクションの Azure PowerShell サンプル スクリプトでは、次のタスクを実行します。

  1. Azure にサインインします。
  2. Azure リソース グループを作成します。
  3. Azure Storage アカウントを作成します。
  4. ストレージ アカウントに BLOB コンテナーを作成します。
  5. Blob コンテナーのサンプル HiveQL スクリプト (partitionweblogs.hql) をコピーします。 サンプル スクリプトは、別のパブリック BLOB コンテナーで既に使用できます。 次の PowerShell スクリプトは、作成した Azure Storage アカウントにこれらのファイルのコピーを作成します。

ストレージ アカウントを作成してファイルをコピーする

Important

スクリプトによって作成される Azure リソース グループと Azure ストレージ アカウントの名前を指定します。 スクリプトによって出力される リソース グループ名ストレージ アカウント名ストレージ アカウント キー を書き留めます。 次のセクションで必要になります。

$resourceGroupName = "<Azure Resource Group Name>"
$storageAccountName = "<Azure Storage Account Name>"
$___location = "East US"

$sourceStorageAccountName = "hditutorialdata"  
$sourceContainerName = "adfv2hiveactivity"

$destStorageAccountName = $storageAccountName
$destContainerName = "adfgetstarted" # don't change this value.

####################################
# Connect to Azure
####################################
#region - Connect to Azure subscription
Write-Host "`nConnecting to your Azure subscription ..." -ForegroundColor Green
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
    Connect-AzAccount
}

# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"

#endregion

####################################
# Create a resource group, storage, and container
####################################

#region - create Azure resources
Write-Host "`nCreating resource group, storage account and blob container ..." -ForegroundColor Green

New-AzResourceGroup `
    -Name $resourceGroupName `
    -Location $___location

New-AzStorageAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $destStorageAccountName `
    -Kind StorageV2 `
    -Location $___location `
    -SkuName Standard_LRS `
    -EnableHttpsTrafficOnly 1

$destStorageAccountKey = (Get-AzStorageAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $destStorageAccountName)[0].Value

$sourceContext = New-AzStorageContext `
    -StorageAccountName $sourceStorageAccountName `
    -Anonymous

$destContext = New-AzStorageContext `
    -StorageAccountName $destStorageAccountName `
    -StorageAccountKey $destStorageAccountKey

New-AzStorageContainer `
    -Name $destContainerName `
    -Context $destContext
#endregion

####################################
# Copy files
####################################
#region - copy files
Write-Host "`nCopying files ..." -ForegroundColor Green

$blobs = Get-AzStorageBlob `
    -Context $sourceContext `
    -Container $sourceContainerName `
    -Blob "hivescripts\hivescript.hql"

$blobs|Start-AzStorageBlobCopy `
    -DestContext $destContext `
    -DestContainer $destContainerName `
    -DestBlob "hivescripts\partitionweblogs.hql"

Write-Host "`nCopied files ..." -ForegroundColor Green
Get-AzStorageBlob `
    -Context $destContext `
    -Container $destContainerName
#endregion

Write-host "`nYou will use the following values:" -ForegroundColor Green
write-host "`nResource group name: $resourceGroupName"
Write-host "Storage Account Name: $destStorageAccountName"
write-host "Storage Account Key: $destStorageAccountKey"

Write-host "`nScript completed" -ForegroundColor Green

ストレージ アカウントを確認する

  1. Azure portal にサインオンします。
  2. 左側から、 すべてのサービス>General>Resource グループに移動します。
  3. PowerShell スクリプトで作成したリソース グループ名を選択します。 表示されているリソース グループが多すぎる場合は、フィルターを使用します。
  4. [概要] ビューには、リソース グループを他のプロジェクトと共有しない限り、1 つのリソースが一覧表示されます。 そのリソースは、前に指定した名前のストレージ アカウントです。 ストレージ アカウント名を選択します。
  5. [ コンテナー ] タイルを選択します。
  6. adfgetstarted コンテナーを選択します。 hivescriptsという名前のフォルダーが表示されます。
  7. フォルダーを開き、サンプル スクリプト ファイル partitionweblogs.hql が含まれていることを確認します。

Azure Data Factory アクティビティについて

Azure Data Factory は、データの移動と変換を調整して自動化します。 Azure Data Factory では、HDInsight Hadoop クラスターを Just-In-Time で作成し、入力データ スライスを処理し、処理が完了したらクラスターを削除できます。

Azure Data Factory では、データ ファクトリに 1 つ以上のデータ パイプラインを含めることができます。 データ パイプラインには、1 つ以上のアクティビティがあります。 アクティビティには次の 2 種類があります。

  • データ移動アクティビティ。 データ移動アクティビティを使用して、ソース データ ストアからコピー先データ ストアにデータを移動します。
  • データ変換アクティビティ。 データ変換アクティビティを使用して、データを変換/処理します。 HDInsight Hive アクティビティは、Data Factory でサポートされている変換アクティビティの 1 つです。 このチュートリアルでは、Hive 変換アクティビティを使用します。

この記事では、オンデマンド HDInsight Hadoop クラスターを作成するように Hive アクティビティを構成します。 アクティビティが実行されてデータが処理されると、次の処理が行われます。

  1. HDInsight Hadoop クラスターは、スライスを処理するためにジャストインタイムで自動的に作成されます。

  2. 入力データは、クラスターで HiveQL スクリプトを実行することによって処理されます。 このチュートリアルでは、Hive アクティビティに関連付けられている HiveQL スクリプトで次のアクションを実行します。

    • 既存のテーブル (hivesampletable) を使用して、別のテーブル HiveSampleOut を作成します。
    • 元の hivesampletable の特定の列のみを HiveSampleOut テーブルに設定します。
  3. HDInsight Hadoop クラスターは、処理の完了後に削除され、クラスターは構成された時間 (timeToLive 設定) の間アイドル状態になります。 この timeToLive アイドル時間で次のデータ スライスを処理できる場合は、スライスの処理に同じクラスターが使用されます。

Data Factory の作成

  1. Azure portal にサインインします。

  2. 左側のメニューから、 + Create a resource>Analytics>Data Factory に移動します。

    ポータル上の Azure Data Factory。

  3. [新しいデータ ファクトリ] タイルに次の値を入力または選択します。

    プロパティ 価値
    名前 データ ファクトリの名前を入力します。 この名前はグローバルに一意である必要があります。
    Version V2 のままにします。
    Subscription Azure のサブスクリプションを選択します。
    リソースグループ PowerShell スクリプトを使用して作成したリソース グループを選択します。
    ロケーション 場所は、先ほどリソース グループを作成するときに指定した場所に自動的に設定されます。 このチュートリアルでは、場所は 米国東部に設定されています。
    GIT を有効にする このボックスをオフにします。

    Azure portal を使用して Azure Data Factory を作成します。

  4. を選択してを作成します。 データ ファクトリの作成には、2 ~ 4 分かかる場合があります。

  5. データ ファクトリが作成されると、[リソースに移動] ボタンを含むデプロイに成功した通知が表示されます。 [ リソースに移動] を 選択して、Data Factory の既定のビューを開きます。

  6. [ 作成] と [監視] を選択して、Azure Data Factory の作成と監視ポータルを起動します。

    Azure Data Factory ポータルの概要。

リンクされたサービスを作成します

このセクションでは、データ ファクトリ内で 2 つのリンクされたサービスを作成します。

  • Azure ストレージ アカウントをデータ ファクトリにリンクする、Azure Storage のリンクされたサービス。 このストレージは、オンデマンドの HDInsight クラスターによって使用されます。 クラスターで実行される Hive スクリプトも含まれています。
  • オンデマンドの HDInsight のリンクされたサービス。 Azure Data Factory によって HDInsight クラスターが自動的に作成され、Hive スクリプトが実行されます。 HDInsight クラスターは、事前に構成された時間だけアイドル状態になったら削除されます。

Azure Storage のリンクされたサービスを作成する

  1. [ 始めましょう ] ページの左側のウィンドウで、[ 作成者 ] アイコンを選択します。

    Azure Data Factory のリンクされたサービスを作成します。

  2. ウィンドウの左下隅から [接続 ] を選択し、[ +新規] を選択します。

    Azure Data Factory で接続を作成します。

  3. [ 新しいリンクされたサービス ] ダイアログ ボックスで、[ Azure Blob Storage ] を選択し、[ 続行] を選択します。

    Data Factory 用の Azure Storage のリンクされたサービスを作成します。

  4. ストレージのリンクされたサービスに次の値を指定します。

    プロパティ 価値
    名前 HDIStorageLinkedService」と入力します。
    Azure サブスクリプション ドロップダウン リストからサブスクリプションを選択します。
    ストレージ アカウント名 PowerShell スクリプトの一部として作成した Azure Storage アカウントを選択します。

    [ 接続のテスト ] を選択し、成功した場合は [ 作成] を選択します。

    Azure Storage のリンクされたサービスの名前を指定します。

オンデマンドの HDInsight のリンクされたサービスを作成する

  1. [+ 新規] ボタンをもう一度選択して、別のリンクされたサービスを作成します。

  2. [ 新しいリンクされたサービス ] ウィンドウで、[ コンピューティング ] タブを選択します。

  3. Azure HDInsight を選択し、[続行] を選択します。

    Azure Data Factory の HDInsight のリンクされたサービスを作成します。

  4. [ 新しいリンクされたサービス ] ウィンドウで、次の値を入力し、残りは既定値のままにします。

    プロパティ 価値
    名前 HDInsightLinkedService」と入力します。
    タイプ オンデマンド HDInsight を選択します。
    Azure Storage のリンクされたサービス [HDIStorageLinkedService] を選択します。
    クラスターの種類 hadoop を選択する
    Time to Live 自動的に削除される前に HDInsight クラスターを使用できるようにする期間を指定します。
    サービス主体 ID 前提条件の一部として作成した Microsoft Entra サービス プリンシパルのアプリケーション ID を指定します。
    サービス主体キー Microsoft Entra サービス プリンシパルの認証キーを指定します。
    クラスター名のプレフィックス データ ファクトリによって作成されたすべてのクラスターの種類にプレフィックスが付く値を指定します。
    Subscription ドロップダウン リストからサブスクリプションを選択します。
    リソース グループの選択 前に使用した PowerShell スクリプトの一部として作成したリソース グループを選択します。
    OS の種類/クラスター SSH ユーザー名 一般的に sshuser SSH ユーザー名を入力します。
    OS の種類/クラスターの SSH パスワード SSH ユーザーのパスワードを指定する
    OS の種類/クラスター ユーザー名 クラスター ユーザー名を入力します(一般的に admin)。
    OS の種類/クラスターのパスワード クラスター ユーザーのパスワードを指定します。

    次に、[ 作成] を選択します。

    HDInsight のリンクされたサービスの値を指定します。

パイプラインを作成する

  1. + (プラス) ボタンを選択し、[パイプライン] を選択します。

    Azure Data Factory でパイプラインを作成します。

  2. [ アクティビティ ] ツールボックス で HDInsight を展開し、 Hive アクティビティをパイプライン デザイナー画面にドラッグします。 [ 全般 ] タブで、アクティビティの名前を指定します。

    Data Factory パイプラインにアクティビティを追加します。

  3. Hive アクティビティが選択されていることを確認し、[ HDI クラスター ] タブを選択します。 HDInsight の [リンクされたサービス ] ドロップダウン リストから、HDInsight 用に先ほど作成 したリンクされたサービス (HDInsightLinkedService) を選択します。

    パイプラインの HDInsight クラスターの詳細を指定します。

  4. [ スクリプト ] タブを選択し、次の手順を実行します。

    1. Script Linked Service で、ドロップダウンリストから HDIStorageLinkedService を選択します。 この値は、先ほど作成したストレージのリンクされたサービスです。

    2. [ファイル パス] で [ストレージの参照] を選択し、サンプル Hive スクリプトが使用可能な場所に移動します。 前に PowerShell スクリプトを実行した場合は、この場所を adfgetstarted/hivescripts/partitionweblogs.hqlする必要があります。

      パイプラインの Hive スクリプトの詳細を指定します。

    3. [ 詳細設定>パラメーター] で、[ Auto-fill from script] を選択します。 このオプションは、実行時に値を必要とする Hive スクリプト内のすべてのパラメーターを検索します。

    4. テキスト ボックスに、wasbs://adfgetstarted@<StorageAccount>.blob.core.windows.net/outputfolder/の形式で既存のフォルダーを追加します。 パスの大文字と小文字は区別されます。 このパスは、スクリプトの出力が格納される場所です。 ストレージ アカウントでセキュリティで保護された転送が既定で有効になっているため、 wasbs スキーマが必要です。

      Hive スクリプトのパラメーターを指定します。

  5. [ 検証 ] を選択してパイプラインを検証します。 >> (右矢印) ボタンを選択して、検証ウィンドウを閉じます。

    Azure Data Factory パイプラインを検証します。

  6. 最後に、[ すべて発行] を選択して、成果物を Azure Data Factory に発行します。

    Azure Data Factory パイプラインを発行します。

パイプラインをトリガーする

  1. デザイナー画面のツール バーから、トリガーの 追加>今すぐトリガーを選択します。

    Azure Data Factory パイプラインをトリガーします。

  2. ポップアップ・サイド・バーで「 OK」を選択します

パイプラインの監視

  1. 左側で [監視] タブに切り替えます。 [Pipeline Runs]\(パイプラインの実行\) の一覧にパイプライン実行が表示されます。 [状態] 列の下の実行の状態に注目してください。

    Azure Data Factory パイプラインを監視します。

  2. [ 最新の情報に更新] を選択して状態を更新します。

  3. [ アクティビティの実行の表示 ] アイコンを選択して、パイプラインに関連付けられているアクティビティの実行を表示することもできます。 次のスクリーンショットでは、作成したパイプラインにアクティビティが 1 つしかないため、アクティビティの実行は 1 つだけ表示されます。 前のビューに戻すには、ページの上部にある [パイプライン ] を選択します。

    Azure Data Factory パイプライン アクティビティを監視します。

出力を検証する

  1. 出力を確認するには、Azure portal で、このチュートリアルで使用したストレージ アカウントに移動します。 次のフォルダーまたはコンテナーが表示されます。

    • パイプラインの一部として実行された Hive スクリプトの出力を含む adfgerstarted/outputfolder が表示されます。

    • adfhdidatafactory-<linked-service-name>-<timestamp> コンテナーが表示されます。 このコンテナーは、パイプライン実行の一部として作成された HDInsight クラスターの既定のストレージ場所です。

    • Azure Data Factory ジョブ ログを含む adfjobs コンテナーが表示されます。

      Azure Data Factory パイプラインの出力を確認します。

リソースをクリーンアップする

オンデマンド HDInsight クラスターの作成では、HDInsight クラスターを明示的に削除する必要はありません。 クラスターは、パイプラインの作成時に指定した構成に基づいて削除されます。 クラスターが削除された後も、クラスターに関連付けられているストレージ アカウントは引き続き存在します。 この動作は、データをそのまま維持できるように設計されています。 ただし、データを保持しない場合は、作成したストレージ アカウントを削除できます。

または、このチュートリアル用に作成したリソース グループ全体を削除することもできます。 このプロセスにより、作成したストレージ アカウントと Azure Data Factory が削除されます。

リソース グループを削除します

  1. Azure portal にサインオンします。

  2. 左側のウィンドウで [リソース グループ ] を選択します。

  3. PowerShell スクリプトで作成したリソース グループ名を選択します。 表示されているリソース グループが多すぎる場合は、フィルターを使用します。 リソース グループを開きます。

  4. [リソース] タイルでは、リソース グループを他のプロジェクトと共有しない限り、既定のストレージ アカウントとデータ ファクトリが一覧表示されます。

  5. [リソース グループの削除] を選択します。 これにより、ストレージ アカウントとストレージ アカウントに格納されているデータが削除されます。

    Azure portal でリソース グループを削除します。

  6. リソース グループ名を入力して削除を確認し、[削除] を選択 します

次のステップ

この記事では、Azure Data Factory を使用してオンデマンド HDInsight クラスターを作成し、Apache Hive ジョブを実行する方法について説明しました。 次の記事に進み、カスタム構成で HDInsight クラスターを作成する方法について説明します。