腾讯云大数据产品研发实战(由IT大咖说整理)

一、TDF(数据工坊)简介

TDF简介

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

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

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

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

CDP整体架构–设计

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

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

CDP整体架构–目前

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

Flume简介

Flume NG是一个分布式、可靠、可用的系统。它能够将不同数据源的海量日志进行高效收集、聚合、移动,最后存储到一个中心化数据存储系统中。由原来的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

Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。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、可视化图像操作界面。用户的需求越来越多样化,腾讯云上的很多产品都需要用到数据来做,我们希望以这种方式让用户可以自己选择数据源。

今天主要给大家带来的分享就是这些,谢谢大家!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

2016 年 7 个最佳的 Java 框架

毫无疑问,Java是目前最需要的编程语言之一。在这里,我们已经挖掘了一些关于框架趋势的有用信息,以减轻全球软件开发人员的日常工作。

1121
来自专栏架构师之路

数据库读写分离架构,为什么我不喜欢

RD:单库数据量太大,数据库扛不住了,我要申请一个数据库从库,读写分离。 DBA:数据量多少? RD:5000w左右。 DBA:读写吞吐量呢? RD:读QPS约...

84712
来自专栏架构师之路

如何防止根目录被删?

周末误删根目录《就这样把根目录删了!!!》,引起了广泛的讨论: (1)部分朋友表达了同情 (2)部分朋友建议买机票跑路 (3)部分朋友分享了类似的悲剧(例如:多...

3646
来自专栏微信公众号:Java团长

2016 年 7 个最佳的 Java 框架

毫无疑问,Java是目前最需要的编程语言之一。在这里,我们已经挖掘了一些关于框架趋势的有用信息,以减轻全球软件开发人员的日常工作。

1632
来自专栏NetCore

微信快速开发框架(七)--发送客服信息,版本更新至V2.2 代码已更新至github

在V2版本发布的博文中,已经介绍了大多数Api的用法,同时也收到了很多意见,其中发布了几个修正版本,修改了几个bug,在此感谢大家的使用,有了大家的支持,相信快...

2067
来自专栏Python中文社区

Django 博客教程:前言和环境安装(连载一)

專 欄 ❈追梦人物,电子科技大学计算机学院研究生,从事大数据分析研究方向。主要使用 Python 语言进行相关数据的分析,熟练使用 django 开发网站系统。...

2338
来自专栏FreeBuf

全能型反汇编引擎 – Capstone-Engine

Capstone是一个轻量级的多平台多架构支持的反汇编框架。支持包括ARM,ARM64,MIPS和x86/x64平台。今天1.0版本正式向公众开放下载,可以在h...

3345
来自专栏cloudskyme

模块化服务规范——OSGI

什么是OSGI OSGi(Open Service Gateway Initiative)有双重含义。一方面它指OSGi Alliance组织;另一方面指该组织...

5123
来自专栏阮一峰的网络日志

Twitter同步新浪微博的一个解决方案

国内的微博服务之中,新浪和腾讯的市场份额最大。 但是,它们的平台比较封闭,不提供Feed输出,而且存在强行删除用户发言、关闭用户帐号的情况。所以,我一直以来都使...

4287
来自专栏企鹅号快讯

公众号+增量爬虫开发分享

第一节 开发这个公众号,主要是来自微信公众后台朋友的提问,有个朋友的问题真的很有意思,他问爬虫能干什么,能不能举个例子。我现在想说朋友,我已经回答你了,爬虫主要...

3128

扫码关注云+社区

领取腾讯云代金券