LoginSignup
1
0

More than 3 years have passed since last update.

Azure Managed Identityを利用してAzure Data Lake Gen2にhdfsコマンドからアクセスする

Last updated at Posted at 2019-09-08

動機

  • azureのVM上から 使い慣れたhdfsクライアントコマンドを使って azure data lake gen2 にアクセスしたい。
  • data lake のIDとパスワードはazureVM上に保管したくない。

参考サイト

https://iwasakims.github.io/trunk/hadoop-project/hadoop-azure/abfs.html
https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/overview
https://stackoverflow.com/questions/54155248/for-an-azure-app-service-with-a-managed-identity-how-to-retrieve-the-client-id

作戦

VMの managed identityを有効にすると、あたかもユーザーと同じようにVMにロールを割り当てることができる。

手順

VMの設定

Managed Identityの設定

  • ここではUbuntu18.04のVMを立てた。名前をbizvm1とした。
  • identity > system assigned から Status をON にする。 スクリーンショット 2019-09-08 23.22.09.png
  • bizvmにsshしてログイン

hdfsコマンドのダウンロード

vmの中に入って作業

  • ここからhadoop 3.2.0(バージョン注意!!!) コマンドのバイナリをダウンロードして展開 https://hadoop.apache.org/releases.html
    • /YOUR/DOWNLOAD/PATHに展開したとする。
  • Java8のインストール sudo apt install openjdk-8-jre-headless
  • 環境変数の設定 以下を~/.bash_profileに付け足す
export PATH=$PATH:/YOUR/DOWNLOAD/PATH/hadoop-3.2.0/bin
export JAVA_HOME=/usr
export HADOOP_OPTIONAL_TOOLS=hadoop-azure
export HADOOP_HOME=/YOUR/DOWNLOAD/PATH/hadoop-3.2.0

特にexport HADOOP_OPTIONAL_TOOLS=hadoop-azureを忘れると動かない。

data lake gen2の設定

  • azure data lake gen2のStorageAccountを建てる。名前をshumpeidatalakegen2とした。作るときにhieralhical name spaceをONにすること。
  • storageのAccessControl > Add > Add role assignmentを選択
    • Role: Storage Blob DataOwner
    • Assign access to: virtual machine
    • Subscription: VMの入っているサブスクリプション
    • select: さっき作ったVMの名前を入れると候補が出てくるのでクリック

スクリーンショット 2019-09-08 23.40.58.png

Active Directoryから設定値の取得

TenanatIDの取得

AzureActiveDirectory > Properties > DirectoryIDを控える。これがTenantIDと呼ばれるものらしい。

スクリーンショット 2019-09-08 23.58.40.png

Application IDの取得

さっき作ったVMのApplicationIDを取得する。

AzureActiveDirectory > Enterprise application > 右上のApplicationTypeをAllApplicationを選択(ここ重要!!) > さっき作ったVMの名前 > Properties > ApplicationIDを控える

スクリーンショット 2019-09-08 23.37.44.png

スクリーンショット 2019-09-08 23.37.59.png

hdfsコマンドの設定

ここでまたVMにログインして設定

$HADOOP_HOME/etc/hadoop/core-site.xmlに以下を記入

<configuration>
<property>
  <name>fs.azure.account.auth.type</name>
  <value>OAuth</value>
  <description>
  Use OAuth authentication
  </description>
</property>
<property>
  <name>fs.azure.account.oauth.provider.type</name>
  <value>org.apache.hadoop.fs.azurebfs.oauth2.MsiTokenProvider</value>
  <description>
  Use MSI for issuing OAuth tokens
  </description>
</property>
<property>
  <name>fs.azure.account.oauth2.msi.tenant</name>
  <value>さっき控えたTenantIDの値</value>
  <description>
  Optional MSI Tenant ID
  </description>
</property>
<property>
  <name>fs.azure.account.oauth2.client.id</name>
  <value>さっき控えたApplicationID</value>
  <description>
  Optional Client ID
  </description>
</property>
</configuration>

これでやっと準備が整った

HDFSコマンド実行

hdfs dfs -ls abfss://testfilesystem@shumpeidatalakegen2.dfs.core.windows.net/

できたー。長かった。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0