以GitHub公开事件数据为例,通过使用Flink、Hologres构建实时数仓,实现海量数据实时分析
搭建实时数仓时,Flink可对待处理数据进行实时清洗,完成后Hologres可直接读取Flink中的数据,示例架构如图所示。
一、实践步骤
1、创建专有网络VPC和交换机
登录专有网络管理控制台,单击专有网络。
在创建专有网络页⾯,根据下方参数说明配置1个专有网络(VPC)和2台交换机,然后单击确定。
2、创建实时数仓Hologres
在实例列表页面,等待运行状态变为运行正常,即可正常使用。
3、创建对象存储OSS
登录对象存储OSS控制台,单击Bucket列表。
4、创建实时计算Flink
先领取资源抵扣包。
购买Flink实例
在实时计算控制台Flink全托管页签,刷新页面查看工作空间状态,当工作空间状态为运行中时,即可进入下一步。
5、创建Hologres内部表
1、在实例详情页面,单击登录实例,进入HoloWeb
2、在元数据管理页签,单击新建库
3、在SQL编辑器页面,单击左上⻆的image图标,新建SQL查询。
6、通过Flink实时写入数据至Hologres
1、选择运维中心 > Session管理。在Session集群页面,单击创建Session集群。
2、在集群总览页签,当Session集群状态(页面上方集群名称旁边)从启动中变为运行中。
3、创建SQL作业。在左侧导航栏,选择数据开发 > ETL
4、在作业页面右上角,单击部署。
5、在作业运维页面,单击目标作业右侧操作列下的启动。
状态变为运行中时,表示您成功启动作业。
7、查询实时数据
1、切换至Hologres的SQL编辑器页签。
2、在Hologres中通过内部表查询今日最活跃项目。
在临时Query查询页签,执行如下命令,查询今日最活跃项目。
SELECT
repo_name,
COUNT(*) AS events
FROM
hologres_dataset_github_event.hologres_github_event
WHERE
created_at >= CURRENT_DATE
GROUP BY
repo_name
ORDER BY
events DESC
LIMIT 5;
8、清理资源
1、登录实时计算控制台。
在页面顶部菜单栏中,地域切换至华东2(上海),然后选择目标工作空间右侧操作列下的更多 > 释放资源。
2、登录Hologres控制台。
在页面右上角,地域切换至华东2(上海),然后在左侧导航栏中,单击实例列表。
3、登录对象存储OSS控制台。删除Bucket。
4、登录AccessKey管理。删除阿里云AccessKey。先禁用再删除。
5、登录专有网络,删除VPC及交换机。先删除交换机再删除VPC。
二、实践总结
在通过Flink和Hologres构建实时数仓,并实现海量数据实时分析的场景下,针对以下几个方面:
1、 数据开发运维体验:
- 实时数据清洗:Flink能够对待处理的GitHub事件数据进行实时清洗,确保数据的准确性和一致性。
- 高效数据读取:Hologres能够直接读取Flink中的数据,无需额外的数据转换或传输步骤,从而提高了数据处理效率。
- 易于维护和扩展:基于Flink和Hologres的解决方案易于维护和扩展,可以随着数据量的增长和业务需求的变化进行灵活调整。
2、成本与收益
1) 成本:
- 硬件成本:由于Flink版是全托管产品,因此无需担心硬件采购和维护成本。
- 运维成本:全托管服务降低了运维成本,因为阿里云会负责产品的运维和升级工作。
- 学习成本:对于熟悉Flink和Hologres的开发人员来说,学习成本相对较低。但对于新手来说,可能需要一定的时间来熟悉和掌握这些工具。
2) 收益:
- 提高数据处理效率:实时计算Flink版能够显著提高数据处理效率,确保数据的实时性和准确性。
- 降低延迟:通过实时数仓的搭建,可以显著降低数据处理的延迟,从而更快地响应业务需求。
- 提升业务决策能力:基于实时数据的分析能够为企业提供更准确的业务洞察和决策支持。
3、产品改进与功能拓展
- 支持更多数据源:推出Flink对更多数据源的支持,以满足不同业务场景的需求。
- 增强可视化能力:可以开发更加直观和易用的可视化工具,帮助用户更好地理解数据和分析结果,无须使用第三方工具来展示。
4、与其他产品的联动组合
- 与Kafka等消息队列产品联动:可以将Kafka作为数据源的入口,通过Flink实时处理数据后写入Hologres进行存储和分析。
- 与机器学习平台/大模型联动:可以将Flink处理后的数据输入到机器学习平台/大模型中进行训练和预测,以实现更加智能化的业务决策。