热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

新一代大数据技术架构

在讲新一代大数据技术架构前,先讲下大数据特征与大数据技术要解决的问题。1.大数据特征:“大量化(Volume)、多样化(Variety)、快速化(Ve

在讲新一代大数据技术架构前,先讲下大数据特征与大数据技术要解决的问题。

1.大数据特征:“大量化(Volume)、多样化(Variety)、快速化(Velocity)、价值密度低(Value)”就是“大数据”显著的4V特征,或者说,只有具备这些特点的数据,才是大数据。


2.大数据技术要解决的问题:大数据技术被设计用于在成本可承受的条件下,通过非常快速(velocity)地采集、发现和分析,从大量(volumes)、多类别(variety)的数据中提取价值(value),将是IT领域新一代的技术与架构。


介绍了大数据的特性及大数据技术要解决的问题,我们先看看新一代大数据技术架构的数据流架构图:


从这张图中,可以了解到大数据处理过程可以分为数据源、数据接入、数据清洗、数据缓存、存储计算、数据服务、数据消费等环节,每个环节都有具有高可用性、可扩展性等特性,都为下一个节点更好的服务打下基础。整个数据流过程都被数据质量监控系统监控,数据异常自动预警、告警。

新一代大数据整体技术架构如图:

将大数据计算分为实时计算与离线计算,在整个集群中,奔着能实时计算的,一定走实时计算流处理,通过实时计算流来提高数据的时效性及数据价值,同时减轻集群的资源使用率集中现象。

整体架构从下往上解释下每层的作用:

数据实时采集:

主要用于数据源采集服务,从数据流架构图中,可以知道,数据源分为前端日志,服务端日志,业务系统数据。下面讲解数据是怎么采集接入的。

a.前端日志采集接入:

前端日志采集要求实时,可靠性,高可用性等特性。技术选型时,对开源的数据采集工具flume,scribe,chukwa测试对比,发现基本满足不了我们的业务场景需求。所以,选择基于kafka开发一套数据采集网关,来完成数据采集需求。数据采集网关的开发过程中走了一些弯路,最后采用nginx+lua开发,基于lua实现了kafka生产者协议。有兴趣同学可以去Github上看看,另一同事实现的,现在在github上比较活跃,被一些互联网公司应用于线上环境了。

b.后端日志采集接入:

FileCollect,考虑到很多线上环境的环境变量不能改动,为减少侵入式,目前是采用Go语言实现文件采集,年后也准备重构这块。

前端,服务端的数据采集整体架构如下图:




c.业务数据接入

利用Canal通过MySQL的binlog机制实时同步业务增量数据。

数据统一接入:为了后面数据流环节的处理规范,所有的数据接入数据中心,必须通过数据采集网关转换统一上报给Kafka集群,避免后端多种接入方式的处理问题。

数据实时清洗(ETL):为了减轻存储计算集群的资源压力及数据可重用性角度考虑,把数据解压、解密、转义,部分简单的补全,异常数据处理等工作前移到数据流中处理,为后面环节的数据重用打下扎实的基础(实时计算与离线计算)。

数据缓存重用:为了避免大量数据流(400+亿条/天)写入HDFS,导致HDFS客户端不稳定现象及数据实时性考虑,把经过数据实时清洗后的数据重新写入Kafka并保留一定周期,离线计算(批处理)通过KG-Camus拉到HDFS(通过作业调度系统配置相应的作业计划),实时计算基于Storm/JStorm直接从Kafka消费,有很完美的解决方案storm-kafka组件。

离线计算(批处理):通过spark,spark SQL实现,整体性能比hive提高5—10倍,hive脚本都在转换为Spark/Spark SQL;部分复杂的作业还是通过Hive/Spark的方式实现。在离线计算中大部分公司都会涉及到数据仓库的问题,酷狗音乐也不例外,也有数据仓库的概念,只是我们在做存储分层设计时弱化了数据仓库概念。数据存储分层模型如下图:


大数据平台数据存储模型分为:数据缓冲层Data Cache Layer(DCL)、数据明细层Data Detail Layer(DDL)、公共数据层(Common)、数据汇总层Data Summary Layer(DSL)、数据应用层Data Application Layer(DAL)、数据分析层(Analysis)、临时提数层(Temp)。

1)数据缓冲层(DCL):存储业务系统或者客户端上报的,经过解码、清洗、转换后的原始数据,为数据过滤做准备。

2)数据明细层(DDL):存储接口缓冲层数据经过过滤后的明细数据。

3)公共数据层(Common):主要存储维表数据与外部业务系统数据。

4)数据汇总层(DSL):存储对明细数据,按业务主题,与公共数据层数据进行管理后的用户行为主题数据、用户行为宽表数据、轻量汇总数据等。为数据应用层统计计算提供基础数据。数据汇总层的数据永久保存在集群中。

5)数据应用层(DAL):存储运营分析(Operations Analysis )、指标体系(Metrics System)、线上服务(Online Service)与用户分析(User Analysis)等。需要对外输出的数据都存储在这一层。主要基于热数据部分对外提供服务,通过一定周期的数据还需要到DSL层装载查询。

6)数据分析层(Analysis):存储对数据明细层、公共数据层、数据汇总层关联后经过算法计算的、为推荐、广告、榜单等数据挖掘需求提供中间结果的数据。

7)临时提数层(Temp):存储临时提数、数据质量校验等生产的临时数据。

实时计算:基于Storm/JStorm,Drools,Esper。主要应用于实时监控系统、APM、数据实时清洗平台、实时DAU统计等。

HBase/MySQL:用于实时计算,离线计算结果存储服务。

Redis:用于中间计算结果存储或字典数据等。

Elasticsearch:用于明细数据实时查询及HBase的二级索引存储(这块目前在数据中心还没有大规模使用,有兴趣的同学可以加入我们一起玩ES)。

Druid:目前用于支持大数据集的快速即席查询(ad-hoc)。

数据平台监控系统:数据平台监控系统包括基础平台监控系统与数据质量监控系统,数据平台监控系统分为2大方向,宏观层面和微观层面。宏观角度的理解就是进程级别,拓扑结构级别,拿Hadoop举例,如:DataNode,NameNode,JournalNode,ResourceManager,NodeManager,主要就是这5大组件,通过分析这些节点上的监控数据,一般你能够定位到慢节点,可能某台机器的网络出问题了,或者说某台机器执行的时间总是大于正常机器等等这样类似的问题。刚刚说的另一个监控方向,就是微观层面,就是细粒度化的监控,基于user用户级别,基于单个job,单个task级别的监控,像这类监控指标就是另一大方向,这类的监控指标在实际的使用场景中特别重要,一旦你的集群资源是开放给外面的用户使用,用户本身不了解你的这套机制原理,很容易会乱申请资源,造成严重拖垮集群整体运作效率的事情,所以这类监控的指标就是为了防止这样的事情发生。目前我们主要实现了宏观层面的监控。如:数据质量监控系统实现方案如下。




引用博文:http://www.infoq.com/cn/articles/kugou-big-data-platform-restructure/



推荐阅读
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 【系统架构师精讲】(16):操作系统核心概念——寄存器、内存与缓存机制详解
    在计算机系统架构中,中央处理器(CPU)内部集成了多种高速存储组件,用于临时存储指令、数据和地址。这些组件包括指令寄存器(IR)、程序计数器(PC)和累加器(ACC)。寄存器作为集成电路中的关键存储单元,由触发器构成,具备极高的读写速度,使得数据传输非常迅速。根据功能不同,寄存器可分为基本寄存器和移位寄存器,各自在数据处理中发挥重要作用。此外,寄存器与内存和缓存机制的协同工作,确保了系统的高效运行。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • 探究大数据环境下Kafka实现高性能的几个关键因素
    在大数据环境下,Kafka能够实现高性能的关键因素在于其独特的设计和优化策略。尽管Kafka的消息存储在磁盘上,这通常被认为会降低性能,但通过高效的文件管理和批量处理机制,Kafka能够在高吞吐量和低延迟之间取得平衡。此外,Kafka还利用了零拷贝技术、压缩算法和异步IO等手段,进一步提升了系统的整体性能。这些技术不仅保证了数据的可靠性和持久性,还使得Kafka成为处理大规模实时数据流的理想选择。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
author-avatar
好kc好先生之家
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有