专栏首页技巅腾讯云大数据产品研发实战(由IT大咖说整理)

腾讯云大数据产品研发实战(由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 条评论
登录 后参与评论

相关文章

  • 大数据实战技术之开篇-学习实践环境搭建

    技巅
  • 传统企业打造互联网技术团队

    技巅
  • 开源软件实践之linux高性能服务器编程框架和选型

    技巅
  • 腾讯 SNG 监控数据的创新应用

    本文将向大家分享SNG监控十年来变革背后的驱动因素和立体化的监控方案,最后给大家展示最新的智能监控的应用场景。

    织云平台团队
  • Kubelet 中的 “PLEG is not healthy” 到底是个什么鬼?

    在 Kubernetes 社区中,PLEG is not healthy 成名已久,只要出现这个报错,就有很大概率造成 Node 状态变成 NotReady。社...

    米开朗基杨
  • 大数据安全分析

    一、引言 单纯的防御措施无法阻止蓄意的攻击者,这已经是大家都认同的事实,应对挑战业界有了诸多方面的探索和实践,而其中最有趣的就非安全分析莫属了,围绕着...

    腾讯研究院
  • python3.x操作csv文件的实战

    python3.x集成了对csv文件的操作,直接引入包即可,但python2.x则需要单独安装。

    py3study
  • Bilibili (B站)200万用户数据爬取与分析(附源码)

    该爬虫仅供学习使用 B站用户爬虫 B站视频爬虫 B站弹幕下载器 文件介绍 bilibili_user.py:爬虫文件 bilibili_user_inf...

    机器学习AI算法工程
  • Linux 系统操作

    查看相关命令、相关文件等的使用手册。Ctrl+f 上一页,Ctrl+b 下一页,Ctrl+Home 第一页,Ctrl+End 最后一页,q 退出回到终端

    Chor
  • 如何发现内部威胁

    之前,爱德华·斯诺登(Edward Snowden)的第一次曝光事件出现时,这是关于隐私和监视辩论的分水岭。对于数据安全行业,他的行为表明内部威胁仍然难以检测和...

    双愚

扫码关注云+社区

领取腾讯云代金券