⼤数据数据仓库解决⽅案之MPP:impalaVSgreenplum
不管是impala还是greenplum在推出时,官⽅都会去跟传统的基于hadoop的HIVE做⽐较,强调数据查询性能,数据表结构等;
作为⼀个⼤数据实践者,在选择做数据中⼼提供数据分析等服务时,基于MPP思想的内存计算交互查询确实是个⽐较好的⽅案;但很少因此对他们在⼀起做⽐较整理,以及与越来越好的spark sql ,kylin 等做⼀个较为整体视⾓的⽐较。
本⽂着眼点即在此。
Greenplum篇
1.GreenPlum实现了基于数据库的分布式数据存储和并⾏计算,⽽MapReduce是基于⽂件的分布式数据存储和计算;
2.GreenPlum 选择PostgreSQL做为数据库底层引擎,通过Interconnect核⼼软件组件实现了对统⼀集中多个Postgresql实例的⾼效协同和并⾏计算,Interconnect承载了并⾏查询计划产⽣和分发,协调节点上执⾏器的
并⾏⼯作,负责数据分布、Pipeline计算、镜像复制、健康探测等等诸多任务。
3. GreenPlum选择Postgresql出于以下考虑:
1)Postgresql号称较先进的数据库,有⾮常强⼤的SQL⽀持能⼒和丰富的统计函数和统计语法⽀持,
⽀持分析函数(OLAP window函数),可以通过多种语⾔编写存储过程,对Madlib、R⽀持很好;
2)扩展⽅⾯强⼤,⽀持Python、C、Perl、TCL、PLSQL等语⾔扩展功能,⽀持扩展⽤户⾃定义函数(UDF)功能;
3)诸如ACID事务处理、数据强⼀致性、数据类型⽀持、独特的MVCC带来⾼效数据更新能⼒;
4) Postgresql许可是仿照BSD许可模式, 没有被⼤公司控制,社区⽐较纯洁;
5) ⽀持odbc、jdbc等接⼝,与第三⽅⼯具、BI报表集成⾮常容易;
4. MPP采⽤两阶段提交和全局事务管理机制来保证集上分布式事务⼀致性,Greenplum像Postgresql⼀样
满⾜关系型数据库的包括ACID在内所有特征;
5. GreenPlum架构
数据库由Master Severs和Segment Severs通过Interconnect互联组成。
Master主机负责:
访问系统的⼊⼝,建⽴与客户端的连接和管理
SQL的解析并形成执⾏计划;
执⾏计划向Segment的分发收集Segment的执⾏结果;
Master不存储业务数据
只存储数据字典(系统⽬录表和元数据)
Segment主机负责:
业务数据的存储和存取;
⽤户查询SQL的执⾏。
NetWork InterConnect: 并⾏调度功能
Master Node⽀持⾼可⽤,类似于Hadoop的namenode和second namenode, 实现主备的⾼可⽤。
当Primary Master出现故障时,Standby Master担它全部⼯作, Standby Master通过同步进程,
保持与Primary Maser的数据⼀致。
Segment Server:
每个Segment存放⼀部分⽤户数据;
⼀个节点可以有多段;
⽤户不能直接存取访问,所有对段的访问都经过Master;
数据库监听进程监听来⾃于Master的链接;
6.GreenPlum最⼩并⾏单元不是节点层级,⽽是在实例层级(⾮Oracle实例概念,指⼀个分布式⼦库),每个实例都有⾃⼰的Postgresql⽬录结构,都有各⾃⼀套Postgresql数据库守护进程(可进⾏单实例访问),甚⾄⼀个运⾏在
单节点的GP也是⼀个⼩型并⾏计算框架,⼀个节点配置6~8个实例,相当于⼀个节点有6~8个PG数据
库同时⼯作,可以充分利⽤每个节点的CPU和IO;
7.Greenplum还研发了⾮常多的⾼级数据分析管理功能和企业级管理模块:
外部表并⾏数据加载
可更新数据压缩表
⾏、列混合存储
数据表多级分区
BitMap索引
Hadoop外部表
Gptext全⽂检索
并⾏查询计划优化器和Orca优化器
Primary/Mirror镜像保护机制
资源列表管理
资源列表管理
WEB/Brower监控
8.Greenplum的分布式并⾏计算架构,其中每个节点上所有Postgresql实例都是并⾏⼯作的,
外部表数据加载是并⾏的、
查询计划执⾏是并⾏的、
索引的建⽴和使⽤是并⾏的,
统计信息收集是并⾏的、
表关联(包括其中的重分布或⼴播及关联计算)是并⾏的,
排序和分组聚合都是并⾏的,
备份恢复也是并⾏的,
甚⽽数据库启停和元数据检查等维护⼯具也按照并⾏⽅式来设计,得益于这种⽆所不在的并⾏,Greenplum在数据加载和数据计算中表现出强悍的性能
9.Greenplum较⼤的特点总结就⼀句话:基于低成本的开放平台基础上提供强⼤的并⾏数据计算性能和海量数据管理能⼒
但如果你指望MPP并⾏数据库能够像OLTP数据库⼀样,在极短的时间处理⼤量的并发⼩任务,这个并⾮MPP数据库所长
并⾏和并发是两个完全不同的概念,MPP数据库是为了解决⼤问题⽽设计的并⾏计算技术,⽽不是⼤量的⼩问题的⾼并发请求。
Greenplum主要定位在OLAP领域,⽽MPP数据库都不擅长做OLTP交易系统
Greenplum与Hadoop
greenplum数据库•相似处
•分布式存储数据在多个节点服务器上
•采⽤分布式并⾏计算框架
•⽀持横向扩展来提⾼整体的计算能⼒和存储容量
•都⽀持X86开放集架构
•差异
•MPP按照关系数据库⾏列表⽅式存储数据(有模式),Hadoop按照⽂件切⽚⽅式分布式存储(⽆模式)
•两者采⽤的数据分布机制不同, MPP采⽤Hash分布, 计算节点和存储紧密耦合, 数据分布粒度在记录级的更⼩粒度(⼀般在1k以下)
•Hadoop FS按照⽂件切块后随机分配, 节点和数据⽆耦合, 数据分布粒度在⽂件块级(缺省64MB)
•MPP采⽤SQL并⾏查询计划, Hadoop采⽤Mapreduce框架
•扩展性问题
•Hadoop架构⽀持单独增加数据节点或计算节点,HDFS数据存储对计算层来说是透明的
•MPP数据库扩展时,⼀般情况下是计算节点和数据节点⼀起增加的,在增加节点后,
•需要对数据做重分布才能保证数据与节点的紧耦合(重新hash数据),进⽽保证系统的性能;
•Hadoop在增加存储层节点后,虽然也需要Rebalance数据,但相较MPP⽽⾔,不是那么紧迫。
•节点宕机⽅⾯
Hadoop节点宕机退服,对系统的影响较⼩,并且系统会⾃动将数据在其它节点扩充到3份;MPP数据库节点宕机时,系统的性能损耗⼤于Hadoop节点。
系统的性能损耗⼤于Hadoop节点。
impala
Impala架构
Impala是Cloudera在受到Google的Dremel启发下开发的实时交互SQL⼤数据查询⼯具,它可以看成是Google Dremel 架构和MPP (Massively Parallel Processing)结构的结合体。Impala没有再使⽤缓慢的Hive&Map-Reduce批处理,⽽是通过使⽤与商⽤并⾏关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine 三部分组成),可以直接从HDFS或HBase中⽤SELECT、JOIN和统计函数查询数据,从⽽⼤⼤降低了延迟,其架构如图4所⽰,Impala主要由Impalad,State Store和CLI组成。Impalad与DataNode运⾏在同⼀节点上,由Impalad进程表⽰,它接收客户端的查询请求(接收查询请求的 Impalad为Coordinator,Coordinator通过JNI调⽤java前端解
释SQL查询语句,⽣成查询计划树,再通过调度器把执⾏计划分发给具有相应数据的其它Impalad进⾏执⾏),读写数据,并⾏执⾏查询,并把结果通过⽹络流式的传送回给Coordinator,由 Coordinator返回给客户端。同时Impalad也与State Store保持连接,⽤于确定哪个Impalad是健康和可以接受新的⼯作。Impala State Store跟踪集中的Impalad的健康状态及位置信息,由state-stored进程表⽰,它通过创建多个线程来处理Impalad的注册订阅和与各Impalad保持⼼跳连接,各Impalad都会缓存⼀份State Store中的信息,当State Store离线后,因为Impalad有State Store的缓存仍然可以⼯作,但会因为有些Impalad失效了,⽽已缓存数据⽆法更新,导致把执⾏计划分配给了失效的Impalad,导致查询失败。 CLI提供给⽤户查询使⽤的命令⾏⼯具,同时Impala还提供了Hue,JDBC,ODBC,Thrift使⽤接⼝。
impala与greenplum
impala与greenplum都是对SQL解析做执⾏计划,基于内存计算查询数据整合返回,⽽⾮启动mapreduce,spark任务来执⾏处理,与常见的业务系统关系型数据库使⽤起来,有传承之处。并且有更好的横向扩展能⼒,这是传统关系型数据库不具备的。当然现在很多关系型数据库也退出对应的集⽅案,来⽀持海量数据的横向扩展。这⾥的重点是,虽然如此但各有侧重⾯。关系型数据库的集⽅案,有⼀个重点关注的⽅⾯是数据强⼀致性和事务处理。⽽MPP数据库主要表现在查询性能,⽀持海量数据上。
当数据库越来越好的发展,各⾃也都会⽀持⼀些特性。进⼊到对⽅的领域。但记着,没有什么数据库是万能的,能在不同业务场景下都适⽤的。技术⼈员要把握的是,这些数据库,它们是什么?它们在⼲什么?它们要去哪⾥(发展⽅向)?
抓住事物的本质永远是最主要的,不要过多耗费在花枝招展的细节上失去整体。物理学上的第⼀性原理,是具有认识事物的普遍意义的。特斯拉的马斯克也⼗分的推崇第⼀性原理。
在建设数据中⼼或数据仓库的时候,具体选择MPP数据库还是Hive,Spark SQL,亦或者预处理数据库如kylin,因为但从技术本⾝上,kylin也确有好处。但有时候也要考虑公司的技术延续性,不可盲⽬的追求技术本⾝,剑宗到底不如⽓宗来的正⼤光明。不过我挺喜欢剑宗的,其主要原因是⽓宗后来变得正统⽽虚伪,似乎正统的最后都会这样。
篇幅原因,建设数据仓库在选择上,是否还要选择预处理kylin这样的,我们下⼀篇具体再对我公司的具体情况作出讨论和选择。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。