Azure Data Explorer Kusto エミュレーターをインストールする
Azure Data Explorer Kusto エミュレーターは、次の方法でインストールできます。
- 独自のデバイス: ローカル開発環境をプロビジョニングする必要がある場合は、このオプションの使用を検討してください
- CI/CD エージェント仮想マシン (VM): 自動テストを実行するために CI/CD パイプラインが必要な場合は、このオプションを使用します
エミュレーターは、 Windows または Linux Docker コンテナー イメージとして使用できます。
この記事では、次の方法について学習します。
前提条件
ホスト オペレーティング システムは、次のいずれかである必要があります。
Windows Server 2022
Windows Server 2019 バージョン 10.0.17763.2928 以降
Windows 11
Docker Client for Linux をサポートする Linux ディストリビューション
重要
Linux ディストリビューションでは、Linux コンテナー イメージのみがサポートされます。
最小 2 ギガバイト (GB) の RAM。4 GB 以上を使用することをお勧めします
Kusto エミュレーターをインストールする
次の手順は、PowerShell を使用して Kusto エミュレーター コンテナー イメージを使用してエミュレーターを起動するための手順です。 その他のオプションについては、「 エミュレーター オプションを実行する」を参照してください。
Windows の場合のみ、Windows コンテナーで実行するように Docker を切り替えます。 Docker 設定でこの機能を有効にする必要がある場合があります。
次のコマンドを実行してエミュレーターを起動します。
重要
Kusto エミュレーター コンテナー イメージは、 Microsoft ソフトウェア ライセンス条項に基づく無料のオファリングです。 エミュレーターはコンテナーで実行されるため、環境変数を コンテナーに渡
ACCEPT_EULA
し、その値を を 示す値に設定して、ライセンス条項に同意するY
必要があります。注意
- このコマンドを初めて実行すると、Docker はサイズが数 GB のコンテナー イメージをプルし、ダウンロードに数分かかる場合があります。 ダウンロードされると、イメージはキャッシュされ、再度ダウンロードしなくても後続の実行に使用できます。
- (Windows コンテナーの場合のみ)コンテナーはプロセス分離モードで実行する必要があります。 これは、一部のバージョンの Docker の既定値です。 他のバージョンの場合は、run コマンドに を追加
--isolation=hyperv
することで、Hyper-V 分離モードでコンテナーを開始できます。
Windows Server オペレーティング システムで Windows コンテナーを起動するには、 または
stable
タグをlatest
使用していることを確認します。docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:latest
Windows 11で Windows コンテナーを起動するには、 タグを
windows11
使用していることを確認します。docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:windows11
Linux コンテナーを起動するには:
docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer-linux:latest
次のコマンドを実行して、コンテナーが実行されていることを確認します。
docker ps
コマンドは、実行中のコンテナー インスタンスの一覧を返します。 エミュレーター イメージ mcr.microsoft.com/azuredataexplorer/kustainer:latest が一覧に表示されることを確認します。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a8b51bce21ad mcr.microsoft.com/azuredataexplorer/kustainer:latest "powershell -Command¦" 11 minutes ago Up 10 minutes 0.0.0.0:8080->8080/tcp contoso
次のコマンドを実行して、Kusto エミュレーターが実行されていることを確認します。 このコマンドは、管理 API に
.show cluster
対してクエリを実行し、値 200 の StatusCode を返す必要があります。Invoke-WebRequest -Method post -ContentType 'application/json' -Body '{"csl":".show cluster"}' http://localhost:8080/v1/rest/mgmt
コマンドは次のように返されます。
StatusCode : 200 StatusDescription : OK Content : {"Tables":[{"TableName":"Table_0","Columns":[{"ColumnName":"NodeId","DataType":"String","ColumnType":"string"},{"ColumnName":"Address","DataType":"St ring","ColumnType":"string"},{"ColumnName":"Name","... RawContent : HTTP/1.1 200 OK Transfer-Encoding: chunked x-ms-client-request-id: unspecified;d239f3aa-7df0-4e46-af0a-edd7139d0511 x-ms-activity-id: a0ac8941-7e4c-4176-98fa-b7ebe14fae90 Content-Type: application... Forms : {} Headers : {[Transfer-Encoding, chunked], [x-ms-client-request-id, unspecified;d239f3aa-7df0-4e46-af0a-edd7139d0511], [x-ms-activity-id, a0ac8941-7e4c-4176-98fa-b7ebe14fae90], [Content-Type, application/json]...} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 988
エミュレーター オプションを実行する
エミュレーターを実行するときは、次のいずれかのオプションを使用できます。
コンテナーにローカル フォルダーをマウントする: ホスト環境のフォルダーをコンテナーにマウントするには、このオプションを使用します。 ホスト フォルダーをマウントすると、クエリでローカル ファイルを操作できます。これは、コンテナーの実行とデータの取り込みの間に永続的なデータベースを作成するのに役立ちます。
たとえば、ホスト上のフォルダー "D:\host\local" をコンテナー内のフォルダー "c:\kustodatadata" にマウントするには、Windows Server で次のコマンドを使用します。
docker run -v d:\host\local:c:\kustodata -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:latest
別のポートで実行する: Kusto エミュレーターは、ポート 8080 の Kusto クエリ エンジンへのアクセスを公開します。そのため、他の例では、ホスト ポート 8080 をエミュレーター ポート 8080 にマップしました。 このオプションを使用すると、別のホストをエンジンにマップできます。
たとえば、ホスト上のポート 9000 をエンジンにマップするには、Windows Server で次のコマンドを使用します。
docker run -e ACCEPT_EULA=Y -m 4G -d -p 9000:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer:latest
エミュレーターに接続する
次のいずれかのツールを使用して、エミュレーターに接続して操作できます。
次のセクションでは、Kusto を使用します。データベースの作成、データの取り込み、クエリの実行をエクスプローラーします。 詳細については、「Kusto.エクスプローラー の使用」を参照してください。
重要
Kusto Emulator では、HTTPS またはMicrosoft Entra認証はサポートされていません。
最初に、[ツール>] [オプション][接続] [安全でない接続を許可する]>> で安全でない接続を許可する必要があります。
次の図では、[ 接続の追加] プロパティの影響を受けるフィールドが強調表示されています。
-
クラスター接続は、 ではなく
https://
でhttp://
始まる必要があります。 -
[セキュリティ>の詳細設定: 接続文字列] で、Microsoft Entra認証を
AAD Federated Security=True
無効にするには、接続文字列の部分を削除する必要があります。
データベースを作成する
データを格納してクエリを実行するには、データベースを作成するか、エミュレーターを既存のデータベースにアタッチします。
データベースは、コンテナー フォルダーまたは マウントされたフォルダーに保存できます。 前者の有効期間はコンテナーにバインドされているため、コンテナーを再起動すると変更は失われます。 また、コンテナー仮想ストレージは、ネイティブストレージよりも効率が低くなります。 マウントされたフォルダーを使用すると、コンテナーの実行間でデータを保持できます。
この例では、データをコンテナーに保持します。
Kusto.エクスプローラークエリ モードで、次のコマンドを実行して、Windows コンテナー イメージを使用する場合は永続的なデータベースを作成します。
.create database <YourDatabaseName> persist (
@"c:\kustodata\dbs\<YourDatabaseName>\md",
@"c:\kustodata\dbs\<YourDatabaseName>\data"
)
Linux コンテナー イメージの同等のコマンドは次のとおりです。
.create database <YourDatabaseName> persist (
@"/kustodata/dbs/<YourDatabaseName>/md",
@"/kustodata/dbs/<YourDatabaseName>/data"
)
このコマンドでは、既存の情報を過剰に書き込むのを防ぐために、フォルダーがまだ存在していない必要があります。 既存のデータベースにアタッチするには、代わりに次のコマンドを使用して、 で md
終わるパスを指定します。
.attach database <YourDatabaseName> from @"<PathToMdFolder>"
エミュレーターからデータベースをデタッチすることもできます。これにより、すべてのデータベース メタデータとデータはそのまま保持されます (将来、再アタッチできます)。
.detach database <YourDatabaseName>
データの取り込み
データを取り込むには、まずファイルにリンクされた外部テーブルを作成してから、データベース内のテーブルにデータを取り込む必要があります。
次の例の手順を使用して、外部テーブルを作成し、そのテーブルにデータを取り込みます。 この例では、ローカル フォルダー c:\kustodata に、次のデータを含む という sample.csv
ファイルを作成します。
Alice, 1
Bob, 2
Carl, 3
次のコマンドを実行して、データを受信する テーブルを作成 します。
.create table MyIngestedSample(Name:string, Id:int)
次のコマンドを実行して 、ファイルをテーブルに取り込みます。
.ingest into table MyIngestedSample(@"c:\kustodata\sample.csv")
クエリ データ
次のクエリを使用して、テーブル内のデータを表示できます。
MyIngestedSample
| summarize sum(Id), avg(Id)
コンテナーの停止
コンテナー ID を取得するには、次のコマンドを実行してコンテナーを停止できます。
docker ps
コンテナー ID で次のコマンドを実行します。
docker stop <containerID>