前回のブログでは、Microsoft AzureストレージサービスのブロックBlobストレージについて軽く紹介し、SASからBlobストレージ中の特定の一つのファイルにアクセスする方法を紹介しました。
第1回リンク:https://blogs.sas.com/content/sasjapan/2020/10/01/sas-azure-blob-1/
しかし、実際のビジネスシーンでは、特定の一つのファイルにだけアクセスする運用はやはり割合的には少ないと考えています。
そこで、今回のブログでは、より効率的に、複数データに同時にアクセスできる方法を紹介します。そしてこれは、Microsoft AzureのBlobストレージをファイルシステムとしてSASサーバにマウントし、SASサーバから便利にアクセスする方法です。
前回と同じように、下記の方法を使うためには、前提条件として、SAS ViyaサーバとBlobストレージがあるAzure間でネットワーク通信ができる必要がありますので、ネットワークセキュリティ条件を確認してから、下記の方法をお試しください。
方法②:
BlobストレージをファイルシステムとしてSASサーバにマウントし、SASサーバからアクセスする方法。
Microsoft Azure側:
1.まず、Azureポータルに入り、「ストレージアカウント」をクリックします。(図2-1)
図2-1
2.その配下で、使用されている対象Blob用のストレージアカウントをクリックします。(図2-2)
図2-2
3.そして、表示された左ペインの中で、「アクセスキー」というメニューをクリックします。(図2-3)
図2-3
4.該当ページでは、このストレージアカウントにアクセスするためのキーの情報が含まれているので、その中の、「ストレージアカウント名」と「キー」をメモしてください。あとで接続設定情報を作る時に使用します。(図2-4)
図2-4
5.一層上に戻り、同じくストレージアカウントの左ペインで、Blobサービスの中の「コンテナー」をクリックします。(図2-5)アクセス先のコンテナー名前(例:folderfirst)をメモしてください。あとで接続設定情報を作る時に使用します。
図2-5
以上で、Azure側の準備作業が終わります。次は、SASサーバ側の準備作業を進めていきます。
SAS Viyaサーバ側:
今回、Blobストレージをファイルシステムとしてマウントするには、Blobfuseという仮想ファイルシステムドライバー機能を使います。そのため、事前にSAS ViyaがインストールされているLinuxサーバ側に、そのツールをインストールする必要があります。
このブログで使用しているSAS ViyaサーバはRHEL/CentOS 7.x系のLinuxサーバであるため、Blobfuseのインストールを含めた手順は下記となります。
6.使用するSASユーザで、SASサーバ側にMicrosoftパッケージリポジトリをインストールします。
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
7.BlobfuseをSASサーバ側にインストールします。
sudo yum install blobfuse
8.Azureでは、低いレイテンシーとパフォーマンスのため、SSDが提供され、今回はそれを使って、ディレクトリーを作成します。(SSD使わないことも可能ですので、その場合、別ディレクトリーで作成して頂いてかまいません。)
sudo mkdir /mnt/resource/blobfusetmp -p sudo chown #YourUserName#:sas /mnt/resource/blobfusetmp
9.次は、ストレージアカウントにアクセスするためのアカウント情報のコンフィグファイルを作ります。
touch ~/fuse_connection.cfg
10.このコンフィグを編集し、下記の情報を書き込みます。先ほどAzure側の設定でメモした情報を使用します。記入できたら、保存してください。
vi ~/fuse_connection.cfg accountName #myaccount# #ストレージアカウント名# accountKey #storageaccesskey# #ストレージアカウントのキー# containerName #mycontainer# #接続する先のBlobストレージコンテナ名#
*豆知識:
①BlobfuseのUbuntu、Debian系のLinuxインストール方法はこちらにご参照ください。リンク:
https://docs.microsoft.com/ja-jp/azure/storage/blobs/storage-how-to-mount-container-linux
②viコマンドについて
https://prev.net-newbie.com/linux/commands/vi.html
11.コンフィグファイルの編集が完了したら、該当ファイルのパーミッションを変更します。
sudo chmod 600 fuse_connection.cfg
*豆知識:Linuxパーミッションで、600の意味としては、今使用されているユーザが該当ファイルに対して、「rw」読み取り(read)と書き込み(write)ができるという意味です。Linux初心者はご自身で調べてみてください。
12.次に、空きディレクトリーを新規作成します。Blobストレージマウントポイントとして使われます。同時に、ユーザ権限とグループも先ほどのステップ8と同じく修正します。
sudo mkdir /myblobstorage sudo chown #YourUserName#:sas /myblobstorage
13.上記コマンドと準備が完了したら、マウント操作をします。
(注意:#でコメントアウトしている部分はご自身のパスに変更してください。またもし前文と違ったディレクトリーを使用してblobfuseをセットアップした場合、ご自身のパスに変更してください。) sudo blobfuse /myblobstorage --tmp-path=/mnt/resource/blobfusetmp --config-file=/home/#YourUserName#/fuse_connection.cfg -o allow_other -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120
*豆知識:ここでの各オプションに関してはこちらが参考になります。必要に応じて、使用してみてください。リンク:
https://github.com/Azure/azure-storage-fuse#mount-options
以上ここまでのステップが正常に完了すれば、Blobストレージはファイルシステムとして、SASサーバにマウントされます。(下記図2-13-1と2のように。)
図2-13-1
図2-13-2
SAS ViyaでSAS Studioを使って、データにアクセス
ここからは、SAS ViyaのSAS Studioを使用した操作になります。先ほど作ったBlobストレージのファイルシステムをSAS BaseエンジンのライブラリとCASエンジンのCASライブラリとして扱う方法をそれぞれ紹介します。
Baseライブラリ:
14.通常のライブラリアサインと同じく、下記のコードでデータをロードすれば可能です。
libname blob "/myblobstorage"; data work.telco; set blob.telco_03_3m; run;
上記コードを実行すると、blobストレージ内のSASデータセットがロードされ、処理可能になります。(図2-14)
図2-14
CASライブラリ:
15.今回指定パスのディレクトリーをCASLIBとしてアサインするので、casへのデータロードが必要で、PROC CASを使います。その後、普通のCAS処理と同じく、data stepを活用してみました。
caslib blob datasource=(srctype="path") path="/myblobstorage"; proc cas; table.loadtable /path="telco_03_3m.sas7bdat" casOut={name="telco03"}; run; libname mycas cas caslib=blob; data mycas.telco; set mycas.telco03; run;
上記コードを実行すると、CASLIBとして、Blobストレージ内のSASデータセットが使えるようになります。(図2-15)
図2-15
いかがでしょうか。意外と便利ですよね。
以上のように、SASサーバからMicrosoft AzureのBlobストレージにアクセスし、その中のSASデータセットに対して処理を行う方法を前回と今回のブログで紹介しました。
これから、SASとMicrosoft社の連携について、また紹介していきますので、SASが提供しているクラウドサービスにご興味のある方は、ぜひこちらのページもご覧ください。
SAS+Microsoft
https://www.sas.com/ja_jp/solutions/cloud-computing/on-your-cloud/microsoft-azure.html
SAS Cloud(SaaS、Managed Application Services、Consulting Services)
https://www.sas.com/ja_jp/solutions/cloud-computing/cloud-analytics.html
参考:
PROC HTTP
Blob Service REST API
https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-rest-api
PROC CAS