最全大数据平台架构浅析——以讯飞大数据平台Odeon为例(1)

定义

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

功能
  • 数据通道:SQL、NoSql数据库及日志多源数据接入与导出
  • 数据管理:完善的元数据管理、数据质量标准管理体系,同时具备完整的数据隔离及授权机制
  • 数据分析:支持离线批处理、流式计算、OLAP、AdHoc等多种计算方式
  • 数据服务:基于Greenplum和Kylin的数据服务架构,提供DaaS(数据即服务)服务
  • 调度管理:可视化工作流构建,基于Time、Event等触发机制,全程状态监控
  • 可视化运维:物理集群、分析作业、工作流、资源使用情况等全方位可视化监控及告警
  • 快速部署:平台开发及部署采用业界主流DevOps模式,全组件镜像化,实现快速部署运维

img

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

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

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

在这里插入图片描述

数据采集

主要分为结构化通道和日志通道;
结构化:包含一些常用的关心型数据库,例如:MySQL,Oracle;还有k-v的MongoDB 等等。
日志:一些业务上产生的锚点产生的数据等等。

在这里插入图片描述

数据开发

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

它由两部分组成:

工作流引擎:一个工作流引擎的职责是存储和运行工作流程,由 Hadoop 作业组成:MapReduce, Pig, Hive.
协调器引擎:它运行基于预定义的时间表和数据的可用性工作流程作业。
Oozie可扩展性和可管理及时执行成千上万的工作流程(每个由几十个作业)的Hadoop集群。

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

  • 支持Oozie编辑器,可以通过仪表板提交和监控WorkflowCoordinatorBundle
  • 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编辑器,可以通过仪表板提交和监控WorkflowCoordinatorBundle
  • 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 两个列。
    在这里插入图片描述

特点

  • 容量:一个表可以有数十亿行,上百万列;
  • 面向列:数据是按照列存储,每一列都单独存放,数据即索引,在查询时可以只访问指定列的数据,有效地降低了系统的 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 JPAMybatis 等常用的持久层框架来操作 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):当前底层数据计算引擎支持MapReduce1MapReduce2Spark等。
Rest Server:当前kylin采用的ODBC, JDBC,RESTful API接口提供web服务。
查询引擎(Query Engine)REST Server接收查询请求后,解析sql语句,生成执行计划,然后转发查询请求到Hbase中,最后将结构返回给REST Server
在这里插入图片描述

  • 为什么引入kylin?
    由于数据是基于hadoop分布式存储,所以比mysql的伸缩性好。

提供hadoop上超大数据规模( 百亿行级别的数据)的亚秒级(sub-second latency)SQL查询,相对于hive的离线分析,可做到实时查询。
可无缝整合其他BI工具,如Tableau, PowerBI,Excel。

在这里插入图片描述

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

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

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

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

99874)]
[外链图片转存中…(img-SPnY2vma-1714812799874)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值