大数据计算系统 Blink 在端侧的应用实践

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本文主要介绍了端侧通过Blink任务对埋点数据进行实时聚合和清洗,解决端侧日志时效性问题,并基于实时日志搭建线上监控运维体系,从而提升端侧整体的稳定性。


Blink简介
介绍 Blink 前需要先认识下 Flink,其最初是柏林工业大学的一个研究性项目(StratoSphere),早期专注于批计算,于2014年捐赠给 Apache 并进行孵化,后逐渐演变为数据计算框和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink 计算框架的核心是Flink Runtime 执行引擎,也是一个分布式系统,可运行在所有常见的集群环境中,它将大型计算任务分成许多小的部分每个机器执行一部分,以内存执行速度和任意规模来执行计算。而Blink 最初是阿里巴巴内部的 Flink 版本代号,是实时计算部门基于内部应用场景对 Flink 做了大量的优化和稳定性改造后的内部产品,在经过内部大规模应用和历年双11的实践与打磨,最终决定将其捐赠给 Flink 社区,成为 Flink 的一部分。值得一提的是,在大数据计算领域,批处理与流处理是两种常见的任务类型,常见的大数据处理框架只支持一种类型的任务,而 Flink 认为一切数据都是由流组成的,离线数据是有界限的流,实时数据是没有界限的流。基于其强大灵活的处理引擎,Flink 能够同时支持批处理和流处理两种应用场景:

  1. 有界数据:数据在指定的时间段内,是批处理的应用场景,需要对完整数据进行计算。类似的处理框架还有 Hadoop MapReduce、Hive等。
  2. 无界数据:数据没有时间的界限,所处理的数据是源源不断输入的,如消息队列、分布式日志这类流式数据源等。程序需要对传输的数据进行持续操作即实时计算。类似的处理框架还有 Storm、Spark Streaming等。




SQL API


Flink 提供了不同级别的编程模型供开发流/批处理程序使用。越往下越灵活,但编程复杂度也越高:

image.png

  1. Stateful Stream Process:状态化数据流的抽象接口,也是最底层的开发接口。该接口允许用户自由的处理来自一个或多个流中的事件,通过注册 Event Time 和 Processing Time 回调来实现复杂的计算。最终通过 ProcessFunction 集成到 DataStream API 中。
  2. DataStream(有界或无界数据流) / DataSet(有界数据集) API:为许多通用的流处理操作提供了处理原语,包括各种窗口、转换、连接、聚合、窗口、状态等,因此大部分应用程序从以此接口为基础进行开发



出于易用性的考虑,Blink 将 SQL / Table 作为其核心API,并对此进行了大量优化和重构工作(实际上 Flink SQL 绝大部分源自阿里巴巴的提交),实现了大部分 SQL 的功能,使其在使用上和标准 SQL 语法基本一致,在逻辑能力上和 DataStrem / DataSet API 相媲美,而表达上却更加简练。

image.png

image.png

当端上产生一条埋点数据后,UT 提供的端侧 SDK 会先将数据进行信息补全,通过加密压缩后先离线存储到本地,之后再配合一定的调度策略通过独立进程异步上翻到无线埋点网关Adash服务中。Adash在接收到上翻数据后会进行解压、解密、分流等操作,最终将数据作为 Blink 流处理任务的输入。面对集团整个无线端每秒数以亿计的实时数据输入,UT 中的 Blink 流处理任务会依据埋点的事件类型(如曝光事件、点击事件、自定义事件和性能数据)以及所属App(如淘宝、天猫、饿了么等)两个维度进行数据清洗分流,将对应App的所属事件类型定义在同一张动态表中,作为统一的实时日志公共层,以减少烟囱式开发,规范数据结构。然后各个业务线可以通过订阅的方式访问到公共层的动态表,此时可将其视为一张源表,通过自定义的 Blink SQL 开启新的实时处理任务,进而实现对端侧实时数据的再加工。依据上述原理,以笔者服务的天猫优品业务为例,我们通过 Blink 任务对接 UT 实时日志公共层,过滤出天猫优品App的实时日志,经过二次清洗加工后将处理所得的数据转存到阿里云日志服务上(SLS),利用这部分实时数据搭建起端侧的线上实时监控大盘和预警体系。假设所属UT的动态表名为 "s_ut",那么源表的定义大致如下:


CREATE TABLE s_ut (  filed1 VARCHAR COMMENT '字段1注释',  filed2 VARCHAR COMMENT '字段2注释',  ...) with (  type = 'ut',  topic = 's_ut',  filterList = 'app_bu=''TMYP''', -- 业务标记  nullValues = '\\N|',  maxFetchSize = '100');



可以看到整个定义语句和标准的 SQL DDL 语法基本类似,数据类型是保持了一致的。with 后面可以跟上各个数据源表所特有的配置字段,如这里的 maxFetchSize 表示一次从数据源中取出的数据条数。


同理目标表的定义大致如下:


CREATE TABLE sls_tmyp (  filed1 VARCHAR COMMENT '字段1注释',  filed2 VARCHAR COMMENT '字段2注释',  ...) WITH (  type = 'sls',  endPoint = '阿里云SLS服务地址',  project = 'SLS空间名',  logStore = 'SLS日志库名');


需要注意的是,Blink 本身不带有数据存储功能,这里的表创建仅是动态表、外部数据表的引用声明,用来描述所处理的数据的结构(字段)。



在定义好源表和目标表后,接下来就是数据处理过程。如之前介绍,Blink 支持标准的 DQL 语句,同时提供大量函数供数据处理使用:

  1. 窗口函数:如需统计每分钟接口调用成功率,可以通过定义一个窗口来收集1分钟内的数据,再对该窗口内的数据进行实时计算。
  2. 内置函数:包括字符串函数、数字函数、日期函数、逻辑函数、条件函数、表值函数、类型转换函数、聚合函数等。
  3. 自定义函数(UDF):如果上述函数无法满足需求,也可以通过编码方式进行扩展,实现自定义处理逻辑。


和标准 SQL 类似,Blink 也推荐通过创建视图(View)来辅助计算,使逻辑表达更清晰。

CREATE VIEW v_yp_api_rate ASSELECT  TUMBLE_END(时间字段, INTERVAL '1' MINUTE) as `time` -- 定义时间窗口,接下来的数据都是在该时间窗口内的
  -- 支持 + - * / 操作,如计算接口成功率可通过 sum(成功数) / sum(调用总数) 实现。  ...FROM  s_utWHERE  os = 'android'  -- 如过滤出Android设备的数据


经过各种过滤和函数处理后得到的结果集可以通过 INSERT 语句将数据插入到最终的目标表中,大致编码如下:

INSERT  INTO sls_tmypSELECT  字段1,  字段2,  ...FROM  v_yp_api_rate;


如此我们就得到端上分钟级的接口成功率数据,回顾整个流式处理任务过程和普通 SQL 操作相差无几,基本没有太高的开发门槛。通常端上所涉及的数据包括:

  1. 网络侧:接口成功率、耗时、失败原因;WebView 资源下载次数(缓存利用率)等;
  2. 容器侧:H5 页面加载时长、曝光次数、加载失败(证书错误、HTTP错误)、页面降级、Hybrid 接口调用等;
  3. 性能侧:CPU、内存状况;网络断连;关键场景耗时统计等。


由此基本囊括了端侧所面对的核心应用场景,通过将数据导入到报表系统中,能够可视化的观察各个场景的变化情况。同时还可以针对核心数据指标设置阈值进行环比,能够很明显的察觉到线上的异常波动。配合钉钉、邮件、短信等推送工具,可以及时将发现的问题告知到相关负责人进行排查处理。前后的整体联动,仿佛为我们开启了上帝视角,整个流程体系也成为端侧稳定性保障的基石。

image.png


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
91 4
|
2月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
165 1
|
26天前
|
存储 消息中间件 分布式计算
Cisco WebEx 数据平台:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 在 Cisco 的改造实践
Cisco WebEx 早期数据平台采用了多系统架构(包括 Trino、Pinot、Iceberg 、 Kyuubi 等),面临架构复杂、数据冗余存储、运维困难、资源利用率低、数据时效性差等问题。因此,引入 Apache Doris 替换了 Trino、Pinot 、 Iceberg 及 Kyuubi 技术栈,依赖于 Doris 的实时数据湖能力及高性能 OLAP 分析能力,统一数据湖仓及查询分析引擎,显著提升了查询性能及系统稳定性,同时实现资源成本降低 30%。
Cisco WebEx 数据平台:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 在 Cisco 的改造实践
|
21天前
|
机器学习/深度学习 人工智能 运维
智能化运维:AI与大数据在IT运维中的应用探索####
本文旨在探讨人工智能(AI)与大数据分析技术如何革新传统IT运维模式,提升运维效率与服务质量。通过具体案例分析,揭示AI算法在故障预测、异常检测及自动化修复等方面的实际应用成效,同时阐述大数据如何助力实现精准运维管理,降低运营成本,提升用户体验。文章还将简要讨论实施智能化运维面临的挑战与未来发展趋势,为IT管理者提供决策参考。 ####
|
1月前
|
机器学习/深度学习 存储 大数据
云计算与大数据技术的融合应用
云计算与大数据技术的融合应用
|
1月前
|
边缘计算 人工智能 搜索推荐
大数据与零售业:精准营销的实践
【10月更文挑战第31天】在信息化社会,大数据技术正成为推动零售业革新的重要驱动力。本文探讨了大数据在零售业中的应用,包括客户细分、个性化推荐、动态定价、营销自动化、预测性分析、忠诚度管理和社交网络洞察等方面,通过实际案例展示了大数据如何帮助商家洞悉消费者行为,优化决策,实现精准营销。同时,文章也讨论了大数据面临的挑战和未来展望。
|
2月前
|
存储 分布式计算 druid
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
74 1
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
ly~
|
2月前
|
供应链 搜索推荐 安全
大数据模型的应用
大数据模型在多个领域均有广泛应用。在金融领域,它可用于风险评估与预测、智能营销及反欺诈检测,助力金融机构做出更加精准的决策;在医疗领域,大数据模型能够协助疾病诊断与预测、优化医疗资源管理和加速药物研发;在交通领域,该技术有助于交通流量预测、智能交通管理和物流管理,从而提升整体交通效率;电商领域则借助大数据模型实现商品推荐、库存管理和价格优化,增强用户体验与企业效益;此外,在能源和制造业中,大数据模型的应用范围涵盖从需求预测到设备故障预测等多个方面,全面推动了行业的智能化转型与升级。
ly~
203 2
ly~
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
大数据在智慧金融中的应用
在智能算法交易中,深度学习揭示价格波动的复杂动力学,强化学习依据市场反馈优化策略,助力投资者获取阿尔法收益。智能监管合规利用自然语言处理精准解读法规,实时追踪监管变化,确保机构紧跟政策。大数据分析监控交易,预警潜在违规行为,变被动防御为主动预防。数智化营销通过多维度数据分析,构建细致客户画像,提供个性化产品推荐。智慧客服借助 AI 技术提升服务质量,增强客户满意度。
ly~
159 3
ly~
|
2月前
|
供应链 搜索推荐 大数据
大数据在零售业中的应用
在零售业中,大数据通过分析顾客的购买记录、在线浏览习惯等数据,帮助零售商理解顾客行为并提供个性化服务。例如,分析网站点击路径以了解顾客兴趣,并利用历史购买数据开发智能推荐系统,提升销售和顾客满意度。此外,大数据还能优化库存管理,通过分析销售数据和市场需求,更准确地预测需求,减少库存积压和缺货现象,提高资金流动性。
ly~
481 2