• Doris扩展能力 踏雪扬尘


    审计日志插件

    Doris 的审计日志插件是在 FE 的插件框架基础上开发的。是一个可选插件。用户可以在运行时安装或卸载这个插件。
    该插件可以将 FE 的审计日志定期的导入到指定 Doris 集群中,以方便用户通过 SQL 对审计日志进行查看和分析。

    Doris On ES

    Doris-On-ES将Doris的分布式查询规划能力和ES(Elasticsearch)的全文检索能力相结合,提供更完善的OLAP分析场景解决方案; 也就是 Doris 相当于外表查询 ES中的数据。
    提供如下能力:

    1. ES中的多index分布式Join查询
    2. Doris和ES中的表联合查询,更复杂的全文检索过滤

    创建ES索引

    curl -X POST 'localhost:9200/test/_doc' -H "Content-Type: application/json;charset=UTF-8"  -d ' 
    {
       "settings": {
          "index": {
             "number_of_shards": "1",
             "number_of_replicas": "0"
          }
       },
       "mappings": {
          "doc": { // ES 7.x版本之后创建索引时不需要指定type,会有一个默认且唯一的`_doc` type
             "properties": {
                "k1": {
                   "type": "long"
                },
                "k2": {
                   "type": "date"
                },
                "k3": {
                   "type": "keyword"
                },
                "k4": {
                   "type": "text",
                   "analyzer": "standard"
                },
                "k5": {
                   "type": "float"
                }
             }
          }
       }
    }'
    

    ES索引导入数据

    curl -XPOST localhost:9200/_bulk  -H "Content-Type: application/json;charset=UTF-8" --data-binary @data.json
    
    {"index":{"_index":"test","_type":"_doc"}}
    { "k1" : 100, "k2": "2020-01-01", "k3": "Trying out Elasticsearch", "k4": "Trying out Elasticsearch", "k5": 10.0}
    {"index":{"_index":"test","_type":"_doc"}}
    { "k1" : 100, "k2": "2020-01-01", "k3": "Trying out Doris", "k4": "Trying out Doris", "k5": 10.0}
    {"index":{"_index":"test","_type":"_doc"}}
    { "k1" : 100, "k2": "2020-01-01", "k3": "Doris On ES", "k4": "Doris On ES", "k5": 10.0}
    {"index":{"_index":"test","_type":"_doc"}}
    { "k1" : 100, "k2": "2020-01-01", "k3": "Doris", "k4": "Doris", "k5": 10.0}
    {"index":{"_index":"test","_type":"_doc"}}
    { "k1" : 100, "k2": "2020-01-01", "k3": "ES", "k4": "ES", "k5": 10.0}
    

    Doris中创建ES外表

    // ENGINE必须是Elasticsearch

    CREATE EXTERNAL TABLE `test` (
    `_id` varchar COMMENT "",
      `k1` bigint(20) COMMENT "",
      `k2` datetime COMMENT "",
      `k3` varchar(20) COMMENT "",
      `k4` varchar(100) COMMENT "",
      `k5` float COMMENT ""
    ) ENGINE=ELASTICSEARCH 
    PROPERTIES (
    "hosts" = "http://172.24.xx.65:9200",
    "index" = "test",
    "type" = "_doc",
    "user" = "",
    "password" = "",
    "enable_docvalue_scan" = "true",
    "nodes_discovery" = "true",
    "enable_keyword_sniff" = "true"
    );
    

    过滤条件下推:
    过滤条件下推到ES去执行,减少返回的数据量,提高效率;

    启用列式扫描优化查询速度(enable_docvalue_scan=true):
    开启之后会遵循以下2个原则:

    1. 尽力而为: 自动探测要读取的字段是否开启列式存储(doc_value: true),如果获取的字段全部有列存,Doris会从列式存储中获取所有字段的值
    2. 自动降级: 如果要获取的字段只要有一个字段没有列存,所有字段的值都会从行存_source中解析获取

    默认情况下,Doris On ES会从行存也就是_source中获取所需的所有列,_source的存储采用的行式+json的形式存储,在批量读取性能上要劣于列式存储,尤其在只需要少数列的情况下尤为明显,只获取少数列的情况下,docvalue的性能大约是_source性能的十几倍

    查询用法:
    完成在Doris中建立ES外表后,除了无法使用Doris中的数据模型(rollup、预聚合、物化视图等)外并无区别

    Doris output plugin

    该插件用于logstash输出数据到Doris,使用 HTTP 协议与 Doris FE Http接口交互,并通过 Doris 的 stream load 的方式进行数据导入

    Hive External Table of Doris

    Hive External Table of Doris 提供了 Doris 直接访问 Hive 外部表的能力,外部表省去了繁琐的数据导入工作,并借助 Doris 本身的 OLAP 的能力来解决 Hive 表的数据分析问题:

    1. 支持 Hive 数据源接入Doris
    2. 支持 Doris 与 Hive 数据源中的表联合查询,进行更加复杂的分析操作
    -- 语法
    CREATE [EXTERNAL] TABLE table_name (
      col_name col_type [NULL | NOT NULL] [COMMENT "comment"]
    ) ENGINE=HIVE
    [COMMENT "comment"]
    PROPERTIES (
      'property_name'='property_value',
      ...
    );
    
    -- 例子:创建 Hive 集群中 hive_db 下的 hive_table 表
    CREATE TABLE `t_hive` (
      `name` varchar(20) NOT NULL COMMENT "",
      `age` int NOT NULL COMMENT "",
      `s1` int NOT NULL COMMENT "",
      `s2` int NOT NULL COMMENT "",
      `s3` varchar(20) NOT NULL COMMENT "",
      `s4` varchar(20) NOT NULL COMMENT "",
      `s5` varchar(20) NOT NULL COMMENT ""
    ) ENGINE=HIVE
    COMMENT "HIVE111"
    PROPERTIES (
    'hive.metastore.uris' = 'thrift://172.24.xx.65:9083',
    'database' = 'fff',
    'table' = 't11'
    );
    

    完成在 Doris 中建立 Hive 外表后,除了无法使用 Doris 中的数据模型(rollup、预聚合、物化视图等)外,与普通的 Doris OLAP 表并无区别

    Doris 插件框架

    Doris 的插件框架支持在运行时添加/卸载自定义插件,而不需要重启服务,用户可以通过开发自己的插件来扩展Doris的功能。

    一个FE的插件可以使一个zip压缩包或者是一个目录。其内容至少包含两个文件:plugin.properties 和 .jar 文件。plugin.properties用于描述插件信息。

    ODBC External Table Of Doris

    ODBC External Table Of Doris 提供了Doris通过数据库访问的标准接口(ODBC)来访问外部表,外部表省去了繁琐的数据导入工作,让Doris可以具有了访问各式数据库的能力,并借助Doris本身的OLAP的能力来解决外部表的数据分析问题:

    1. 支持各种数据源接入Doris
    2. 支持Doris与各种数据源中的表联合查询,进行更加复杂的分析操作
    3. 通过insert into将Doris执行的查询结果写入外部的数据源

    Doris中创建ODBC的外表

    1. 不使用Resource创建ODBC的外
    2. 通过ODBC_Resource来创建ODBC外表 (推荐使用的方式)
    CREATE EXTERNAL RESOURCE `mysql_odbc`
    PROPERTIES (
    "type" = "odbc_catalog",
    "host" = "172.24.xx.65",
    "port" = "3306",
    "user" = "root",
    "password" = "xxx",
    "database" = "data_channel",
    "odbc_type" = "mysql",
    "driver" = "com.mysql.cj.jdbc.Driver"
    );
         
    CREATE EXTERNAL TABLE `t_api_mysql` (
      `id` BIGIN NOT NULL COMMENT "",
      `api_group_id` char(10) NOT NULL COMMENT "",
      `api_name` varchar(20) NOT NULL COMMENT "",
      `api_path` varchar(20) NOT NULL COMMENT "",
      `protocol` varchar(20) NOT NULL COMMENT ""
    ) ENGINE=ODBC
    COMMENT "ODBC"
    PROPERTIES (
    "odbc_catalog_resource" = "mysql_odbc",
    "database" = "data_channel",
    "table" = "t_api"
    );
    

    完成在Doris中建立ODBC外表后,除了无法使用Doris中的数据模型(rollup、预聚合、物化视图等)外,与普通的Doris表并无区别。

    调试工具

    在Doris的使用、开发过程中,经常会遇到需要对Doris进行调试的场景,这里介绍一些常用的调试工具。
    pprof (opens new window): 来自gperftools,用于将gperftools所产生的内容转化成便于人可以阅读的格式,比如pdf, svg, text等.
    graphviz (opens new window): 在没有这个库的时候pprof只可以转化为text格式,但这种方式不易查看。那么安装这个库后,pprof可以转化为svg、pdf等格式,对于调用关系则更加清晰明了。
    perf (opens new window): linux内核自带性能分析工具。这里 (opens new window)有一些perf的使用例子。
    FlameGraph (opens new window): 可视化工具,用于将perf的输出以火焰图的形式展示出来。

  • 相关阅读:
    419. Battleships in a Board
    150. Evaluate Reverse Polish Notation
    153. Find Minimum in Rotated Sorted Array
    319. Bulb Switcher
    223. Rectangle Area
    iOS 常用到的宏#define
    VRAR 使用 SceneKit
    VR、AR、MR定义区别
    Swift 开源项目练习应用
    Swift3.0 UITextField
  • 原文地址:https://www.cnblogs.com/yyystar/p/15578691.html
Copyright © 2020-2023  润新知