文章目录
  1. 1. Middle Manger
  2. 2. Peon
  3. 3. HTTP 端

索引服务是一种用来运行索引相关任务的高可用、分布式的服务。索引服务任务创建或者销毁Druid的段。其架构类似主奴机制。

索引服务由三个主要部件组成:peon运行单个的任务,Middle Manager组件管理peon,overlord组件控制任务向Middle Manager的分配。Middle Manager和Peon通常运行在同一个节点,Overlord和Middle Manager能运行在相同节点或者多个节点上。

索引服务的示意图如下:

Druid_Indexing_Service ## Overlord节点

Overlord节点负责接收任务,负责任务的分配,对任务加锁,向调用者返回任务状态。Overlord有两种模式:本地模式或者远程模式。其中本地模式是默认模式。在本地模式下Overlord也负责创建Peon来执行任务,所有的Middle Manager和Peon的配置此时也应当被提供,这种模式一般用于普通的工作流。远程模式中,Overlord和Middle Manager运行在不同的进程中,也可以在不同服务器上运行,如果想让索引服务成为Druid索引的单一端点,推荐使用这种模式。

可以通过向Overlor节点以POST请求提交JSON对象的方式提交任务:

1
http://<OVERLORD_IP>:<port>/druid/indexer/v1/task

这将会返回提交的任务id。任务也能通过POST请求来关闭:

1
http://<OVERLORD_IP>:<port>/druid/indexer/v1/task/{taskId}/status

或者通过GET请求来查询状态:

1
http://<OVERLORD_IP>:<port>/druid/indexer/v1/task/{taskId}/segments

可以在浏览器中访问

1
http://<OVERLORD_IP>:<port>/console.html

来查看任务一些信息。

Middle Manger

Middle Manger是执行提交任务的工作节点。Middle Manger向运行在独立JVM的Peon发送任务。独立开JVM是因为资源问题与日志隔离。每一个Peon一次只能执行一个任务。一个Middle Manger可以有多个Peon。

通过io.druid.cli.Main server middleManager来启动Middle Manager。

Peon

Peon在独立的JVM中执行单个任务。MiddleManager负责创建Peon来执行任务。Peon很少单独运行。

除了开发目的,很少独立的运行Peon。通过io.druid.cli.Main internal peon <task_file> <status_file> 来独立执行。其中task_file包含了任务的JSON对象。status_file表示在那里输出任务的状态。

HTTP 端

可以通过HTTP的GET请求http://<NODE_IP>:<port>/status来获取一些节点的信息,包括版本、载入的扩展、内存使用、总内存数等,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"version": "0.9.0-rc3",
"modules": [
{
"name": "io.druid.data.input.avro.AvroExtensionsModule",
"artifact": "druid-avro-extensions",
"version": "0.9.1-SNAPSHOT"
}
],
"memory": {
"maxMemory": 67108864,
"totalMemory": 67108864,
"freeMemory": 32278264,
"usedMemory": 34830600
}
}
文章目录
  1. 1. Middle Manger
  2. 2. Peon
  3. 3. HTTP 端