Doris0.15-Broker Load

Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS 、百度云 BOS 及 Amazon S3 的 fs_broker。fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力。

Doris-0.15 编译后链接: https://pan.baidu.com/s/117FCTIvIyoL7cY5qXGmnJw 提取码: 9qmk

  • 拷贝源码 fs_broker 的 output 目录下的相应 Broker 目录到需要部署的所有节点上。建议和 BE 或者 FE 目录保持同级。
  • 修改相应 Broker 配置

    在相应 broker/conf/ 目录下对应的配置文件中,可以修改相应配置。

  • 启动停止 Broker

    ./start_broker.sh --daemon
    
    ./stop_broker.sh --daemon
    
  • 添加、去除Broker
    # 在fe节点下执行sql,Broker 是无状态的进程,可以随意启停。当然,停止后,正在其上运行的作业会失败,重试即可。
    
    # 添加
    # 其中 broker_host 为 Broker 所在节点 ip;broker_ipc_port 在 Broker 配置文件中的conf/apache_hdfs_broker.conf。
    ALTER SYSTEM ADD BROKER broker_name "broker_host1:broker_ipc_port1","broker_host2:broker_ipc_port2",...;
    
    # 删除
    ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port";
    ALTER SYSTEM DROP ALL BROKER broker_name;
    
  • 查看 Broker 状态
    SHOW PROC "/brokers";
    
  • Broker Load

    适用场景:
    1. 源数据在 Broker 可以访问的存储系统中,如 HDFS。
    2. 数据量在 几十到百GB 级别。
    基本原理:
    用户在提交导入任务后,FE 会生成对应的 Plan 并根据目前 BE 的个数和文件的大小,将 Plan 分给 多个 BE 执行,每个 BE 执行一部分导入数据。

    BE 在执行的过程中会从 Broker 拉取数据,在对数据 transform 之后将数据导入系统。所有 BE 均完成导入,由 FE 最终决定导入是否成功。

                     +
                     | 1. user create broker load
                     v
                +----+----+
                |         |
                |   FE    |
                |         |
                +----+----+
                     |
                     | 2. BE etl and load the data
        +--------------------------+
        |            |             |
    +---v---+     +--v----+    +---v---+
    |       |     |       |    |       |
    |  BE   |     |  BE   |    |   BE  |
    |       |     |       |    |       |
    +---+-^-+     +---+-^-+    +--+-^--+
        | |           | |         | |
        | |           | |         | | 3. pull data from broker
    +---v-+-+     +---v-+-+    +--v-+--+
    |       |     |       |    |       |
    |Broker |     |Broker |    |Broker |
    |       |     |       |    |       |
    +---+-^-+     +---+-^-+    +---+-^-+
        | |           | |          | |
    +---v-+-----------v-+----------v-+-+
    |       HDFS/BOS/AFS cluster       |
    |                                  |
    
    基本操作:
    创建导入:
    LOAD LABEL db_name.label_name 
    (data_desc, ...)
    WITH BROKER broker_name broker_properties
    [PROPERTIES (key1=value1, ... )]
    
    * data_desc:
    
        DATA INFILE ('file_path', ...)
        [NEGATIVE]
        INTO TABLE tbl_name
        [PARTITION (p1, p2)]
        [COLUMNS TERMINATED BY separator ]
        [(col1, ...)]
        [PRECEDING FILTER predicate]
        [SET (k1=f1(xx), k2=f2(xx))]
        [WHERE predicate]
    
    * broker_properties: 
    
        (key1=value1, ...)
        
        
    # eg, 如果没有设置set,则以column中的列作为映射。
    LOAD LABEL db1.label1
    (
        DATA INFILE("hdfs://abc.com:8888/user/palo/test/ml/file1")
        INTO TABLE tbl1
        COLUMNS TERMINATED BY ","
        (tmp_c1,tmp_c2)
        SET
        (
            id=tmp_c2,
            name=tmp_c1
        ),
        DATA INFILE("hdfs://abc.com:8888/user/palo/test/ml/file2")
        INTO TABLE tbl2
        COLUMNS TERMINATED BY ","
        (col1, col2)
        where col1 > 1
    )
    WITH BROKER 'broker'
    (
        "username"="hdfs",
        "password"="hdfs"
    )
    PROPERTIES
    (
        "timeout" = "3600"
    );
    
    # 更多语法参考
    HELP BROKER LOAD
    
    
Label

​ 导入任务的标识。每个导入任务,都有一个在单 database 内部唯一的 Label。Label 是用户在导入命令中自定义的名称。通过这 个 Label,用户可以查看对应导入任务的执行情况。

​ Label 的另一个作用,是防止用户重复导入相同的数据。强烈推荐用户同一批次数据使用相同的label。这样同一批次数据的重 复请求只会被接受一次,保证了 At-Most-Once 语义

​ 当 Label 对应的导入作业状态为 CANCELLED 时,可以再次使用该 Label 提交导入作业。

查看导入:
show load order by createtime desc limit 1\G

# 更多
HELP SHOW LOAD
取消导入:

​ 当 Broker load 作业状态不为 CANCELLED 或 FINISHED 时,可以被用户手动取消。取消时需要指定待取消导入任务的 Label 。取 消导入命令语法可执行 HELP CANCEL LOAD查看。

相关系统配置:
FE 配置

​ 下面几个配置属于 Broker load 的系统级别配置,也就是作用于所有 Broker load 导入任务的配置。主要通过修改 fe.conf来调 整配置值。

  • min_bytes_per_broker_scanner/max_bytes_per_broker_scanner/max_broker_concurrency

    前两个配置限制了单个 BE 处理的数据量的最小和最大值。第三个配置限制了一个作业的最大的导入并发数。最小处理的数据量,最大并发数,源文件的大小和当前集群 BE 的个数 共同决定了本次导入的并发数

    本次导入并发数 = Math.min(源文件大小/最小处理量,最大并发数,当前BE节点个数)
    本次导入单个BE的处理量 = 源文件大小/本次导入的并发数
    

    通常一个导入作业支持的最大数据量为 max_bytes_per_broker_scanner * BE 节点数。如果需要导入更大数据量,则需要适当调整 max_bytes_per_broker_scanner 参数的大小。

    默认配置:

    参数名:min_bytes_per_broker_scanner, 默认 64MB,单位bytes。
    参数名:max_broker_concurrency, 默认 10。
    参数名:max_bytes_per_broker_scanner,默认 3G,单位bytes。
    

参考官方文档: https://doris.apache.org/zh-CN/administrator-guide/load-data/broker-load-manual.html#%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值