You need to enable JavaScript to run this app.
导航

基于 StarRocks 的准实时数据分析

最近更新时间2023.11.06 16:42:05

首次发布时间2023.11.06 16:42:05

本文将通过示例为您介绍如何基于火山引擎 E-MapReduce(EMR)StarRocks 构建分钟级准实时分析。

1 场景介绍

方案架构

此次实践架构流程示意图如下:

2 前提条件

3 使用限制

  • EMR StarRocks 集群和 RDS MySQL 实例以及 DataSail 独享数据集成资源组需要在同一个 VPC 下,并且在同一个可用区下,确保网络能够互相访问。

  • RDS MySQL 为 5.7 及以上版本。

  • EMR StarRocks 集群为 EMR-3.2.1 及以上版本。

4 操作流程

4.1 创建 MySQL 数据源

  1. 登录 DataLeap 租户控制台

  2. 在上方服务地区下拉框中,选择相应的地区,目前已支持华东2(上海)、华北2(北京)、华南1(广州)地区。

  3. 选择地区后,在概览界面,显示加入的项目中,单击项目详情进入对应项目控制台。

  4. 项目控制台界面,左侧导航栏中,单击数据源管理按钮,进入数据源管理页面。

  5. 数据源管理页面,单击右上角新建数据源按钮,进入新增数据源页面开始新增数据源:

  6. 此次示例中,接入方式选择火山引擎 MySQL 接入方式,并完成以下配置:

    参数说明
    基本配置
    数据源类型MySQL
    接入方式火山引擎 MySQL
    数据源名称数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。
    参数配置
    RDS 实例 ID火山引擎云数据库MySQL的实例ID,下拉选择。
    数据库名下拉选择实例下,已创建的 MySQL 数据库名称。
    用户名有权限访问数据库的用户名信息。
    密码输入用户名对应的密码信息。
  7. 参数项填写完整后,单击测试按钮,执行测试连通性,数据源与独享数据集成资源组网络需保证能互通。

  8. 连通性测试成功后,单击确定按钮,完成新增。

其余 MySQL 数据源操作详见配置 MySQL 任务

4.2 创建 StarRocks 数据库

  1. 登录 EMR 控制台,并登录已创建好的 StarRocks 集群。详见登录集群

  2. 使用 MySQL Client 连接 StarRocks 集群进行相关 SQL 操作:

    mysql -h 127.0.0.1 -P9030 -u root -p
    

    说明

    初次登录时, 需要在 FE 节点可指定 127.0.0.1 使用 root 用户和空字符串密码登录(必须要在 FE 节点本身,无密码); 初次登录后请尽快完成 root 账号密码修改:

    • 密码强度要求:10位以上数字+大小写字母+特殊符号,且不包含特定的公司内部关键词、日期如:bytedance@2022。

    • 如需修改 root 用户密码请使用上述方法登录后使用 SET PASSWORD 命令修改。详细请参考开源文档 后续可以使用有权限的用户创建子用户, 详细用户权限参考开源文档

  3. 初始可通过 root 用户创建数据库,命令如下:

    CREATE DATABASE example_db;
    
  4. 数据库创建完成后,可以通过 SHOW DATABASES; 查看数据库信息。

    MySQL> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | example_db         |
    | information_schema |
    | _statistics_       |
    +--------------------+
    2 rows in set (0.00 sec)
    

    说明

    information_schema 是为了兼容 MySQL 协议而存在,实际中信息可能不是很准确,所以关于具体数据库的信息建议通过直接查询相应数据库而获得。

更多 EMR StarRocks 集群操作详见 StarRocks 使用说明

4.3 创建 StarRocks 数据源

  1. 界面切换至 DataLeap 项目控制台数据源管理界面,单击“数据源管理”,新建 StarRocks 数据源。

    配置项说明
    基本配置
    数据源类型StarRocks
    接入方式EMR StarRocks
    数据源名称数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。
    描述对当前新建数据源的注释说明,方便后续进行维护管理。
    参数配置
    StarRocks 实例 IDEMR 中创建的 StarRocks 集群实例 ID。
    数据库名EMR 集群中的 StarRocks 库名称。
    用户名数据库的账号
    密码数据库的密码
  2. 参数项填写完整后,单击测试按钮,执行测试连通性,数据源与独享数据集成资源组网络需保证能互通。

  3. 连通性测试成功后,单击确定按钮,完成新增。

4.4 同步 MySQL 中的源数据到 StarRocks。

  1. 登陆 DataSail 全域数据集成控制台

  2. 单击左侧导航栏中的“数据同步方案”,进入解决方案界面。

  3. 在左侧目录树上方,选择 DataLeap 项目后,便可在右上方,单击新建数据同步解决方案 > 实时整库同步按钮,开始创建实时整库同步。

  4. 按流程完成解决方案的基本配置、数据源来源配置、数据源缓存配置、数据目标配置、运行配置等信息。详细配置操作详见 MySQL2StarRocks 实时整库同步

  5. 方案运行配置完成后,单击右下角提交方案按钮,进行方案的提交,在弹窗中,您可根据实际情况勾选方案是否立即执行,并单击确定按钮,完成实时数据同步解决方案的创建。

4.5 通过 Dataleap 中 EMR StarRocks 任务,编排数据加工任务

等待上方实时整库同步解决方案执行完成后,您便可进入 DataLeap 数据开发界面,进行数据加工任务。

  1. 登录 DataLeap租户控制台

  2. 在对应 DataLeap 项目中,进入数据开发界面,创建 EMR StarRocks 任务。

  3. 任务创建成功后,进入到 EMR StarRocks 任务配置界面,在配置界面中您可按需编写 StarRocks 支持的 SQL 语法。示例如下:

    --创建 StarRocks 数据库;
    CREATE DATABASE IF NOT EXISTS emr_sr_x; 
    
    --创建数据表
    DROP TABLE IF NOT EXISTS emr_sr_x.sr_test_table;
    CREATE TABLE IF NOT EXISTS emr_sr_x.sr_test_table
    (
        event_day DATE,
        siteid INT DEFAULT '10',
        city VARCHAR(32) DEFAULT '',
        username VARCHAR(32) DEFAULT '',
        pv BIGINT SUM DEFAULT '0'
    )
    AGGREGATE KEY(event_day, siteid, city, username)
    PARTITION BY RANGE(event_day)
    (
        PARTITION p201706 VALUES LESS THAN ('2020-07-01'),
        PARTITION p201707 VALUES LESS THAN ('2020-08-01'),
        PARTITION p201708 VALUES LESS THAN ('2020-09-01')
    )
    DISTRIBUTED BY HASH(siteid) BUCKETS 10
    PROPERTIES("replication_num" = "1");
    
    --清空表中历史数据
    TRUNCATE TABLE emr_sr_x.sr_test_table;
    
    --插入新数据
    insert into emr_sr_x.sr_test_table VALUES ('2020-07-11',27,'天津市丽县', '张三',1669);
    
    --查询 StarRocks 表中数据
    SELECT * FROM emr_sr_x.sr_test_table;
    
  4. 格式化 StarRocks SQL 语句

    您可根据使用习惯,依据在个性化设置中的 SQL 格式化风格设置,在代码编辑区编写完对应 SQL 语句后,单击上方导航栏功能区中的格式化按钮,格式化编辑完成的代码,使其语法结构看起来简洁明了。

  5. 任务产出数据登记

    任务产出数据登记,用于记录任务---数据血缘信息,并不会对代码逻辑造成影响。
    对于系统无法通过解析获取产出信息的任务,EMR StarRocks 任务可手动登记其产出信息。如果任务含有 StarRocks 库表数据的产出,则强烈建议填写。您填写的内容即为任务产出,支持填写多个。
    其他任务依赖时,您可在其调度设置界面,通过手动添加的方式,依据 StarRocks 任务产出的库表名信息来搜索添加依赖。具体登记内容包括以下数据类型:

    • StarRocks:该任务逻辑会将数据写入到 StarRocks 表,需填写 StarRocks 数据库名、表名、分区名,分区内容可以使用变量,如 ${date}、${hour} 形式。

    • 其他:该任务逻辑不写数据到 StarRocks 表。

  6. 配置调度

    任务配置完成后,在右侧导航栏中,单击调度配置按钮,进入调度配置窗口,您可以在此设置调度属性、依赖等信息,详细参数设置详见:调度设置

  7. 任务调试

    任务代码逻辑和参数配置完成后,您可在编辑器上方,单击操作栏中的保存调试按钮,进行任务调试。

  8. 任务提交

    查询结果确认无误后,单击操作栏中的保存并提交上线按钮,在弹窗中,完成提交上线等操作,最后单击确认按钮,完成作业提交。详见概述---离线任务提交上线

  9. 任务运维

    运维中心展示项目下已上线的生产任务,可按需查看任务依赖、运行耗时变化,可对离线任务进行数据回溯、监控设置等运维操作,同时也可以对流式任务进行开启、关闭或重启等状态操作。详见任务运维