作者:朱赛凡

3) 存储层

数据存储层主要包括以下几类:

一类是基于MPP数据库集群,这类系统特点是存储层与上层并型计算引擎是紧耦合,属于封闭性的系统。

二是采用分布式文件系统,例如SharK、Stinger、HIVE、Impala、Scope等。Shark、Stinger、Hive、Imapla都采用HDFS文件系统作为存储层,Scope采用微软自己开发的分布式文件系统。此类系统特点是存储层与上层计算引擎层之间是松耦合关系。

三是存储层基于单机版本关系数据库,例如CitusDB采用PostSQL数据库系统、shardquery采用Mysql数据库系统。此类系统类似于一个中间件,也可以认为上层和底层存储层属于松耦合关系。

四是可以支持各种异构的存储系统,例如Presto、Tenzing。Presto设计即支持HDFS也支持存储在Mysql中的数据,但是目前只支持HDFS;Tenzing底层支持:Google File System、MySQL、Bigtable。

不同存储系统对上层计算有一些影响,典型如Tenzing系统会利用底层存储系统的一些特性:

(1)例如如果低层是mysql数据库,则可以直接利用mysql索引来过滤

(2)如果底层是bigtable数据库,则可以直接利用bigtable 范围scan来过滤

(3)如果底层是列存储系统,则可以只扫描需要扫描的列。

(4)如果底层是列存储系统,且头文件里面有该列最大值和最小值,则可以利用该信息直接跳过某些文件的扫描。

另外需要指出的是,目前已上所有系统都有一个趋势就是采用列式存储。例如HIVE开发了行列混合的RCFILE文件格式(先按行划分,保证每行的数据不会垮机器存储,然后再按劣存储),shark系统开发了内存中的列式存储格式,citusDB开发了专用postSQL数据库的列式存储引擎。

 

3 Druid等专用系统简单介绍

1) JethroData系统

JethroData的特点是hadoop+index。该系统对存储在HDFS上的结构化数据建立索引,并把索引文件也以普通文件方式存储在HDFS系统,并在查询处理时采取以下过程:

(1) 查询主节点负责分析SQL语句后,针对sql中的where条件部分,利用索引文件来得到符合where过滤条件后的rowid集合。

(2) 该rowid集合涉及各datanode节点,采用并发方式来读取数据。

(3) 所有数据汇总到查询主节点,进行汇总与计算,并将最终结果返回给客户端。

可以看出,由于该系统设计思路是希望通过索引来加速数据选择,因此只适合每次查询处理只涉及少量一部分数据。

2) Druid系统

本系统是美国metamarket公司开发的面向海量数据的实时统计分析系统,以实现针对上亿级别海量数据统计分析的延迟在1秒以内。该系统于2012年10月开源。该系统可以认为是一个分布式的内存OLAP系统。

该系统主要分析的数据为交易记录,每条交易记录包括三个部分:交易发生的时间点、多个维度属性、多个数值型度量属性。例如:

该系统设计用来可以回答以下问题“有多少个针对Justin Bieber的编辑来自San Francisco? ”、“一个月内来自Calgary的增加编辑字数的平均数是多少?”。而且要求:能够在高并发环境下,在1秒以内完成任意维度组合的统计,且保证系统高可用;还系统还要能够具备实时数据分析能力,也就是能够查询分析到最新的数据,延时时间为秒级。

为了达到上述目标,该公司先后通过测试发现关系数据库技术和NOSQL数据库都无法满足其需求。关系型数据库由于磁盘io瓶颈导致性能无法满足需求,而NOSQL数据库虽然可以采用预计算方法来达到高性能,但是预计算无法满足分析需求灵活多变。

为解决该问题,该公司自己开发DRUID系统,主要技术思路如下:

(1)将原始数据(alpha数据)进行一定粒度合并,合并成beta数据。

(2)将beta数据全部放入内存,并通过分布式内存方式解决单台服务器内存

上限问题。

(3) 针对纬度属性建立索引,以加速数据的选取。

(4) 采用分布式方式进行并行统计,为了保证分布式统计高效,该系统不支持join,而且对聚合计算不支持中位数等无法分布计算的聚合计算函数。

(5) 利用数据复制解决系统高可靠性问题。

4 本章总结

1) MPP并行数据库得益于流水线的执行以及基于统计优化等方面,使得MPP并行数据库的执行效率是最高的。但缺点包括:

n  数据导入时间长,导入时要做各种预处理,例如一些统计信息;

n  执行引擎和存储紧耦合导致数据难以被其他分析引擎进行分析;

n  基于树型结构执行计划,导致MPP并行数据库表达能力有限,更适合做统计与查询,而不适合数据分析处理;

n  容错性差,特别是一个任务涉及数据量越大,该缺陷越明显。

2)HIVE、Tenzing、Shark、SCOPE、Stinger等系统可以认为基本属于同一类系统。这类系统共同特点是:”通用并行计算引擎框架+SQL解析层”。并且可以将HIVE、Tenzing看成是基于第一代系统,而Shark、Scope、Stinger是第二代系统。这一类系统特点如下:

n  存储层、执行引擎层、SQL解析层三者分离,可以方便替换执行引擎,对使用者而言,同一份数据可以采用不同并行执行引擎来分析。

n  在执行效率方面,由于存储和上层分离因此一半只能具备逻辑优化能力,另外由于Tree结构执行计划更容易采用流水线执行方式,因此这类系统执行效率总体来讲不如MPP关系数据库,它们之间排序是MPP数据库 > 第二代系统 > 第一代系统。

n  在执行效率方面,另外一点是这类系统一般内置对索引的支持不是太好或者不支持。

n  在大规模计算容错方面,这类系统要优于MPP关系数据库。

3)Impala、Dremel等可以认为属于同一类系统,此类系统介于前两者系统之间。这类系统特点是:

n  和MPP数据库类似,基于Tree结构执行计划,专注于查询统计,因此效率高于第二类系统,但是可能和第二类系统的第二代相当。

n  与MPP数据库不同的是这类系统只是一个引擎,与存储系统松耦合。也就是SQL解析层与执行层紧偶合,然后和存储层松藕合。

n  只适合做中间结果越来越小查询分析,中间结果都放内存,对内存要求较高,例如无法实现大表之间的join。

因此,在大型互联网企业中,数据量太大,就会出现所谓“高价值、低密度”情况,反映到数据处理上,互联网企业不会长期存储原始数据,而是会把原始数据先经过一部分预处理,经过部分提炼后,把提炼后数据进行长期存储和分析。也就是如下流程:

   

例如淘宝,把每天数据直接写入Hadoop平台,然后通过每天运行相对固定mapreduce作业来做ETL,然后在计算结果基础上为提供各种分析功能。其中海量原始数据经过固定ETL后被删除,由于只使用一次,因此没有必要花很大精力把这些数据整理成适合分析与挖掘格式。例如在这种场景下,索引也没有太大的价值,因此没有必要花费大量代价来建立索引。

MPP并行数据库,适合存储高密度价值数据,并且是长期存储和多次使用,所以MPP并行数据库会花大量经历在Load阶段,把数据处理成适合分析格式 。

通过上述系统地介绍与比较,我们可以得出一个这样结论:在大数据领域,没有一个通用的解决方案,而需要根据具体业务场景,选择合适的技术!

 

4)通过上述系统研究,我们可以发现一点就是Join操作,特别是大表之间join操作是最消耗资源,也是最优化难度较高的操作,特别是在并行join的实现难度较大。例如Druid和Dremel等都基本放弃了join操作。

因此个人认为应该从业务上和从数据预处理方面,通过适当数据冗余来尽量避免在分析过程过程中执行join操作。

大数据分析技术研究报告(三-3)相关推荐

  1. 大数据分析技术研究报告(三-1)

    作者:朱赛凡  三大数据背景下数据统计分析技术介绍 随数据量变大,和事务处理不同的是,单个统计分析涉及数据量会非常大,单个统计分析任务涉及数据会分散在多台服务器上,且由于计算量大,采用单台服务器进行计 ...

  2. 大数据分析技术研究报告(一)

    作者:朱赛凡 一 数据分析处理需求分类 1 事务型处理 在我们实际生活中,事务型数据处理需求非常常见,例如:淘宝网站交易系统.12306网站火车票交易系统.超市POS系统等都属于事务型数据处理系统. ...

  3. 大数据分析技术研究报告(四)

    作者:朱赛凡 四 大数据背景下数据分析挖掘技术介绍 1 Mahout与MLlib项目 数据分析挖掘主要涉及两个方面:一是数据预处理:二是数据挖掘. 在数据预处理方面,根据掌握资料来看,大型互联网公司主 ...

  4. 基于大数据分析技术在会计方面的研究

    第一节 摘 要 在现如今大数据时代的背景下,有越来越多的企业正经受着数据网络的考验,其中很突出的就是管理會计,作为企业财务中一个重要的组成部分,是持续为企业整合和加工财务资料的职务,管理会计正为企业发 ...

  5. 大数据分析技术与应用 1

    CDA数据分析研究院原创作品 一.大数据概念 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化 ...

  6. 健康大数据分析技术有哪些?

    21世纪是以生命科学为主导.科学技术迅猛发展的世纪,科技竞争力已成为决定国家前途和命运的重要因素,是推动经济发展.促进社会进步和维护国家安全的关键所在.医学在生命科学中占有极其重要的地位,卫生科技的创 ...

  7. 《Spark快速大数据分析》—— 第三章 RDD编程

    本文转自博客园xingoo的博客,原文链接:<Spark快速大数据分析>-- 第三章 RDD编程,如需转载请自行联系原博主.

  8. 大数据分析技术有哪些应用步骤

    大数据技术经过这么几年的发展,已经不像前几年那样给人一种难懂的感觉,现如今信息的大爆炸,各行各业的信息层出不穷.但是信息的爆炸也就意味着各类杂乱无章数据的诞生,因此要想在众多的数据中找到对于自身有用的 ...

  9. 大数据分析技术架构的通用模块

    对于企业来说,坐拥庞大的数据资源,想要实现大数据分析,首先要建立自己的大数据系统平台,每个公司都有自己的具体业务场景,因此对大数据平台的要求也不同.今天我们仅从通用的角度,来聊聊大数据分析需要什么技术 ...

最新文章

  1. 链接产业 聚变未来 | 移动云区块链开发者论坛来了
  2. 图形处理(十二)拉普拉斯网格优化、最小二乘网格模型光顺
  3. 离职 10 天,仅面了 4 家公司,我的感受。。。
  4. 静态工厂方法之服务提供者框架
  5. java concurrent 锁_java并发机制锁的类型和实现
  6. 在安装keepalived出现问题:需要:libmysqlclient.so.18
  7. UESTC_秋实大哥下棋 2015 UESTC Training for Data StructuresProblem I
  8. 版本之间如何兼容_Spring Boot 2.4 版本的系统运行要求
  9. (转)5个Xcode开发调试技巧
  10. Windows Workflow Foundation(一)(转载)
  11. 【BZOJ3924】[Zjoi2015]幻想乡战略游戏 动态树分治
  12. 一个简单的三层架构之仓库管理系统的入库出库
  13. SQL Server~T-SQL编程基础
  14. Qt|表格代理的实现及使用代码qtableview和qtablewidget均适用
  15. 规则三度体磁力异常 matlab,三维强磁性体的勘探方法及勘探系统与流程
  16. 按下 Home 键后发生了什么事?
  17. 哥们别逗 了,写个脚本那真不叫运维自动化!
  18. 分享一个盟重英雄的辅助脚本工具
  19. 格式化的u盘怎么恢复数据?
  20. linux服务器如何设置双网卡,linux服务器设置(双网卡共享上网)

热门文章

  1. 【测试用例练习】七、自动售货机
  2. IIS7之下部署FluorineFx,找不到Fluorine.aspx文件的解决方案
  3. 多机器人集群网络通信协议分析
  4. 【实践】分享一个年会抽奖程序
  5. Win10回收站固定到任务栏方法
  6. Mysql 安装问题一:无法启动此程序,因为计算机丢失MSVCP120.dll,MSVCR120.dll
  7. Matlab系列之信号解调
  8. isafari 一键复制_一键保存/追加网页内容到 macOS 备忘录
  9. uni-app中app模拟器真机调试
  10. 西门子200smart恒压供水(3托3)