大数据平台架构浅析——以讯飞大数据平台Odeon为例

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 文章目录大数据平台架构解析——以讯飞大数据平台Odeon为例定义功能数据采集数据开发数据分析数据编程补充

大数据平台架构解析——以讯飞大数据平台Odeon为例

定义

Odeon大数据平台以全图形化Web操作的形式为用户提供一站式的大数据能力:包括数据采集、任务编排、调度及处理、数据展现(BI)等;同时提供完善的权限管理、日志追踪、集群监控等能力


功能

数据通道:SQL、NoSql数据库及日志多源数据接入与导出


数据管理:完善的元数据管理、数据质量标准管理体系,同时具备完整的数据隔离及授权机制


数据分析:支持离线批处理、流式计算、OLAP、AdHoc等多种计算方式


数据服务:基于Greenplum和Kylin的数据服务架构,提供DaaS(数据即服务)服务


调度管理:可视化工作流构建,基于Time、Event等触发机制,全程状态监控


可视化运维:物理集群、分析作业、工作流、资源使用情况等全方位可视化监控及告警


快速部署:平台开发及部署采用业界主流DevOps模式,全组件镜像化,实现快速部署运维

image.png

(以上均来自讯飞官网的定义;)

总的来说——主要的也就是

  • 数据采集,
  • 数据开发,
  • 数据分析,
  • 数据编程
  • image.png

数据采集

主要分为结构化通道和日志通道;

结构化:包含一些常用的关心型数据库,例如:MySQL,Oracle;还有k-v的MongoDB 等等。

日志:一些业务上产生的锚点产生的数据等等。

image.png

数据开发

Apache Oozie是Hadoop工作流调度框架。它是一个运行相关的作业工作流系统。这里,用户被允许创建向非循环图工作流程,其可以在并列 Hadoop 并顺序地运行。


它由两部分组成:


工作流引擎:一个工作流引擎的职责是存储和运行工作流程,由 Hadoop 作业组成:MapReduce, Pig, Hive.

协调器引擎:它运行基于预定义的时间表和数据的可用性工作流程作业。

Oozie可扩展性和可管理及时执行成千上万的工作流程(每个由几十个作业)的Hadoop集群。


Oozie 也非常灵活。人们可以很容易启动,停止,暂停和重新运行作业。Oozie 可以很容易地重新运行失败的工作流。可以很容易重做因宕机或故障错过或失败的作业。甚至有可能跳过一个特定故障节点。

image.png

支持Oozie编辑器,可以通过仪表板提交和监控Workflow、Coordinator和Bundle


Oozie是管理hadoop作业的调度系统


Oozie的工作流作业是一系列动作的有向无环图(DAG)


Oozie协调作业是通过 时间(频率) 和有效数据触发当前的Oozie工作流程


Oozie支持各种hadoop作业,例如:


java mapreduce、Streaming mapreduce、hive、sqoop和distcp(分布式拷贝)等等,也支持系统特定的作业,例如java程序和shell脚本。


Oozie是一个可伸缩,可靠和可拓展的系统


默认基于轻量级sqlite数据库管理会话数据,用户认证和授权,可以自定义为MySQL、Postgresql,以及Oracle


基于文件浏览器(File Browser)访问HDFS


基于Hive编辑器来开发和运行Hive查询


支持基于Solr进行搜索的应用,并提供可视化的数据视图,以及仪表板(Dashboard)


支持基于Impala的应用进行交互式查询


支持Spark编辑器和仪表板(Dashboard)


支持Pig编辑器,并能够提交脚本任务


支持Oozie编辑器,可以通过仪表板提交和监控Workflow、Coordinator和Bundle


Oozie是管理hadoop作业的调度系统


Oozie的工作流作业是一系列动作的有向无环图(DAG)


Oozie协调作业是通过**时间(频率)**和有效数据触发当前的Oozie工作流程


Oozie支持各种hadoop作业,例如:


java mapreduce、Streaming mapreduce、hive、sqoop和distcp(分布式拷贝)等等,也支持系统特定的作业,例如java程序和shell脚本。


Oozie是一个可伸缩,可靠和可拓展的系统


支持HBase浏览器,能够可视化数据、查询数据、修改HBase表


特性


不支持复杂的事务,只支持行级事务,即单行数据的读写都是原子性的;

由于是采用 HDFS 作为底层存储,所以和 HDFS 一样,支持结构化、半结构化和非结构化的存储;

支持通过增加机器进行横向扩展;

支持数据分片;

支持 RegionServers 之间的自动故障转移;

易于使用的 Java 客户端 API;

支持 BlockCache 和布隆过滤器;

举个例子


RowKey 为行的唯一标识,所有行按照 RowKey 的字典序进行排序;

该表具有两个列族,分别是 personal 和 office;

其中列族 personal 拥有 name、city、phone 三个列,列族 office 拥有 tel、addres 两个列。

image.png

特点


容量大:一个表可以有数十亿行,上百万列;

面向列:数据是按照列存储,每一列都单独存放,数据即索引,在查询时可以只访问指定列的数据,有效地降低了系统的 I/O 负担;

稀疏性:空 (null) 列并不占用存储空间,表可以设计的非常稀疏 ;

数据多版本:每个单元中的数据可以有多个版本,按照时间戳排序,新的数据在最上面;

存储类型:所有数据的底层存储格式都是字节数组 (byte[])。

Phoenix


Phoenix 是 HBase 的开源 SQL 中间层,它允许你使用标准 JDBC 的方式来操作 HBase 上的数据。在 Phoenix 之前,如果你要访问 HBase,只能调用它的 Java API,但相比于使用一行 SQL 就能实现数据查询,HBase 的 API 还是过于复杂。


Phoenix 的理念是 we put sql SQL back in NOSQL,即你可以使用标准的 SQL 就能完成对 HBase 上数据的操作。


同时这也意味着你可以通过集成 Spring Data JPA 或 Mybatis 等常用的持久层框架来操作 HBase。


其次 Phoenix 的性能表现也非常优异,Phoenix 查询引擎会将 SQL 查询转换为一个或多个 HBase Scan,通过并行执行来生成标准的 JDBC 结果集。它通过直接使用 HBase API 以及协处理器和自定义过滤器,可以为小型数据查询提供毫秒级的性能,为千万行数据的查询提供秒级的性能。同时 Phoenix 还拥有二级索引等 HBase 不具备的特性,因为以上的优点,所以 Phoenix 成为了 HBase 最优秀的 SQL 中间层。


支持Metastore浏览器,可以访问Hive的元数据,以及HCatalog


支持Job浏览器,能够访问MapReduce Job(MR1/MR2-YARN)


什么是job?

Job简单讲就是提交给spark的任务。

什么是stage?

Stage是每一个job处理过程要分为的几个阶段。

什么是task?

Task是每一个job处理过程要分几为几次任务。Task是任务运行的最小单位。最终是要以task为单位运行在executor中。

Job和stage和task之间有什么关系?

Job----> 一个或多个stage—> 一个或多个task

支持Job设计器,能够创建MapReduce/Streaming/Java Job


支持Sqoop 2编辑器和仪表板(Dashboard)


支持ZooKeeper浏览器和编辑器


支持MySql、PostGresql、Sqlite和Oracle数据库查询编辑器


使用sentry基于角色的授权以及多租户的管理.(Hue 2.x or 3.x)


数据分析

OLAP全称为在线联机分析应用,是一种对于多维数据分析查询的解决方案。典型的OLAP应用场景包括销售、市场、管理等商务报表,预算决算,经济报表等等。

最早的OLAP查询工具是发布于1970年的Express,然而完整的OLAP概念是在1993年由关系数据库之父EdgarF.Codd 提出,伴随而来的是著名的“twelvelaws of online analytical processing”. 1998年微软发布MicrosoftAnalysis Services,并且在早一年通过OLE DB for OLAP API引入MDX查询语言,2001年微软和Hyperion发布的XML forAnalysis 成为了事实上的OLAP查询标准。如今,MDX已成为与SQL旗鼓相当的OLAP 查询语言,被各家OLAP厂商先后支持。

OLAPCube是一种典型的多维数据分析技术,Cube本身可以认为是不同维度数据组成的dataset,一个OLAP Cube 可以拥有多个维度(Dimension),以及多个事实(Factor Measure)。用户通过OLAP工具从多个角度来进行数据的多维分析。通常认为OLAP包括三种基本的分析操作:上卷(rollup)、下钻(drilldown)、切片切块(slicingand dicing),原始数据经过聚合以及整理后变成一个或多个维度的视图。


传统OLAP根据数据存储方式的不同分为ROLAP(Relational OLAP)以及MOLAP(Multi-dimensionOLAP)


ROLAP 以关系模型的方式存储用作多维分析用的数据,优点在于存储体积小,查询方式灵活,然而缺点也显而易见,每次查询都需要对数据进行聚合计算,为了改善短板,ROLAP使用了列存、并行查询、查询优化、位图索引等技术


MOLAP 将分析用的数据物理上存储为多维数组的形式,形成CUBE结构。维度的属性值映射成多维数组的下标或者下标范围,事实以多维数组的值存储在数组单元中,优势是查询快速,缺点是数据量不容易控制,可能会出现维度爆炸的问题。


Apache kylin是一个开源的分布式分析引擎。它通过ANSI-SQL接口,提供基于hadoop的超大数据集(TB-PB级)的多维分析(OLAP)功能。


只需三步,kylin即可实现超大数据集上的亚秒级(sub-second latency)查询。


确定hadoop上一个星型模式(Star schema)的数据集。

构建数据立方体(Data cube)。

可通过ODBC, JDBC,RESTful API等接口在亚秒级的延迟内查询相关数据。

OLAP-Kylin是基于Apache Kylin定制的Odeon大数据平台上的一个开源OLAP引擎。它采用多维立方体预计算技术,可以将大数据的SQL查询速度提升到亚秒级别。相对于之前的分钟乃至小时级别的查询速度,亚秒级别速度是百倍到千倍的提升,改引擎为超大规模数据集上的交互式大数据分析打开了大门。


核心组件:


数据立方体构建引擎(Cube Build Engine):当前底层数据计算引擎支持MapReduce1、MapReduce2、Spark等。

Rest Server:当前kylin采用的ODBC, JDBC,RESTful API接口提供web服务。

查询引擎(Query Engine):REST Server接收查询请求后,解析sql语句,生成执行计划,然后转发查询请求到Hbase中,最后将结构返回给REST Server。

image.png 为什么引入kylin?

由于数据是基于hadoop分布式存储,所以比mysql的伸缩性好。

提供hadoop上超大数据规模( 百亿行级别的数据)的亚秒级(sub-second latency)SQL查询,相对于hive的离线分析,可做到实时查询。

可无缝整合其他BI工具,如Tableau, PowerBI,Excel。

image.png Apache kylin核心:Kylin的(OLAP) 引擎由元数据引擎、查询引擎、任务引擎、存储引擎组成。另外,它还有一个rest服务器对外提供查询请求的服务。


可扩展性:提供插件机制支持额外的特性和功能。


与其他系统的整合:可整合任务调度器,ETL工具、监控及告警系统。


驱动包(Drivers):提供ODBC、JDBC驱动支持与其他工具(如Tableau)的整合。

表(Table):表定义在hive中,是数据立方体(Data cube)的数据源,在build cube 之前,必须同步在 kylin中。

模型(model):模型描述了一个星型模式的数据结构,它定义了一个事实表(Fact Table)和多个查找表(Lookup Table)的连接和过滤关系。

立方体(Cube):它定义了使用的模型、模型中的表的维度(dimension)、度量(measure) ,一般指聚合函数,如:sum、count、average等)、如何对段分区( segments partition)、合并段(segments auto-merge)等的规则。

立方体段(Cube Segment):它是立方体构建(build)后的数据载体,一个 segment 映射hbase中的一张表,立方体实例构建(build)后,会产生一个新的segment,一旦某个已经构建的立方体的原始数据发生变化,只需刷新(fresh)变化的时间段所关联的segment即可。

作业(Job):对立方体实例发出构建(build)请求后,会产生一个作业。该作业记录了立方体实例build时的每一步任务信息。作业的状态信息反映构建立方体实例的结果信息。如作业执行的状态信息为RUNNING 时,表明立方体实例正在被构建;若作业状态信息为FINISHED ,表明立方体实例构建成功;若作业状态信息为ERROR ,表明立方体实例构建失败!作业的所有状态如下:

  1,NEW - This denotes one job has been just created.
  2,PENDING - This denotes one job is paused by job scheduler and waiting for resources.
  3,RUNNING - This denotes one job is running in progress.
  4,FINISHED - This denotes one job is successfully finished.
  5,ERROR - This denotes one job is aborted with errors.
  6,DISCARDED - This denotes one job is cancelled by end users.

当前Apache kylin构建(build)数据立方体,采用逐层算法(By Layer Cubing)。未来的发布中将采用快速立方体算法(Fast Cubing)。下面简单介绍一下逐层算法:

一个完整的数据立方体,由N-dimension立方体,N-1 dimension立方体,N-2维立方体,0 dimension立方体这样的层关系组成,除了N-dimension立方体,基于原数据计算,其他层的立方体可基于其父层的立方体计算。所以该算法的核心是N次顺序的MapReduce计算。

在MapReduce模型中,key由维度的组合的构成,value由度量的组合构成,当一个Map读到一个key-value对时,它会计算所有的子立方体(child cuboid),在每个子立方体中,Map从key中移除一个维度,将新key和value输出到reducer中。直到当所有层计算完毕,才完成数据立方体的计算


数据编程

Scala 、Java

SQL 见博文 https://hiszm.blog.csdn.net/article/details/119540143

前端使用的是hue作为web UI; 通过wappalyzer可以看出基本的部分组件

image.png Hue是一个Web应用(默认端口8888),用来简化用户和Hadoop集群的交互。


Hue技术架构,如下图所示,从总体上来讲,Hue应用采用的是B/S架构,hue是基于django框架开发,python作为底层语言。


大体上可以分为三层,分别是前端view层、Web服务层和Backend服务层。Web服务层和Backend服务层之间使用RPC((Remote Procedure Call)—远程过程调用)的方式调用。

image.png 为什么使用hue呢?由于大数据框架很多,为了解决某个问题,一般来说会用到多个框架,但是每个框架又都有自己的web UI监控界面,对应着不同的端口号。比如HDFS(50070)、YARN(8088)、MapReduce(19888)等。这个时候有一个统一的web UI界面去管理各个大数据常用框架是非常方便的。这就使得对大数据的开发、监控和运维更加的方便。

image.png image.png 

补充

  • 大数据全家桶
  • image.png
  • IaaS,PaaS,SaaS,DaaS

数据即服务(Data-as-a-Service,DaaS)是指与数据相关的任何服务都能够发生在一个集中化的位置,如聚合、数据质量管理、数据清洗等,然后再将数据提供给不同的系统和用户,而无需再考虑这些数据来自于哪些数据源。

image.png image.png DevOps:Developer Operations Engineering,开发运维工程师。


RPC

RPC:远程调用。通过RPC框架,使得我们可以像调用本地方法一样地调用远程机器上的方法:


1、本地调用某个函数方法


2、本地机器的RPC框架把这个调用信息封装起来(调用的函数、入参等),序列化(json、xml等)后,通过网络传输发送给远程服务器


3、远程服务器收到调用请求后,远程机器的RPC框架反序列化获得调用信息,并根据调用信息定位到实际要执行的方法,执行完这个方法后,序列化执行结果,通过网络传输把执行结果发送回本地机器


4、本地机器的RPC框架反序列化出执行结果,函数return这个结果

image.png image.png 

https://www.jianshu.com/p/849452eb80ab
https://www.xfyun.cn/solution/big-data-platform
http://gethue.com/
http://bh-lay.github.io/demos/vue/layout-editor/
https://blog.csdn.net/liangyihuai/article/details/54137163
http://huxiaoqiang.github.io/2016/07/17/hadoop%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA/
http://221.239.36.178/accounts/login/?next=%2Fodeon%2Fnotebook%2F%23%2Findex%2Fnotebook-list
https://www.oreilly.com/radar/bringing-interactive-bi-to-big-data/
https://fusioninsight.github.io/ecosystem/zh-hans/SQL_Analytics/Apache_Kylin_2.6.1/#_1
https://dxj1113.github.io/2017/07/17/Kylin%E5%88%9D%E6%8E%A2/
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
7天前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
|
1月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
90 1
|
1月前
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
57 3
|
7天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
【赵渝强老师】基于大数据组件的平台架构
|
1月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
25 9
|
1月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
65 1
|
1月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
5天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
3天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
4天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
14 1
服务架构的演进:从单体到微服务的探索之旅