腾讯云大数据实战案例

[亡魂溺海] 提交于 2020-11-05 01:48:34

内容来源:2017年5月20日,腾讯高级软件工程师吴友强在“中生代技术沙龙系列之互联网大数据”进行《腾讯云大数据实战》演讲分享。IT 大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:1954 | 3分钟阅读

嘉宾演讲视频回顾及PPT,请点击:http://t.cn/RgMHJEC

摘要

腾讯云是腾讯公司倾力打造的面向广大企业和个人的公有云平台。腾讯高级软件工程师吴友强将为我们分享大数据在腾讯云的实践。

一、TDF(数据工坊)简介

TDF简介

源于腾讯云数智大数据套件的轻量云上大数据产品,提供基于SQL的大数据计算框架。

适用于需要动态灵活获取大数据计算能力进行批量计算、日志处理或数据仓库应用的场景。

因为公有云上的用户需要简单,所以要有一个可视化的集成开发环境,在这环境中可以进行数据血缘管理、工程/工作流管理、用户管理和告警/日志。通过一些工具把数据导入到数据存储里面,然后对数据进行处理,最终输出数据。下层的任务和资源调度是用来调度用户的任务在各个资源上运行起来。底层就是腾讯云的基础设施。

二、CDP(数据管道)实现详解

CDP整体架构-设计

上图是我们刚开始在开发之前做的设计。最左边有很多客户的数据点,比如log、DB Binlog、自建的Kafka以及自定义数据。我们会利用一些工具开发一个Flume插件,帮助它把数据上云。

数据到达中间部分,对数据进行校验和处理。处理完成后根据用户的需求通过插件的方式实时导入到TDF、COS或者其它存储里面。

CDP整体架构-目前

上图是目前我们已经实施的工作。我们自己开发了一个Flume插件,把数据实时发送到腾讯公有云的数据接收器endpoint上。数据接收器会根据用户的选择来决定用Kafka还是CKafka。CKafka也是腾讯云内部自行研发的一套兼容转换协议的消息系统,基于C++开发,性能方面会比原生的提升很多。把数据导入到Nifi里进行二次开发,最终导到Hive中。

Flume简介

FlumeNG是一个分布式、可靠、可用的系统。它能够将不同数据源的海量日志进行高效收集、聚合、移动,最后存储到一个中心化数据存储系统中。由原来的Flume OG到现在的Flume NG,进行了架构重构,并且现在NG版本完全不兼容原来的OG版本。经过架构重构后,Flume NG更像是一个轻量级的小工具,非常简单,容易适应各种方式日志收集,并支持failover和负载均衡。

Flume的架构主要有一下几个核心概念:

Event:一个数据单元,带有一个可选的消息头。

Flow:Event从源点到达目的点的迁移的抽象。

Client:操作位于源点处的Event,将其发送到Flume Agent。

Agent:一个独立的Flume进程,包含组件Source、Channel、Sink。

Source:用来消费传递到该组件的Event。

Channel:中转Event的一个临时存储,保存有Source组件传递过来的Event。

Sink:从Channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent(如果有的话)。

Flume插件

Flume支持插件开发,最简单的方法就是直接拷贝已有插件进行改造。

我们提供的endpoint需要权限验证,主要是基于腾讯云的一些帐号,通过这个方式可以实时地在客户端进行加密或格式化的存储。

首先我们是多用户的系统,其次要防止用户数据量过大。通过数据大小限制能够满足90%以上的用户需求,而对于数据大小的限制是根据自身配置来决定的。

在传输过程中我们采用了一些自定义的协议,这个协议基于avro进行格式化,主要是便于对数据进行序列化和反序列化。

Kafka客户端改造支持CKafka

CKafka(Cloud Kafka)是一个分布式的、高吞吐量、高可扩展性的消息系统,100%兼容开源 Kafka API(0.9版本)。Ckafka 基于发布/订阅模式,通过消息解耦,使生产者和消费者异步交互,无需彼此等待。Ckafka 具有数据压缩、同时支持离线和实时数据处理等优点,适用于日志压缩收集、监控数据聚合等场景。

CKafka主要开放给公有云上的部分VIP用户使用,VIP只能绑定对应的虚拟机,这样保证了它的安全性。但我们是直接使用内网IP访问的,所以我们需要调整客户端的交互协议,通过某种手段把VIP替换成真实的IP,以保证数据的通畅。还有自定义的管理API和封装Java SDK。

NiFi

ApacheNiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计。它支持强大且可高度配置的基于有向图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。Apache NiFi原来是NSA的一个项目,现在开源出来,由Apache基金会进行管理。

主要特性:

基于web的用户界面:无缝体验设计、控制和监控。

高度可配置:数据丢失容错和保证交付;低延迟和高吞吐量;动态优先级;流可以在运行时修改;背压(Back presure)。

数据来源:从始至终跟踪数据流。

为扩展设计:构建自己数据处理器;支持快速开发和有效的测试。

安全:支持SSL、SSH、HTTPS加密内容等等;多租户授权和内部授权/策略管理。

Hive插件

获取元数据:获取Hive表结构信息,是否支持Streaming API写入。

数据写入:insert插入,支持多分区批量插入;支持streaming;可以直接写hdfs。

CDP未来?

1、支持etl功能,对前端进行分组和做一些实时的计算。

2、支持实时的计算和分析。用户需要可以直接拿到结构去在前端进行展示,而不是再到其它系统上去做计算和分析。

3、支持实时SQL。实时计算对部分用户来说使用成本可能会更高,大部分做数据统计的人员对SQL的掌握度会更高。实时SQL是对数据进行SQL的查询计算。

4、可视化图像操作界面。用户的需求越来越多样化,腾讯云上的很多产品都需要用到数据来做,我们希望以这种方式让用户可以自己选择数据源。

我今天的分享就到这里,感谢聆听!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!