Druid系列《三》集群

 

4.1集群安装

集群配置的规划需要根据需求来定制,下面以一个开发环境机器搭建为例,描述如何搭建一个有HA特性的Druid集群.

集群部署有以下几点需要说明 

1. 为了保证HA,主节点部署两台 

2. 管理节点与查询节点可以考虑多核大内存的机器

部署规划

角色

机器

配置

集群角色

主节点

10.5.24.137

8C16G

Coordinator,Overlord

主节点

10.5.24.138

8C16G

Coordinator,Overlord

数据节点,查询节点

10.5.24.139

8C16G

Historical, MiddleManager, Tranquility,Broker,Pivot Web

数据节点,查询节点

10.5.24.140

8C16G

Historical, MiddleManager, Tranquility,(数据节点,查询节点)Broker

部署步骤

公共配置

在druid包下,有以下内容:

  • LICENSE - license文件
  • bin/ - 对此quickstart有用的脚本
  • conf/ - 集群设置的配置模板
  • conf-quickstart/ - 此quickstart的配置
  • extensions/ - Druid的所有扩展
  • haddop-dependencies/ - Druid haddop的依赖
  • lib/ - 所有Druid核心包含的包
  • quickstart/ - 对此quickstart有用的文件

需要修改conf文件夹下的配置文件

4.1.1配置deep storage

Druid用分布式文件系统或大对象(blob)存储来进行数据存储。最常用的是亚马逊S3HDFS

4.1.2配置Hadoop (可选)

如果需要通过hadoop集群加载数据,在Druid集群中需要如下配置:
更新conf/middleManager/runtime.properties中的druid.indexer.task.hadoopWorkingPath参数,将索引过程中需要的临时文件指向HDFS路径。
通常会配置成druid.indexer.task.hadoopWorkingPath=/tmp/druid-indexing
将hadoop的xml(core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml)配置文件放到Druid节点的classpath路径里,可以copy到conf/druid/_common/core-site.xml, conf/druid/_common/hdfs-site.xml等等。请注意,您不需要为了从Hadoop加载数据而使用HDFS深存储。例如,如果您的集群在Amazon Web Services上运行,我们建议使用S3进行深度存储,即使您正在使用Hadoop或Elastic MapReduce加载数据。

配置Druid coordination

在这个简单的集群示例中,可以在同一台服务器上,部署单个Druid Coordinator、Druid Overlord、一个ZooKeeper实例和一个嵌入式Derby元数据数据库。
修改conf/druid/_common/common.runtime.properties配置文件中druid.zk.service.host参数,指向zookeeper服务器地址。修改druid.metadata.storage.connector.connectURI和druid.metadata.storage.connector.host参数执行元数据存储地址。

4.2数据摄取

流数据的摄取有两种方式:

通过实时节点以Pull的方式摄取

通过索引服务的方式以Push方式摄取

4.2.1以Pull方式摄取

Ingestion Spec是一个JSON文本,由三部分组成

{

“dataSchema”:{,,,},#Json对象,指明数据源格式、数据解析格式、维度

“ioConfig”:{,,,},#Json对象,指明数据如何在Druid中存储

“tuningConfig”:{,,,}#Json对象,指明存储优化配置

}

 

{
{
 
  
 
  
 
 

数据源的描述

 
 

  "type" : "index",

  "spec" :
{
 
  
 
  
 
 

数据源名字

 
 

    "dataSchema" : {

      "dataSource" : "wikipedia",
      "parser" : {
 
  
 
  
 
 

Json对象 如何解析数据

 
 

        "type" : "string",

        "parseSpec" : {
          "format" : "json",
 
  
 
  
 
 

指明数据源格式,维度列表、指标列表、时间戳列名 json、csv、tsv

 
 

          "dimensionsSpec" : {

            "dimensions" : [
              "channel",
              "cityName",
 
  
 
  
 
 

维度名列表

 
 

              "comment",

              "countryIsoCode",
              "countryName",
              "isAnonymous",
              "isMinor",
              "isNew",
              "isRobot",
              "isUnpatrolled",
              "metroCode",
              "namespace",
              "page",
              "regionIsoCode",
              "regionName",
              "user",
              { "name" : "commentLength", "type" : "long" },
              { "name" : "deltaBucket", "type" : "long" },
              "flags",
              "diffUrl",
              { "name": "added", "type": "long" },
              { "name": "deleted", "type": "long" },
              { "name": "delta", "type": "long" }
            ]
          },
 
          "timestampSpec": {
            "column": "timestamp",
 
  
 
  
 
 

时间戳列名

 
 

            "format": "iso"

          }
        }
            ] 
          },
          "timestampSpec": {
            "column": "timestamp",
            "format": "iso"
          }
        }
 
  
 
  
 
 

所有指标列的信息

 
 

      },

      "metricsSpec" : [],
      "granularitySpec" : {
 
  
 
  
 
 

Json对象,指明数据的存储和查询粒度

 
 

        "type" : "uniform",

        "segmentGranularity" : "day",
        "queryGranularity" : "none",
        "intervals" : ["2016-06-27/2016-06-28"],
        "rollup" : false
 
  
 
  
 
 

数据源的来源

 
 

      }

    },
    "ioConfig" : {
      "type" : "index",
      "firehose" : {
        "type" : "local",
        "baseDir" : "quickstart/",
        "filter" : "wikipedia-2016-06-27-sampled.json"
      },
      "appendToExisting" : false
    },
 
  
 
  
 
 

优化数据摄取的配置

 
 

"tuningConfig" : {

 
      "type" : "index",
      "targetPartitionSize" : 5000000,
      "maxRowsInMemory" : 25000,
      "forceExtendableShardSpecs" : true
    }
  }
}
                             

 

4.2.2以Push方式摄取

以Push方式摄取需要启动索引服务,先启动中间管理者,和统治节点(Overload node)

4.2.3以静态文件摄取

同样通过索引服务的方式。批量摄取数据。需要一个通知节点提交一个索引任务。

4.2.4以hadoop方式摄取

Druid Hadoop Index job支持从HDFS上获取数据,并摄入到Druid中,同样是通过Http启动一个Json配置文件

命令:

curl –X ‘POST’ –H ‘Content-Type:application/json’ –d @hadoop-index-task.json http://localhost:8090/druid/indexer/v1/task

猜你喜欢

转载自blog.csdn.net/sinat_32176267/article/details/82252866
今日推荐