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

复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)

备注:本文是2018-06在链家的时候做的对外分享,现在纯搬运到知乎引言:海量数据背景下,业界普遍引入hadoophive等来解决大数据计算分析的需求,但随着大家对计算速度和灵活性

备注:本文是2018-06在链家的时候做的对外分享,现在纯搬运到知乎

引言:

海量数据背景下,业界普遍引入hadoop/hive等来解决大数据计算分析的需求,但随着大家对计算速度和灵活性的要求提高,业内涌现出各类引擎impala,sparksql,kylin等,贝壳根据自身业务需求,主要针对灵活查询,快速查询,实时查询分别选型spark sql,kylin,druid, 本次主要分享贝壳对这些引擎的实践,优化,及二次开发经验

关于我:

•13年 浙大软件工程毕业

•13-14年 百度商业平台部-风控平台研发

•15年至今 贝壳(原链家网)大数据集群及基础引擎建设

•专注于hadoop,hbase,kylin等生态组件,热爱开源,为社区贡献多个patch

•丰富的性能调优经验

目录:

•早期架构1.0

•OLAP简介

•快速可视化查询-指标平台(kylin)

•Adhoc灵活查询-Queryengine(spark sql+alluxio)

•Q&A

早期架构:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

•架构简单、just works

•需求驱动、case by base解决问题。

•固化Mysql难以存储大数据量

•查询原始hive速度慢、使用成本高

•实时数据分析无解

OLAP引擎分类:

•ROLAP(Relational OLAP)

– 基于关系模型,实时进行聚合计算

– 实现:传统数据库引擎/spark sql/presto

•MOLAP(Multi-dimension OLAP)

– 基于预定义模型,预先进行聚合计算,存储汇总结果

– 实现:Kylin/Druid

•HOLAP(Hybrid OLAP)

– 混合多引擎,不同场景路由到不同引擎

ROLAP:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

•优势

– 支持任意的sql查询

– 无数据冗余,一致性好

•缺点

– 大数据量及复杂查询返回慢

– 并发较差

•场景

– 灵活性很高的分析

MOLAP:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

•优势

– 支持超大原始数据集

– 快速返回,并发高

•缺点

– 不支持明细

– 需要预先定义维度和指标

•场景

– 能预知查询模式,并发有要求的场景

可视化(快速查询)选型:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

KYLIN简介:

Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

MOLAP解决方案

预先定义维度和指标

预计算cube,存储到hbase中

查询时解析sql路由到hbase中获取结果

KYLIN架构:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

Cube和Cuboid:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

Kylin存储模型:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

贝壳olap平台架构:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

自研kylin中间件:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

贝壳kylin的使用统计:

•定位:离线OLAP引擎

•800+ cube,覆盖公司16个业务线

•Cube存储总量200T+, 数据行数1600+亿行,单cube最大60+亿行

•日查询量100万+,时延<500ms(95%), <1s(99%)

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

ADHOC篇:

《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》
《复杂场景下大数据计算引擎选型与实践(OLAP/spark/alluxio)》

Alluxio使用经验:

•原生多层级置换有性能问题(代码里是单线程执行),建议单层

•不要超过缓存大小,避免大量miss

•性能优先:单层MEM或单层SSD,HDFS减负:单层HDD

•可在metastore层,进行路由(不走alluxio, 走ssd,走hdd)

•元数据缓存一致性问题

-checkConsistency

-alluxio.user.file.metadata.sync.interval


推荐阅读
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
author-avatar
庾承泓_689
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有