长期以来,由于以hadoop为核心的生态系统霸占了大数据的各个角度,以至于我们以为大数据就是hadoop。诚然,自hadoop诞生以来,hive+hbase掀起第一个高潮,而后Spark和Flink更是火爆到不行,声浪一阵盖过一阵。尽管hadoop在高并发、海量数据处理等方面有着无可比拟的优势,但是在OLAP场景下的数据分析方面始终不如人意。

在hadoop生态体系中,可以用作OLAP分析的引擎主要有以下几个:

1)Hive

Hive 最早由 Facebook 开源贡献也是早年应用最广泛的大数据 SQL 引擎,和 MapReduce 一样,Hive 在业界的标签就是慢而稳定。其无私地提供了很多公共组件为其他引擎所使用,堪称业界良心,比如元数据服务 Hive Metastore、查询优化器 Calcite、列式存储 ORC 等。

近年来,Hive 发展很快,例如查询优化方面采用了 CBO,在执行引擎方面用 Tez 来替换 MapReduce,通过 LLAP 来 cache 查询结果做优化,以及 ORC 存储不断演进。不过相比较而言,这些新技术从市场应用来说还不算成熟稳定,Hive 仍然被大量用户定义为可靠的 ETL 工具而非即时查询产品。

Hive的优势是完善的SQL支持,极低的学习成本,自定义数据格式,极高的扩展性可轻松扩展到几千个节点等等。但是Hive 在加载数据的过程中不会对数据进行任何处理,甚至不会对数据进行扫描,因此也没有对数据中的某些 Key 建立索引。Hive 要访问数据中满足条件的特定值时,需要暴力扫描整个数据库,因此访问延迟较高。

2)HAWQ

Hawq是一个Hadoop原生大规模并行SQL分析引擎,Hawq采用 MPP 架构,改进了针对 Hadoop 的基于成本的查询优化器。除了能高效处理本身的内部数据,还可通过 PXF 访问 HDFS、Hive、HBase、JSON 等外部数据源。HAWQ全面兼容 SQL 标准,能编写 SQL UDF,还可用 SQL 完成简单的数据挖掘和机器学习。无论是功能特性,还是性能表现,HAWQ 都比较适用于构建 Hadoop 分析型数据仓库应用。

网络上有人对Hawq与Hive查询性能进行了对比测试,总体来看,使用Hawq内部表比Hive快的多(4-50倍)。Hawq是基于GreenPlum实现,缺点是安装配置复杂,技术实现也比较复杂,因此社区活跃度不高。

3)Presto

Presto是Facebook推出的基于内存的并行计算的分布式SQL交互式查询引擎 多个节点管道式执行。支持任意数据源 数据规模GB~PB 是一种Massively parallel processing(mpp)(大规模并行处理)模型
数据规模PB 不是把PB数据放到内存,只是在计算中拿出一部分放在内存、计算、抛出、再拿。Presto不仅支持hive,还支持各种jdbc数据源,可以作为一个跨平台的查询计算引擎。

Presto 在前几年应用比较广泛,在Airbnb和JD等企业有过应用,京东还专门为此写了一本书。但是近几年逐步淡出了。这款内存型 MPP 引擎的特点就是处理小规模数据会非常快,数据量大的时候会比较吃力。

由于Presto是基于内存的,而hive是在磁盘上读写的,因此presto比hive快很多,但是由于是基于内存的计算当多张大表关联操作时易引起内存溢出错误。不适合多个大表的join操作。

4)Spark SQL

SparkSQL 这两年发展迅猛,尤其在 Spark 进入 2.x 时代,发展更是突飞猛进。其优秀的 SQL 兼容性(唯一全部 pass TPC-DS 全部 99 个 query 的开源大数据 SQL),卓越的性能、庞大且活跃的社区、完善的生态(机器学习、图计算、流处理等)都让 SparkSQL 从这几个开源产品中脱颖而出,在国内外市场得到了非常广泛的应用。

Spark SQL对熟悉Spark的同学来说,很容易理解并上手使用:

  • 相比于Spark RDD API,Spark SQL包含了对结构化数据和在其上运算的更多信息,Spark SQL使用这些信息进行了额外的优化,使对结构化数据的操作更加高效和方便;

  • SQL提供了一个通用的方式来访问各式各样的数据源,包括Hive, Avro, Parquet, ORC, JSON, and JDBC;

  • Hive兼容性极好。

5)Kylin

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

Kylin自身就是一个MOLAP系统,多维立方体(MOLAP Cube)的设计使得用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体进行数据的预聚合。 简单来说,Kylin中数据立方的思想就是以空间换时间,通过定义一系列的纬度,对每个纬度的组合进行预先计算并存储。有N个纬度,就会有2的N次种组合。所以最好控制好纬度的数量,因为存储量会随着纬度的增加爆炸式的增长,产生灾难性后果。原来的kylin是把数据存储在Hbase里面,近些年做了一些改进,尝试用文件存储。

6)Impala

Impala也是一个SQL on Hadoop的查询工具,底层采用MPP技术,支持快速交互式SQL查询。与Hive共享元数据存储。Impalad是核心进程,负责接收查询请求并向多个数据节点分发任务。statestored进程负责监控所有Impalad进程,并向集群中的节点报告各个Impalad进程的状态。catalogd进程负责广播通知元数据的最新信息。

Impala 的性能也非常优异,不过其发展路线相对封闭,社区生态进展比较缓慢,SQL 兼容性也比较差,用户群体相对较小。

Impala的劣势也同样明显:

  • Impala不提供任何对序列化和反序列化的支持;

  • Impala只能读取文本文件,而不能读取自定义二进制文件;

  • 每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。这个缺点会导致正在执行的查询sql遇到刷新会挂起,查询不动。

以上开源组件,虽然在某些方面的性能比较卓越,但是总体上欠缺稳定性,使用也不够灵活,优点明细,确定也很明显。在这里我针对OLAP的一些数据库选型要求简单明了的总结一下各组件的评分情况。如有不妥,还请大神指正。

查询速度 SQL支持 BI集成支持 市场活跃度
Hive ★★★★ ★★★★ ★★★★★
Presto ★★★ ★★★ ★★ ★★★
HAWQ ★★★ ★★★
Spark SQL ★★★ ★★★★ ★★ ★★★★
Kylin ★★★★ ★★★ ★★★ ★★★
Impala ★★★★ ★★★ ★★★ ★★★

:以最高五颗星作为满分要求。

由于以上插件的种种优劣势,我特此推荐以下三个数据库作为大家作为数据中台的一个可选项。其中任何一款都比hadoop平台好用。

1)Greenplum数据库

在此,我向大家非常隆重的推荐Greenplum数据库。Greenplum数据库是基于PostgreSQL开源并行数据库,基于MPP架构的最成熟的应用产品。

Greenplum完全支持ANSI SQL 2008标准和SQL OLAP 2003 扩展;从应用编程接口上讲,它支持ODBC和JDBC。完善的标准支持使得系统开发、维护和管理都非常方便。Greenplum支持分布式事务,支持ACID。保证数据的强一致性。作为分布式数据库,拥有良好的线性扩展能力。Greenplum有完善的生态系统,可以与很多企业级产品集成,譬如SAS,Cognos,Informatic,Tableau等;也可以很多种开源软件集成,譬如Pentaho,Kettle等。

除此以外,Greenplum还有非常丰富的ETL插件功能,例如GPLoad高速并行加载机制、PXF外表,支持Python、C等各种编程语言扩展功能,支持存储过程加工数据(Greenplum里面统称函数),支持MADLIB机器学习插件库。由于Greenplum功能特别强大,所以做OLAP开发也特别简单。另一方面Greenplum的OLTP性能也还可以,支持通过JDBC链接实时更新数据。

同时Greenplum在存储和处理大数据量查询是也毫不逊色。在合理的集群配置和恰当的性能优化场景下,可以实现复杂应用场景5s以下的查询响应。

2)Clickhouse

Clickhouse 由俄罗斯 yandex 公司开发。专为在线数据分析而设计。Yandex是俄罗斯搜索引擎公司。官方提供的文档表名,ClickHouse 日处理记录数"十亿级",在腾讯还有千亿级数据量的应用。

Clickhouse 是OLAP界的一匹黑马,最近几年上升势头特别猛。这个开源的列式存储数据库的跑分要超过很多流行的商业MPP数据库软件,例如Vertica。因此Clickhouse 特别适合超大数量的实时快速查询,在各互联网公司的使用场景下,可以优化到亿级数据5s以内的响应速度,堪称是性能怪兽。

ClickHouse集成了各自优秀的数据库引擎,支持分布式并行计算,把单机性能压榨到极限;支持列式存储数据库和数据压缩;支持关系型SQL语句;支持高可用和PB级数据查询。

当然,ClickHouse也有一些劣势,例如缺少高频率,低延迟的修改或删除已存在数据的能力;仅能用于批量删除或修改数据;没有完整的事务支持;不支持二级索引;有限的SQL支持,join实现与众不同。

所以ClickHouse适合配合hive使用,用作hive批处理结果的查询引擎。在“快”的巨大优势勉强,ClickHouse是超大数量实时查询的首选。

3) HANA

HANA是SAP公司发布的一款内存数据库。根据SAP公司的定义,HANA是一个软硬件结合体,提供高性能的数据查询功能,用户可以直接对大量实时业务数据进行查询和分析。用户拿到的是一个装有预配置软件的设备。至于HANA的云服务,只是对用户而言可以在不购买相关硬件的情况下享受HANA的高性能,而HANA云服务的背后还是需要更高性能的硬件支撑的。

HANA的优势在于快,亿级数据关联都是毫秒级响应结果。HANA也是一款关系型数据库,支持单机部署,也支持多节点部署。HANA也支持云平台部署。

HANA缺点是贵,并且不开源。但是凭良心说,HANA确实是一款非常优秀的数据库,在当前数据比硬件更值钱的趋势下,有些不差钱的企业可以考虑这个方案。

最后,针对以上三款关系型数据库,我也在这里打一下分,用以对比。

查询速度 SQL支持 BI集成支持度 市场活跃度
Greenplum ★★★★ ★★★★★ ★★★★★ ★★★★
ClickHouse ★★★★★ ★★★★ ★★ ★★★★
HANA ★★★★★ ★★★★★ ★★★★★ ★★★

最后统计一下得分,hadoop生态圈,Hive得分14分,Presto11分,HAWQ 8分,Spark SQL 13分,Kylin13分,Impala 13分。非Hadoop生态圈,Greenplum得分18分,ClickHouse15分,HANA18分。

总结一下,除了上述三款关系型数据库以外,大数据平台里面Impala+Kudu的方案在小米有过应用,应该也是可以在一定业务场景慢满足查询和插入数据的均衡;另外,在关系型数据库领域,PingCAP 公司的TiDB、腾讯开源的TBase、阿里巴巴的OceanDB、华为的GaussDB、中兴的GoldenDB都可以引入到OLAP场景中,实现数据插入更新和批量数据分析的均衡,从而更好的满足数据中台的快速查询和实时数据更新需求。

数据中台的目的是让数据持续产生价值,因此,技术不是重点,简单好用才是我们应该把握的关键。不忘初心,才能走得更远。最后再次推荐中小企业搭建数据中台采用Greenplum,Hadoop水太深慎入。

《数据中台研习社》微信群,请添加微信:laowang5244,备注【进群】

?分享、点赞、在看,给个三连击呗!?

pb 窗口数据修改sql_大数据hadoop,数据中台选型你应该看到这些分布式数据库相关推荐

  1. 小程序获取上一页的数据修改上一个页面的数据

    小程序获取上一页的数据修改上一个页面的数据 详情地址http://www.xiaoshu168.com/wxapplet/233.html

  2. mysql查看数据倾斜_深入理解hadoop数据倾斜

    深入理解hadoop之数据倾斜 1.什么是数据倾斜 我们在用map /reduce程序执行时,有时候会发现reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理 ...

  3. 2017大数据产业链的大变化:数据应用仍在奋斗 淘金路上见曙光

    文 | 中关村老李 (本文为作者独家投稿36大数据) 2017年已过去大半,是时候该回顾一下大数据在半年中的发展了.只有清楚了现在的位置,清楚行业发展的环境,才好对未来的决策做出准确的判断.(本文是针 ...

  4. 大批量数据修改时发现有一行数据被锁住了,一直处于等待状态的问题解决

    最近写了个多线程任务处理组件用来处理大批量的业务数据, 从业务监控数据中发现少量业务数据修改时一直处于等待状态,很明显是出现类似 for update 锁表,锁行的情况. 这种问题是系统设计(复杂的业 ...

  5. backtrader利用小时间粒度数据动态合成大时间粒度数据:replay功能

    扫地僧backtrader技术教程获取方法 =========================== 看过我教程的同学都知道,backtrader中可以用重采样resample功能来将小粒度数据合成大粒 ...

  6. 张晴晴:对话数据推动AIGC——大模型底层数据探索

    "Training data is technology" . 数据即科技,OpenAI的联合创始人IlyaSutskever在与知名科技媒体The Verge访谈中提到.Chat ...

  7. 动态阈值_如何设置数据看板(大屏)数据异常报警的动态阈值

    当数据看板的数据来自基于多个异构数据源,而且需要根据细粒度数据做统计计算时,由于网络.服务器.数据库.传感器等影响,会出现数据更新中断及数据不完整情况.这种情况如果不及时处理,显示的异常数据会耽误或误 ...

  8. 【大咖有约】华泰证券管文琦:华泰证券分布式数据库演进之路

    华泰证券集团公司数据架构师.资深DBA管文琦先生将作为DTCC2016中国数据库技术大会特邀嘉宾出席.并将于5月14日"数据库技术前瞻"专场分享题为<华泰证券分布式数据库演进 ...

  9. 大数据可视化之大屏实时数据监测设计及实现

    上周接到一个来自院长的需求,需求描述很简单:要实时监测医院的运营情况. 拿到一个需求,大家首先要做的是进行需求调研与分析,但由于我这个需求提出者跟需求描述比较特殊:首先,提出者是院长,他事务繁忙,基本 ...

最新文章

  1. 企业级的开源备份工具之磁盘柜存储配置
  2. 利用rank函数实现自动排序
  3. drupal cve-2018-7600 远程代码执行漏洞 简介
  4. linux 使用timedatectl 修改时区和时间
  5. MacOS安装过程需要注意的几个问题
  6. android button layoutparams,使用LayoutParams设置布局
  7. 利用思科 Webex中的3个漏洞,以 ghost 用户身份参会
  8. 公司终于把我变成了一颗忠诚的螺丝钉,我再也不能离开它
  9. 12. JavaScript Number 对象
  10. [SharePoint教程系列]SharePoint 2016 安装语言包
  11. Python(六)基于 TCP/UDP 协议通信的简单套接字编程
  12. 个人博客如何申请ICP备案
  13. 如何判断时间复杂度和空间复杂度
  14. 计算机专业调研报告图片,计算机专业毕业设计论文(计算机专业调研报告范文)...
  15. HHC6003: Error: The file Itircl.dll has not been
  16. js输入一个数,判断是质数还是合数
  17. Linux命令 ——ipconfig与ifconfig命令用法及区别
  18. python教程 w3c_W3C全套PDF教程 - 下载 - 搜珍网
  19. 计算机考研面试自我介绍范文英语,研究生复试英文自我介绍范文
  20. ios swift模仿qq登陆界面,xml布局

热门文章

  1. 数据分析工具有多好用?Yonghong Z-Suite V8.8 发布,实现20余项功能新改变!
  2. 排队两小时买墨茉、虎头局,但别指望年轻人“味蕾忠诚”
  3. 坐拥双妹、佰草集,上海家化是怎样将一只脚留在高端护肤品门外的?
  4. 陌陌财报双双超预期,什么才是它的基本盘?
  5. 品牌价值越发重要的时代,谁才是服务行业标杆?
  6. python 字典键值重复_浅谈python字典多键值及重复键值的使用
  7. python语言 行业_如何入门编程开发行业 选择Python语言怎么样
  8. html页面懒加载灰度图片大小,小程序初级指南--图片及其优化
  9. BUUCTF-misc另外一个世界 8个二进制数为一组转ASC码
  10. 解决Ubuntu,su: 认证失败