基于Doris的日志存储分析平台(同步Kafka日志数据)

Kafka日志写入Doris
  • 实现方式
    • 采用 Routine Load 官方文档:Routine Load - Apache Doris
    • 采用 SparkStreaming实时消费Kafka后写入Doris,在日志记录场景(只写不删,不覆盖,不聚合...),我们使们前者;
    • Doris 可以通过 Routine Load 导入方式持续消费 Kafka Topic 中的数据。在提交 Routine Load 作业后,Doris 会持续运行该导入作业,实时生成导入任务不断消费 Kakfa 集群中指定 Topic 中的消息。
  • 我们的日志数据由log4net推入Kafka后是一串JSON格式,大致如下格式:
[
  {
      "partition": 0,
      "offset": 49,
      "msg": "{\"log_timestamp\":1715752796717,\"business\":\"example.business.project\",\"service\":\"example.service\",\"host_ip\":\"YFB-CTO\",\"level\":\"INFO\",\"logger_name\":\"Web.Controllers.RoleController\",\"message\":\"########### \\u8FD9\\u662F\\u624B\\u52A8\\u8F93\\u51FA\\u7684\\u4E2D\\u6587\\u65E5\\u5FD7\\u4FE1\\u606F ###########\",\"request_path\":null,\"request_parameter\":null,\"request_method\":null,\"request_header\":null,\"status_code\":null,\"request_response_time\":0,\"exception\":null}",
      "timespan": 1715752796716,
      "date": "2024-05-15 13:59:56"
    }
]
  • 创建 Routine Load 导入作业
  • 语法
  •  CREATE ROUTINE LOAD [db.]job_name [ON tbl_name]
      [merge_type]
      [load_properties]
      [job_properties]
      FROM data_source [data_source_properties]
      [COMMENT "comment"]

  • 在 Doris 中,使用 CREATE ROUTINE LOAD 命令,创建导入作业
  • CREATE ROUTINE LOAD biz_log_db.ods_example_service_log_routine_load_json ON ods_example_service_log
        COLUMNS(log_timestamp,business,service,host_ip,level,logger_name,message,request_path,request_parameter,request_method,request_header,response_content,status_code,request_response_time,exception,log_time=from_millisecond(log_timestamp))
        PROPERTIES(
            "desired_concurrent_number"="3",
            "max_batch_interval" = "20",
            "max_batch_rows" = "300000",
            "max_batch_size" = "209715200",
            "strict_mode" = "false",
            "format"="json",
            "jsonpaths"="[\"$.log_timestamp\",\"$.business\",\"$.service\",\"$.host_ip\",\"$.level\",\"$.logger_name\",\"$.message\",\"$.request_path\",\"$.request_parameter\",\"$.request_method\",\"$.request_header\",\"$.response_content\",\"$.status_code\",\"$.request_response_time\",\"$.exception\"]"
        )
        FROM KAFKA(
            "kafka_broker_list" = "192.168.2.111:9092,192.168.2.184:9092,192.168.2.156:9092",
            "kafka_topic" = "example-service-log",
            "property.kafka_default_offsets" = "OFFSET_BEGINNING",
            "property.deserializer.encoding" = "UTF-8"
        )
        COMMENT "示例服务日志记录同步 KAFKA ROUTINE LOAD 配置";

  • 说明
    • 请参考官方文档:CREATE-ROUTINE-LOAD - Apache Doris
    • 示例中通过 json_root 抽取根节点的元素进行解析,以简化配置。
    • OFFSET_BEGINNING: 表示从有数据的位置开始订阅。
    • 上述配置表示:自动默认消费所有分区,且从有数据的位置(OFFSET_BEGINNING)开始订阅
    • 查看导入运行任务
    • 查看导入运行作业
      • 创建 routine load 任务之后,可以通过show routine load命令查看运行状态的例行任务,如果在show routine load中没有找到对应的例行任务,则可能因为例行任务失败或者错误数过多被停止或者暂停,使用show all routine load查看所有状态的例行任务。
    • 暂停导入作业
    • 恢复(重启)导入作业
    • 修改导入作业
    • 取消(停止)导入作业
    • 问题排查
      • 先执行“SHOW ALL ROUTINE LOAD;”,找出有问题的ROUTINE-LOAD,拖到最右边,看到“ErrorLogUrls”,如下:
      • 复制ErrorLogUrls,在浏览器里打开,查看错误信息,如下:
      • 看一下数据
      • 最后:经过实测,已经取消的ROUTINE LOAD是没办法手动删除的,Doris会自动删除,不过这个过程等了好几天,过了一个周未才发现自动删除了已经取消的ROUTINE LOAD,如下:
  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于 Apache Doris数据仓库平台架构设计如下: 1. 架构模式: - 采用分布式架构模式,将数据仓库划分为多个节点,每个节点可以独立存储和处理数据,同时支持横向扩展,能够处理大规模的数据量和并发请求。 2. 数据存储层: - 使用分布式文件系统(如HDFS)存储数据数据按照数据表的划分进行存储,支持数据的分片和复制,提高数据的可靠性和可用性。 - 数据以列式存储的方式存储,提高查询效率。 - 支持数据的压缩和索引,降低存储空间和提高查询效率。 3. 元数据管理: - 使用元数据管理系统(如MySQL)存储数据的元信息,包括表结构、分区、数据位置等。 - 元数据管理系统支持水平扩展,保证元数据的一致性和高可用性。 4. 查询引擎: - 使用分布式查询引擎,支持SQL语法,能够高效地执行复杂的数据查询和分析操作。 - 支持预编译和查询优化技术,提高查询性能。 5. 数据加载和导出: - 支持多种方式的数据加载和导出,如批量导入、实时流入、增量导入、导出到外部系统等。 - 支持数据的转换和清洗,提高数据的质量和一致性。 6. 安全性和权限管理: - 支持访问控制,可以对用户和角色进行权限管理,确保数据的安全性和合规性。 - 支持数据加密和身份认证,保护数据的机密性和完整性。 7. 可视化和监控: - 提供用户友好的可视化界面,方便用户管理和操作数据仓库。 - 支持实时监控和告警功能,及时发现和解决系统故障和性能问题。 总之,基于 Apache Doris数据仓库平台架构设计具备高可扩展性、高性能和高可靠性的特点,可以满足大规模数据处理和查询的需求,并提供丰富的功能和工具支持,帮助用户实现高效的数据分析和决策。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值