你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
可以通过以下方式安装 Azure 数据资源管理器 Kusto 仿真器:
- 在自己的设备上:如果需要预配本地开发环境,请考虑使用此选项
- 在 CI/CD 代理虚拟机(VM)上:如果需要 CI/CD 管道来运行自动测试,请使用此选项
模拟器以 Linux 和 Windows Docker 容器映像的形式提供。
在这篇文章中,你将学会如何:
本文重点介绍如何在 Windows 客户端上安装 Linux Docker 容器。
先决条件
主机操作系统必须是以下系统之一:
- Windows Server 2022
- Windows Server 2019 版本 10.0.17763.2928 或更高版本
- Windows 11
- 支持适用于 Linux 的 Docker 客户端的任何 Linux 发行版
至少 2 千兆字节 (GB) RAM;建议至少使用 4 GB
安装 Kusto 仿真器
以下步骤适合通过 shell 使用 Kusto 模拟器容器映像来启动模拟器。 有关其他选项,请参阅运行仿真器选项。
运行以下命令以启动仿真器。
重要
Kusto 仿真器容器映像是 Microsoft 软件许可条款下的免费产品/服务。 由于模拟器在容器中运行,您必须通过将
ACCEPT_EULA
环境变量传递给容器并将其值设置为Y
来接受许可条款。注意
- 首次运行此命令时,Docker 会拉取大小为多个 GB 的容器映像,可能需要几分钟才能下载。 下载后,映像将缓存起来用于后续运行,无需再次下载。
若要启动 Linux 容器,请确保使用
latest
或stable
标记: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-linux:latest 是否显示在列表中。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a8b51bce21ad mcr.microsoft.com/azuredataexplorer/kustainer-linux:latest "powershell -Command¦" 11 minutes ago Up 10 minutes 0.0.0.0:8080->8080/tcp contoso
运行以下命令,验证 Kusto 仿真器是否正在运行。 此命令适用于 PowerShell,在 Linux 环境中可以使用
curl
执行类似的操作。 该命令针对管理 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”装载到容器中的文件夹“/kustodatadata”,请使用 Windows Server 上的以下命令:
docker run -v d:\host\local:/kustodata -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer-linux: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-linux:latest
连接模拟器
可以使用以下任意工具连接到仿真器并与之交互:
在以下部分中,使用 Kusto.Explorer 创建数据库、引入数据并对其进行查询。 若要了解详细信息,请参阅使用 Kusto.Explorer。
重要
Kusto 仿真器不支持 HTTPS 或 Microsoft Entra 身份验证。
必须首先在“工具”“选项”>“连接”“允许不安全连接”中允许不安全连接。>>
下图突出显示“添加连接”属性中受影响的字段。
- “群集连接”必须以 开头,而不是以
http://
开头。 - 在 “安全>高级:连接字符串”中,需要删除
AAD Federated Security=True
连接字符串部分以禁用Microsoft Entra 身份验证。
创建数据库
若要存储数据和运行查询,请创建数据库或将模拟器附加到现有数据库。
数据库可以保留在容器文件夹或装载的文件夹中。 前者的生存期已绑定到容器,因此重启容器会丢失所有更改。 此外,容器虚拟存储的效率低于本机存储。 装载的文件夹使你能够在容器运行之间保留数据。
在此示例中,我们将数据保留在容器上。
在 Kusto.Explorer 查询模式下,运行以下命令以创建持久性数据库:
.create database <YourDatabaseName> persist (
@"/kustodata/dbs/<YourDatabaseName>/md",
@"/kustodata/dbs/<YourDatabaseName>/data"
)
为了防止覆盖现有信息,此命令要求文件夹尚不存在。 若要附加到现有数据库,请改用以下命令,指定以 md
结尾的路径:
.attach database <YourDatabaseName> from @"<PathToMdFolder>"
还可以从模拟器中分离数据库,这将保留所有数据库元数据和数据不变,以便将来可以重新附加到该数据库:
.detach database <YourDatabaseName>
引入数据
若要引入数据,必须先创建链接到文件的外部表,然后将数据引入数据库中的表。
使用以下示例中的步骤创建外部表并将数据引入其中。 作为示例的一部分,请使用以下数据在本地文件夹 sample.csv
中创建一个调用的文件:
Alice, 1
Bob, 2
Carl, 3
运行以下命令,以创建一个表来接收数据:
.create table MyIngestedSample(Name:string, Id:int)
运行以下命令,将文件引入表中:
.ingest into table MyIngestedSample(@"/kustodata/sample.csv")
查询数据
可以使用以下查询查看表中的数据:
MyIngestedSample
| summarize sum(Id), avg(Id)
停止容器
可以通过运行以下命令来停止容器,以获取容器 ID:
docker ps
使用容器 ID 运行以下命令:
docker stop <containerID>