跳转到主要内容

本地快速入门

本快速入门指南旨在帮助您安装 Apache Druid,并带您了解 Druid 的数据摄入和查询功能。进行本教程,您需要一台至少拥有 6 GiB RAM 的机器。

在本快速入门中,您将:

  • 安装 Druid
  • 启动 Druid 服务
  • 使用 SQL 摄入并查询数据

Druid 支持多种摄入选项。完成本教程后,请参考 摄入 (Ingestion) 页面,以确定哪种摄入方法最适合您。

先决条件

您可以在配置相对一般的机器上按照这些步骤操作,例如拥有 6 GiB RAM 的工作站或虚拟服务器。

安装机器的软件要求如下:

  • Linux、Mac OS X 或其他类 Unix 操作系统。(不支持 Windows)
  • Java 17
  • Python 3
  • Perl 5

必须安装 Java。您可以将其添加到系统路径中,或者设置 JAVA_HOMEDRUID_JAVA_HOME 环境变量之一。您可以运行 apache-druid-37.0.0/bin/verify-java 来验证当前环境是否满足 Java 要求。

在安装生产环境的 Druid 实例之前,请务必查看 安全概述。通常情况下,请避免以 root 用户身份运行 Druid。建议创建一个专用的用户账户来运行 Druid。

安装 Druid

从 Apache Druid 下载 37.0.0 版本

在终端中,解压文件并进入发布目录:

tar -xzf apache-druid-37.0.0-bin.tar.gz
cd apache-druid-37.0.0

该发布目录包含 LICENSENOTICE 文件,以及用于存放可执行文件、配置文件、示例数据等的子目录。

启动 Druid 服务

使用自动单机配置启动 Druid 服务。此配置包含适用于本教程的默认设置,例如默认加载 druid-multi-stage-query 扩展,以便您可以使用 MSQ 任务引擎。

您可以在 conf/druid/auto 目录下的配置文件中查看默认设置。

apache-druid-37.0.0 包根目录下,运行以下命令:

./bin/start-druid

这将启动 ZooKeeper 实例和 Druid 服务。例如:

$ ./bin/start-druid
[Tue Nov 29 16:31:06 2022] Starting Apache Druid.
[Tue Nov 29 16:31:06 2022] Open https://:8888/ in your browser to access the web console.
[Tue Nov 29 16:31:06 2022] Or, if you have enabled TLS, use https on port 9088.
[Tue Nov 29 16:31:06 2022] Starting services with log directory [/apache-druid-37.0.0/log].
[Tue Nov 29 16:31:06 2022] Running command[zk]: bin/run-zk conf
[Tue Nov 29 16:31:06 2022] Running command[broker]: bin/run-druid broker /apache-druid-37.0.0/conf/druid/single-server/quickstart '-Xms1187m -Xmx1187m -XX:MaxDirectMemorySize=791m'
[Tue Nov 29 16:31:06 2022] Running command[router]: bin/run-druid router /apache-druid-37.0.0/conf/druid/single-server/quickstart '-Xms128m -Xmx128m'
[Tue Nov 29 16:31:06 2022] Running command[coordinator-overlord]: bin/run-druid coordinator-overlord /apache-druid-37.0.0/conf/druid/single-server/quickstart '-Xms1290m -Xmx1290m'
[Tue Nov 29 16:31:06 2022] Running command[historical]: bin/run-druid historical /apache-druid-37.0.0/conf/druid/single-server/quickstart '-Xms1376m -Xmx1376m -XX:MaxDirectMemorySize=2064m'
[Tue Nov 29 16:31:06 2022] Running command[middleManager]: bin/run-druid middleManager /apache-druid-37.0.0/conf/druid/single-server/quickstart '-Xms64m -Xmx64m' '-Ddruid.worker.capacity=2 -Ddruid.indexer.runner.javaOptsArray=["-server","-Duser.timezone=UTC","-Dfile.encoding=UTF-8","-XX:+ExitOnOutOfMemoryError","-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager","-Xms256m","-Xmx256m","-XX:MaxDirectMemorySize=256m"]'

Druid 最多可能使用总可用系统内存的 80%。要明确设置 Druid 的总可用内存,可以传入 memory 参数值。例如,./bin/start-druid -m 16g

Druid 将所有持久状态数据(例如集群元数据存储和数据分片)存储在 apache-druid-37.0.0/var 中。每个服务都会将其日志写入 apache-druid-37.0.0/log 下的日志文件中。

您可以随时通过删除整个 var 目录,将 Druid 恢复到安装后的原始状态。例如,在进行不同的 Druid 教程之间或实验之后,您可能希望这样做以获得一个全新的实例。

要随时停止 Druid,请在终端中使用 CTRL+C。这将退出 bin/start-druid 脚本并终止所有 Druid 进程。

打开 Web 控制台

启动 Druid 服务后,通过 https://:8888 打开 Web 控制台

web console

所有 Druid 服务(包括负责提供控制台服务的 Druid 路由器)完成启动可能需要几秒钟。如果您在启动完成前尝试打开 Web 控制台,浏览器中可能会出现错误。请稍候片刻再试。

在本快速入门中,您将使用 Web 控制台进行数据摄入。MSQ 任务引擎专门使用 Query(查询) 视图来编辑和运行 SQL 查询。有关与多阶段查询架构和 MSQ 任务引擎相关的 Query 视图的完整演练,请参阅 UI 演练

加载数据

Druid 发行版中附带了 wikiticker-2015-09-12-sampled.json.gz 示例数据集,可供您测试使用。该示例数据集位于 Druid 根目录下的 quickstart/tutorial/ 文件夹中,代表了特定一天的维基百科页面编辑记录。

按照以下步骤加载示例维基百科数据集:

  1. Query(查询) 视图中,点击 Connect external data(连接外部数据)

  2. 选择 Local disk(本地磁盘) 图标并输入以下值:

    • Base directory(基础目录): quickstart/tutorial/

    • File filter(文件过滤器): wikiticker-2015-09-12-sampled.json.gz

    Data location

    UI 允许您分别输入基础目录和 通配符文件过滤器,这使得您可以一次指定多个文件进行摄入。

  3. 点击 Connect data(连接数据)

  4. Parse(解析) 页面上,您可以在将数据加载到 Druid 之前检查原始数据并执行以下可选操作:

    • 展开一行以查看相应的源数据。
    • 通过从 Input format(输入格式) 选项中选择,自定义处理数据的方式。
    • 调整数据的主时间戳列。Druid 要求数据必须有一个主时间戳列(内部存储在名为 __time 的列中)。如果您的数据集没有时间戳,Druid 将使用默认值 1970-01-01 00:00:00

    Data sample

  5. 点击 Done(完成)。系统将返回到 Query(查询) 视图,显示新生成的查询语句。该查询将示例数据插入到名为 wikiticker-2015-09-12-sampled 的表中。

    显示查询
    REPLACE INTO "wikiticker-2015-09-12-sampled" OVERWRITE ALL
    WITH input_data AS (SELECT *
    FROM TABLE(
    EXTERN(
    '{"type":"local","baseDir":"quickstart/tutorial/","filter":"wikiticker-2015-09-12-sampled.json.gz"}',
    '{"type":"json"}',
    '[{"name":"time","type":"string"},{"name":"channel","type":"string"},{"name":"cityName","type":"string"},{"name":"comment","type":"string"},{"name":"countryIsoCode","type":"string"},{"name":"countryName","type":"string"},{"name":"isAnonymous","type":"string"},{"name":"isMinor","type":"string"},{"name":"isNew","type":"string"},{"name":"isRobot","type":"string"},{"name":"isUnpatrolled","type":"string"},{"name":"metroCode","type":"long"},{"name":"namespace","type":"string"},{"name":"page","type":"string"},{"name":"regionIsoCode","type":"string"},{"name":"regionName","type":"string"},{"name":"user","type":"string"},{"name":"delta","type":"long"},{"name":"added","type":"long"},{"name":"deleted","type":"long"}]'
    )
    ))
    SELECT
    TIME_PARSE("time") AS __time,
    channel,
    cityName,
    comment,
    countryIsoCode,
    countryName,
    isAnonymous,
    isMinor,
    isNew,
    isRobot,
    isUnpatrolled,
    metroCode,
    namespace,
    page,
    regionIsoCode,
    regionName,
    user,
    delta,
    added,
    deleted
    FROM input_data
    PARTITIONED BY DAY
  6. (可选)点击 Preview(预览) 查看数据在摄入前的基本结构。

  7. 编辑查询的第一行,将默认的目标数据源名称从 wikiticker-2015-09-12-sampled 修改为 wikipedia

  8. 点击 Run(运行) 执行查询。任务可能需要一两分钟才能完成。完成后,任务会显示其持续时间和插入到表中的行数。该视图会自动刷新,因此您无需刷新浏览器即可查看状态变化。

    Run query

    任务成功意味着 Druid 数据服务器已经接收并存储了一个或多个数据分片(segment)。

查询数据

摄入任务完成后,您就可以查询数据了。

Query(查询) 视图中,运行以下查询以列出排名靠前的频道:

SELECT
channel,
COUNT(*)
FROM "wikipedia"
GROUP BY channel
ORDER BY COUNT(*) DESC

Query view

恭喜!您在短短一个快速入门教程中,完成了从下载 Druid 到使用 MSQ 任务引擎查询数据的全过程。

后续步骤

请参阅以下主题以获取更多信息:

请记住,停止 Druid 服务后,下次您可以删除 Druid 根目录下的 var 目录并再次运行 bin/start-druid 脚本,以全新的状态启动。在尝试其他数据摄入教程之前,您可能希望这样做,因为它们通常会使用相同的 Wikipedia 数据源。