你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

安装 Azure 数据资源管理器 Kusto 仿真器

可以通过以下方式安装 Azure 数据资源管理器 Kusto 仿真器:

  • 在自己的设备上:如果需要预配本地开发环境,请考虑使用此选项
  • 在 CI/CD 代理虚拟机(VM)上:如果需要 CI/CD 管道来运行自动测试,请使用此选项

模拟器以 LinuxWindows Docker 容器映像的形式提供。

在这篇文章中,你将学会如何:

本文重点介绍如何在 Windows 客户端上安装 Linux Docker 容器。

先决条件

  • 主机操作系统必须是以下系统之一:

    • Windows Server 2022
    • Windows Server 2019 版本 10.0.17763.2928 或更高版本
    • Windows 11
    • 支持适用于 Linux 的 Docker 客户端的任何 Linux 发行版
  • 至少 2 千兆字节 (GB) RAM;建议至少使用 4 GB

  • 适用于 WindowsLinux 的 Docker 客户端

安装 Kusto 仿真器

以下步骤适合通过 shell 使用 Kusto 模拟器容器映像来启动模拟器。 有关其他选项,请参阅运行仿真器选项

  1. 运行以下命令以启动仿真器。

    重要

    Kusto 仿真器容器映像是 Microsoft 软件许可条款下的免费产品/服务。 由于模拟器在容器中运行,您必须通过将ACCEPT_EULA环境变量传递给容器并将其值设置为Y来接受许可条款。

    注意

    • 首次运行此命令时,Docker 会拉取大小为多个 GB 的容器映像,可能需要几分钟才能下载。 下载后,映像将缓存起来用于后续运行,无需再次下载。
  2. 若要启动 Linux 容器,请确保使用 lateststable 标记:

    docker run -e ACCEPT_EULA=Y -m 4G -d -p 8080:8080 -t mcr.microsoft.com/azuredataexplorer/kustainer-linux:latest
    
  3. 运行以下命令,验证容器是否正在运行。

    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
    
  4. 运行以下命令,验证 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 身份验证。

必须首先在“工具”“选项”>“连接”“允许不安全连接”中允许不安全连接。>>

Kusto Explorer 连接选项的屏幕截图。

下图突出显示“添加连接”属性中受影响的字段。

  • “群集连接”必须以 开头,而不是以 http:// 开头。
  • “安全>高级:连接字符串”中,需要删除 AAD Federated Security=True 连接字符串部分以禁用Microsoft Entra 身份验证。

Kusto Explorer 单连接设置的屏幕截图。

创建数据库

若要存储数据和运行查询,请创建数据库或将模拟器附加到现有数据库。

数据库可以保留在容器文件夹或装载的文件夹中。 前者的生存期已绑定到容器,因此重启容器会丢失所有更改。 此外,容器虚拟存储的效率低于本机存储。 装载的文件夹使你能够在容器运行之间保留数据。

在此示例中,我们将数据保留在容器上。

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
  1. 运行以下命令,以创建一个表来接收数据:

    .create table MyIngestedSample(Name:string, Id:int)
    
  2. 运行以下命令,将文件引入表中

    .ingest into table MyIngestedSample(@"/kustodata/sample.csv")
    

查询数据

可以使用以下查询查看表中的数据:

MyIngestedSample
| summarize sum(Id), avg(Id)

停止容器

  1. 可以通过运行以下命令来停止容器,以获取容器 ID:

    docker ps
    
  2. 使用容器 ID 运行以下命令:

    docker stop <containerID>