您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据挖掘与识别 > Palo:百度面向分析的大规模数据库系统-马如悦
Palo:aMPP-basedInteractiveDataAnalysisSQLDBmaruyue@baidu.comTel:158102937842014.9.17目录•做Palo的背景•Palo整体架构•Palo关键技术•不竞品的比较•我想使用Palo数据系统分类•OLTPvs.OLAP•Operationalsystemvs.Datawarehousing•Transactionaldatabasevs.Analyticdatabase•ImplementationArchitecture–DataEngine=FunctionEngine(StorageEngine)–MySQL:QueryingEngineoverStorageEngine–Hadoop:MapRedoverHDFSOLTP•SQLDB(MySQL),NoSQLDB(MongoDB),NewSQLDB(Spanner)•HighConcurrency,StrongConsistent,Transactional•Function:CURD(Create,Update,Read,Delete)OLAP•HighThroughput(大查询高吞吐兼顾小查询高并发)•Function:Read(query、analysis、mining)•BatchDataProcessingvs.InteractiveDataAnalysis•SQLDB(Impala+hdfs,Mesa),SearchDB(ElasticSearch),MiningDB(R+?,Julia+?)•Palo:aMPP-basedInteractiveDataAnalysisSQLDB•Palo,aGoogleMesaClone,issimplerandbetterthanMesa.Single(infobright)Shared-disk(OracleRAC,Exadata)MPP(Teradata,Greenplum)ReportingMultidimensionalAnalysisTextAnalysisDataMiningRDD(Spark)MR(Hadoop,Hive)SQLDBSearchDBMiningDBBatchDataProcessingvs.InteractiveDataAnalysisInteractiveBatchBigDataLambdaArchitecture–Stormauthor传统数据库研发逐渐从OLTP转向OLAP1977197919831984200520102012Oracle公司成立Oracle2IBMDB2FirstPublicRelease1987SybaseASE1989SQLServer1.0SAPHANA1.0SAP58亿美金收购PostgreSQL1.0SQLServerPDWGreenplumBizgresEMC收购2009ExadataV1Vertica成立2011HP收购2013HAVEnAmazonRedshiftParAccel大数据促使传统数据库领域格局发生变化,幵购渐多产品简介技术特点收购情况Netezza2000年在美国成立NetezzaTwinFin软硬一体机采用FPGA数据过滤代替索引2010年9月20日,IBM出资17.8亿美元收购Greenplum2003年在美国成立GreenplumDatabase行存+列存Shared-Nothing集群2010年7月6日,EMC出资3亿美元收购Vertica2005年在美国成立VerticaAnalyticDatabase列存Shared-Nothing集群2011年2月,HP出资3.5亿美元收购AsterData2005年在美国成立nClusterSQL-MapReduceShared-Nothing集群2011年7月6日,EMC出资2.63亿美元收购ParAccel2005年在美国成立PADB列存+自适应压缩Shared-Nothing集群2013年Actian出资1.5亿美元收购,Redshift宣称使用ParAccel千禧年以前,数据库领域幵购次数丌多,金额也丌大;千禧年以后,在OLAP领域美国不欧洲成立了许多小型创业公司,像Vertica、Vectorwise、ParAccell、Exasol都是其中的佼佼者,数据库领域呈现出前所未有的活跃气氛;2010年,SAP率先以58亿美金巨资收购Sybase,拉开领域幵购狂潮;许多IT公司开始进行领域布局。传统数据库面临的问题10问题成本描述扩展性可用性查询性能数据加载性能传统分析型数据库往往采用一体机形式交付,维护、升级、扩容成本非常高数据增长速度比以往更快,数据量超出配额限制成为常态,要求数据库有很好的扩展性支持automaticfailover,对用户透明,丌影响用户查询性能传统数据库平均综合查询性能(复杂查询、即席查询、高幵发小查询)达丌到海量数据分析型应用,大数据查询性能往往要求提升10倍以上大数据处理必然会对数据加载速度有很高的要求,传统数据库的索引结构将丌再适用开源开源会促进技术的透明化,让系统丌断迭代,吸收大众之智慧。传统数据库大都闭源。开源及互联网企业也抓紧布局InteractiveAnalysis•HiveDremel:InteractiveAnalysisofWeb-ScaleDatasets(Google2010)Tenzing:ASQLImplementationOnTheMapReduceFramework(Google2011)PowerDrill:ProcessingaTrillionCellsperMouseClick(Google2012)目录•做Palo的背景•Palo整体架构•Palo关键技术•不竞品的比较•我想使用Palo设计原则与定位-苹果公司产品理念•定位低成本线性扩展支持云化部署高可用高查询性能99.9999%Uptime10WQPS/100GB/s100~200节点/1000TB1/10~1/100Cost高加载性能10TB/Hour实现架构MySQLTools(MySQLNetworking)Palo-FE(Leader,Java)Palo-FE(Follower,Java)Palo-FE(Follower,Java)Palo-FE(Observer,Java)Palo-BE(C++)Palo-BE(C++)Palo-BE(C++)Palo-BE(C++)目录•做Palo的背景•Palo整体架构•Palo关键技术•不竞品的比较•我想使用Palo•StateMachine+ReplicatedLog•类似Raft协议思想MetadataInMEMCheckpoint.10LOG.11LOG.12LOG.13FrontendMetadataManagementLeaderCheckpoint.13LOG.14MetadataInMEMCheckpoint.10LOG.11LOG.12LOG.13FollowersCheckpoint.13LOG.14MetadataInMEMCheckpoint.10LOG.11LOG.12LOG.13ObserversCheckpoint.13LOG.14LogReplicatingMySQLNetworkingProtocolMySQLTools(MySQLNetworking)Palo-FE(Leader,Java)Palo-FE(Follower,Java)Palo-FE(Follower,Java)Palo-FE(Observer,Java)Palo-BE(C++)Palo-BE(C++)Palo-BE(C++)Palo-BE(C++)MySQLClientFrontendMySQLProxy轻量级客户端不上层应用兼容容易学习曲线平缓,方便用户上手使用利用MySQL相关工具,比如MySQLProxyMySQLProtocolLayerTableau兼容性R语言兼容性ElasticRangePartitionTablet1Tablet2Tablet3•支持HashPartition•也支持一种ElasticRangePartitionTablet4Tablet5PaloStorageDesign引自GoogleMesaPaperRollup表Base表Values聚合方式Sum,ReplaceKeysValuesDelta更新引自GoogleMesaPaperPaloStorageFormat–行列存储•数据块存储–每个块含256行–块内部列存储–块整体压缩•稀疏索引–索引常驻内存–每个块对应一个索引项–索引项只保存key的前几列–shortkey索引文件数据块company=南航&date=20140305PaloStorageFormat–列式存储数据按列存储,每一列单独存放只访问查询涉及的列,大量降低I/O数据类型一致,方便压缩数据包建索引,数据即索引(date)b(int)cde1001018,10.........10010230,50.........1001031,5.........100101,1001025,25.........True=完全确定必须读取列数据Possible=有可能可以进一步优化结合其它条件过滤后确定False=完全排除不需要读取列数据selectasum(b)asbfrommytabwherea='100101'groupbyaorderbybdesc结果集过滤条件I/O基本算子{min,max,sum,...}60000024351+b列一个需要打开的数据包100101,100101100101,1001028,10,6000005,25,1155261假设一个表mytab,按列存储了a、b、c、d、e五列,GBase8a存储引擎将每列都拆分成了几个数据包。对于查询应用,GBase8a的执行流程如下:1.输入一条查询语句:SELECTa,sum(b)asbFROMmytabWHEREa=‘100101’GROUPBYaORDERBYbDESC;2.根据查询条件,GBase8a智能索引先过滤a的数据包,即哪些数据包符合a=‘100101’这个查询要求。图中浅灰和中灰部分代表完全确定和不完全确定的数据包(不完全确定是指根据智能索引尚无法准确判断);3.对于浅灰色的数据,只需访问b数据包的智能索引,就能得到sum值,不用对此数据包做磁盘I/O。这里的sum值为600,000;4.对于中灰色的数据,将其所对应的a、b数据包解压缩,进行查询、求和计算,获取满足查询条件的聚合值;5.对于深灰色数据,由于其不满足查询条件,则根本不需要读取相关数据;6.将3、4的结果求和,返回。由此可以看出,对于统计分析场景,GBase8a使用智能索引技术可以减少大量的I/O,提高查询速度。Palo存储引擎利用原始过滤条件以及min、max和sum智能索引技术将数据集查询范围尽可能地缩小,可以大大减少I/O,提升查询性能高并发小查询•多FE节点解析(非Leader单调一致性,SYNC原语)•执行规划时的PartitionPruning•运行时的PartitionPruning(迓未开展)•Sorted,带有智能索引的存储格式•Rollup表•Delta更新策略高性能•启发式预聚合•谓词下推,复杂谓词下推•向量化执行容错、稳定性•多副本存储,副本自劢修复•多硬盘支持,硬盘自劢容错•查询时副本切换机制•数据包序列号验证•黑名单机制,快速屏蔽宕机机器•服务器结果延迟发送In-DatabaseAnalysis计算计算计算传输数据传输数据•UDF•UDAF•UDTF其它关键技术•批量数据导入的原子更新,MVCC•SchemaChange/CreateR
本文标题:Palo:百度面向分析的大规模数据库系统-马如悦
链接地址:https://www.777doc.com/doc-6170628 .html