1.背景 データ管理と分析の世界では、効率的かつ迅速なデータの転送と書き込みは極めて重要です。特に大規模なデータウェアハウスサービスを利用する際には、このプロセスの最適化が不可欠です。Azure Synapse Analyticsは、そのようなサービスの一つとして注目を集めており、SAS Viyaを使用する多くの企業やデータアナリストも、より効率的なデータハンドリングを追求しています。 SAS ViyaのユーザーはSAS/ACCESS to Microsoft SQL Serverを使用してAzure Synapseにデータを転送および書き込む際に、より高いデータ書き込み効率と転送速度を求めるのは当然です。データ処理能力をさらに強化し、書き込み効率を高めるために、SAS Access to SynapseのBulkLoad機能は非常に優れた選択肢です。BulkLoad機能はデータの書き込み速度を大幅に向上させるだけでなく、Azure Data Lake Storage Gen 2(以下、ADLS2と称する)を利用して、安定かつ安全なデータストレージおよび転送環境を提供します。 ただし、BulkLoad機能を使用する際にはADLS2の設定と構成が関わってくるため、構成および使用のプロセスが複雑に感じられたり、疑問が生じたりすることがあります。このブログの目的は、管理者およびユーザーに対して、明確なステップバイステップの設定プロセスを提供し、構成の過程で見落とされがちなキーポイントを強調することで、設定時の参考になるようにすることです。 以下は本記事内容の一覧です。読者は以下のリンクをで興味のあるセクションに直接ジャンプすることができます。 2.Bulkload機能について 3.BULKLOAD機能を利用するためのAzure側で必要なサービスの作成 3-1.Azure Data Lake Storage (ADLS) Gen2のストレージアカウントの作成 3-2.ストレージアカウントのデータストレージコンテナの作成 3-3.ストレージアカウントの利用ユーザー権限の設定 3-4.データ書き込み用のSASコードの実行 3-5.Azureアプリの設定 4.SAS Viya側の設定とAzure Synapseへの接続 4-1.SAS Studioでの設定 4-2.Azure SynapseのSQLデータベースをSASライブラリとして定義 4-3.Azure Synapseへデータの書き込み 2.Bulkload機能について なぜSAS ViyaがBulkload機能を使用してAzure Synapseに効率的にデータを書き込む際にADLS2サービスが必要なのか、そしてそのプロセスがどのように行われるのかを説明します。 Azure Synapse Analyticsは、柔軟性が高く、高いスループットのデータ転送を可能にするために、COPY
Tag: azure
背景の紹介 これまでのSAS製品は、SAS 9でもSAS Viya 3.5でも、ほとんどがWindowsやLinuxのプラットフォームで動作していました。 そのため、Windowsクライアントを持つユーザーは、SMBサービスやWindowsのファイル共有機能を介して、これらのプラットフォームに保存されたファイルに簡単にアクセスすることができていたのです。 SASが開発した最新のクラウドネイティブ・データアナリティクス・プラットフォーム「SAS Viya」は、WindowsやLinuxなどのOS上で直接動作するのではなく、コンテナ/ポッドの形でKubernetes(以下、K8s)上で動作し、従来の製品とはアーキテクチャが大きく変わっています。K8s上で動作するサービスのコンテナ内のデータは一時的なものなので消えてしまう特徴があります。この点に対して、お客様は最新の製品を使用する際に、K8sに保存したデータをローカルのWindowsシステムからどのようにアクセスするのか、SASで作成したレポートなどのデータをどこに保存するのかという疑問を持つことが多いようです。 今回は、下記の図の構造のような、K8sに保存されているファイルを、比較的簡単な方法でWindowsクライアントと共有する方法をご紹介したいと思います。 本記事の内容は、Microsoft Azure上にデプロイされたSAS Viya Stable 2021.2.3に基づいています。centos 7.9上で、kubectl、kustomization、azure cliなどのコマンドラインツールを利用する作業が含まれているので、Linux、Kubernetes、SAS ViyaのデプロイメントとAzureに関する一定の知識が必要です。また、お使いのクラウドベンダーや製品のバージョンによって、設定方法が異なる場合もありますので、詳細は各ドキュメントをご確認ください。 SAS Viya on Kubernetesが利用するストレージの紹介 まず、K8s上にデプロイされたSAS Viyaサービスを使用した場合のデータの保存方法について簡単に説明します。 例えば、SAS Studioを利用する場合、ユーザーがセッションを作成するたびに、SAS ViyaはK8s上に一つのコンテナを作成します。これは、ユーザーがセッションで実行したすべてのコードや操作がこのコンテナに入っているミニLinux内で実行されます。 ご存知のように、コンテナの最大の利点は、インストール作業や設定などが一切いらず、配置したらすぐに使えることです。コンテナが提供するサービスや機能を使用するために設定を行う必要はありませんが、同時に、コンテナ内のデータに加えた変更も保存されず、新しいセッションを作成するたびに、まったく同じ設定を持つまったく新しいコンテナが作成されます。 そのため、SAS Studioで作成した新しいデータを保存したい場合は、コンテナの外部にあるストレージに保存する必要があります。K8sではこの外部ストレージは永続ボリュームと呼びます。 永続ボリュームを利用することにより、SAS Studioのセッションが終了しても、作業中にユーザーが作成した新しいデータはちゃんと保存されています。次にユーザーが新しいセッションを作成する時、以前使用していた永続ボリュームが新しいセッションに自動的にマウントされ、ユーザーが永続ボリュームに保存されていたデータを使って引き続き作業できます。この記事で紹介するデータ共有方法も、こちらの永続ボリュームを利用しています。 データ共有するための設定方法 次に、K8sで作成したファイルをWindowsと共有する方法を紹介します。前述したように、作業中に発生したデータを永続ボリュームに保存することができるので、永続ボリュームをWindowsにマウントするだけで、作業用PCとK8sの間でデータを共有することができますが、実現方法は使用する永続ボリュームの外部ストレージの種類によって異なります。 AzureのK8sサービス上でSAS Viyaを利用する場合、使用する外部ストレージは、大体以下の3種類です。Azure Fileを共有ストレージとして使用する場合、追加のサーバは必要なく、使い方も比較的簡単なので、本記事ではAzure Fileを外部ストレージとして使用する場合の共有方法を紹介します。 - ネットワークファイルシステム(以下NFS) - Azure Disk - Azure File(本記事で紹介する方法) データを共有するためには、次のような手順が必要です。 これらの手順には、AzureとK8sの管理者権限と関連する知識が必要なため、一般的にはサーバ管理者やSAS Viya導入の担当者が行うことになることに注意してください。 1.ストレージクラスの作成 2.永続ボリューム要求の作成
前回のブログでは、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
近年、クラウドベンダーが提供するサービスが充実し、より多くのクラウドサービスが誕生してきました。しかし、一つのニーズに対して、複数のサービスを選択できるようになってきているものの、どのサービスが最適なのかを判断することは逆に難しくなってきていると考えられます。最近、SASを活用しているお客様から、「Microsoft社のAzureを使っていますが、これからクラウドにデータを移行して、安くて使い勝手なストレージサービスは何かありませんか」と聞かれたこともありました。 このブログシリーズでは、クラウド上のストレージサービスの一種であるMicrosoft Azure CloudのBlobストレージサービスの概要を紹介した上で、SAS ViyaからそのBlock Blobストレージに格納されているデータへアクセスする方法をご紹介させていただきます。 このブログシリーズは合計2回です。今回のブログでは、まず特定の一つファイルへのアクセス方法をご紹介します。次回のブログでは、より汎用的なアクセス方法、つまり、Blobストレージを一つのファイルシステムとして、SASサーバと連携し、一度に複数のデータにアクセスする方法をご紹介します。ぜひ最後まで、お付き合いいただければと思います。 第1回:https://blogs.sas.com/content/sasjapan/2020/10/01/sas-azure-blob-1/ 第2回:https://blogs.sas.com/content/sasjapan/2020/10/05/sas-azure-blob-2/ Blobストレージとは何か? まず、Blobストレージとは何かを紹介する前に、Blobって何でしょうか、から始めます。聞きなれない方もいらっしゃるかと思いますので。実際、BlobはBinary Large OBjectの略称です。本来はデータベースで用いられているデータタイプの種類で、メディアファイルや、圧縮ファイル、実行ファイルなどのデータを格納する時に使用されているものです。 では、Blobストレージとは何か?Microsoft社の紹介では、こう書かれています。 「Blob Storage は、テキスト・データやバイナリ・データなどの大量の非構造化データを格納するために最適化されています。非構造化データとは、特定のデータ・モデルや定義に従っていないデータであり、テキスト・データやバイナリ・データなどがあります。」 少し言い換えますと、Blobストレージは、ログファイルから、画像ファイルやビデオ・オーディオファイルまで格納できます。もちろん、通常目的でのデータ利用にも対応しているため、データの格納場所として使っても問題ありません。(Microsoft Azureの資料によりますと、4.75 TiBまで可能です。) なぜBlobストレージなのか 前文で少し申し上げたSASのお客様から頂いた質問の中で、「安くて使い勝手の良いストレージサービスは」と聞かれた事に関して、安いというポイントに関しては、下記の図をご覧ください。 ソース:https://azure.microsoft.com/ja-jp/pricing/details/storage/(2020/09/09アクセス時点) ご覧のように、ブロックBlobのストレージサービスは、安価で、かつ非構造化データに対応し、一般目的でのデータストレージとして、非常に向いています。 もちろん、ビジネスケースによっては、様々考慮すべき点(既存環境にHadoop環境があるかどうか、スループット、ビッグデータ等々)もありますが、今回は、主にこのブロックBlobストレージを例として紹介します。 SAS ViyaからBlobストレージにアクセスする方法 ここからは、SAS ViyaからBlobストレージにアクセスする方法をご紹介します。下記の方法を使うために、前提条件として、SAS ViyaサーバとBlobストレージがあるAzure間でネットワーク通信ができる必要がありますので、ネットワークセキュリティ条件を確認してから、下記の方法をお試しください。 方法①: SASのPROC HTTPプロシージャを使って、Blobストレージ内の特定の一つのデータにアクセスする方法。 Microsoft Azure側: 1.まず、Azureポータルに入り、「すべてのリソース」をクリックします。(図1-1) 図1-1 2.その配下で、利用されているストレージアカウントをクリックします。(図1-2) 図1-2 3.次に、表示された左側のメニューの中で、「Blob Service」配下のコンテナーをクリックします。(図1-3) 図1-3 *豆知識: ここで、いきなりコンテナーが出てくることに関して、混乱している方もいらっしゃるかもしれないので、少し解説します。こちらのコンテナーとは、Dockerコンテナーの意味ではありません。Blobストレージサービス配下のデータ格納用のサブ階層のことであり、フォルダーのようなものとイメージしてください。(図1-4) 図1-4 4.上記図1-3のように、その中に一つ「folderfirst」というコンテナーが存在しており、それをクリックすると、中に保管されているデータが見えるようになります。(図1-5) 図1-5 5.ここからが重要なポイントです。特定のデータ、例えば、「sas7bdat」データにSAS Viyaからアクセスしたい場合は、該当ファイルの名前をクリックして、下記のようなプロパティ情報を表示させます。(図1-6) 図1-6