`
weitao1026
  • 浏览: 1062636 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
以目前的使用体验的话,Greenplum(以下简称GP)的实时性确实比较高,从存储层到计算层,数据吞吐效率比类Hadoop生态圈的sql工具要好得多。

伴随性能的提升,同时加深的是gp对硬件的要求。

        就目前的GP集群的硬件配置情况来说:

               5台22线程,64G内存,2T硬盘,千兆网卡机器(整体情况是110线程,320GB内存,disk IO 150MB/s,网络 IO 150MB/s)

               与现今的Spark集群相比(10台22线程,128G内存,30T硬盘,千兆网卡),sql查询性能提高50%-300%。以下是水星线上任务在GP和spark上运行

        的对比表:


-------------------------------------------------------------------------------------------

Sql1: select count(*) from mercury.url_keyword where (keyword rlike '汽车' or keyword rlike '宝马') ;

-------------------------------------------------------------------------------------------

Sql2: select count(1) from mercury.mds_mercury_gid_dsp_c where dt='work' and Cbehe=1 and Cbiddingx=1;

--------------------------------------------------------------------------------------------

Sql3: select count(1) from mercury.url_tag_raw where dt='work' and tiyu=1 and keji=1;

-------------------------------------------------------------------------------------------


Sql4: select D.view_cnt,count(*) as gid_cnt

from (

select if(C.cnt<30,C.cnt,20) as view_cnt

from (

select B.gid,count(*) as cnt

from

(select url,keyword from url_keyword where (keyword rlike '汽车' or keyword rlike '宝马')) A

join mercury.sds_mercury_gid_cid_url B

on A.url=B.url group by B.gid

) C

) D group by D.view_cnt;




Sql


spark用时


gp用时


Gp提升%


Sql1 132s 3s 40倍
Sql2 131s 90s 30%
Sql3 3s 3s 0%
Sql4 30s 18s 30%

               分析下可能的原因:

                                    1.spark集群使用的远程HDFS数据,数据传输有很大的延迟。

                                    2.spark虽然使用RRD策略实现数据的存储和IO,但是Spark本身还是一个离线的计算模型,

                                       期间存在典型的输出文件的存储和大量的网络传输,相比于MPP(GP计算模型)有很大的缺陷。

                                       这其实也是离线框架和在线框架最本质的区别。

                                    3.在数据库层面,spark-sql框架接入的是hive数据,而hive是一个非结构行数据库,优点在

                                       于大数据量的存储,在数据索引,数据存储结构,元数据信息等方面还收集的不够完善。

                                       而GP是基于postgrel数据库,具有很强的DML和DQL能力,在数据索引和存储方面更优秀。

        Greenplum的参数配置记录:

                 一共5台计算节点,每个节点部署3个segment(postgrel实例)服务,每个segment分配5线程,20G内存。

                使用任务队列:目前水星使用mercury队列,设置并行数:ACTIVE_STATEMENTS=5

                                                                                     设置优先级:PRIORITY=MAX

                                                                                      eg:  CREATE RESOURCE QUEUE adhoc WITH (ACTIVE_STATEMENTS=3,PRIORITY=MAX);

                使用mercury用户:单作业使用内存:set statement_mem = '4GB';

                                              最大使用内存:set max_statement_mem = '10GB';

                                              使用Pivotal Optimizer:set optimizer to on;

                                              不使用groupagg:set enable_groupagg to off;

                                              eg: create user u1 with resource queue mercury;

                                                     alter user u1 set statement_mem to '2GB';

                                                     alter user u1 set optimizer to on;

                系统参数配置:

                             gp_resqueue_memory_policy = 'eager_free' --提早回收前期阶段的内存

                             gp_vmem_protect_limit = 19968 --每个segment的分配内存

                             gp_resqueue_priority_cpucores_per_segment = 4 --每个segment的分配线程数

                             shared_buffers = 1GB --segment用作磁盘读写的内存缓冲区

                             work_mem = 4GB --segment用作sort,hash操作的内存大小

                             maintenance_work_mem = 10GB --segment用于VACUUM,CREATE INDEX等操作的内存大小

                             effective_cache_size = 10GB --segment能使用的缓存大小

                             max_connections = 1200 --最大连接数

                             max_prepared_transactions = 300 --最大预连接数

                             eg: gpconfig -c gp_resqueue_memory_policy -v eager_free -m eager_free

                                   gpconfig -c work_mem -v 4GB

                                   gpconfig -c max_connections -v 1200 -m 800

         Greenplum调优方法:

                            1.调整表的分布键,常用于join和where条件的列作为分布键,最典型的例子是两张做join的表都用需要连接的列作为分布键。

                            2.周期使用VACUUM ANALYZE命令维护数据库的统计信息。

                            3.一般不使用Index,对于需要使用的表如果分布键是粗粒度的使用BitMap索引,如果是细粒度的使用BTree索引。

                            4.一般使用Pivotal Query Optimizer,在使用Legacy Query Optimizer的时候,使用explain analyze命令查看执行计划,优化不合适的operator。

                            5.避免大表的broadcast,多使用ANALYZE TABLE.命令。

                            6.看实际情况多使用enable_hashagg和enable_hashjoin。

                            7.用group by代替distinct.

                            8.在多表左连接时,小表放在左边。内连接时调整连接顺序尽量少的把数据带向上层连接。

                            9.多使用explain analyze看看执行计划。




         explain anaylze命令介绍:

                                      example:select count(1) from mercury.mds_mercury_gid_dsp_c where dt='work' and Cbehe=1 and Cbiddingx=1;

                            

                             除此之外还有以下操作:

                             Hash Join

                             HashAggregate

                             Redistribute Motion

                             Broadcast Motion等

        并发测试:

                             同时运行5个数据量100G的任务,集群负载情况:



                             cpu负载良好,存在瓶颈的是磁盘读写和网络读写。但是即使在这样的情况下,执行平时20s的任务延迟也不会太高,执行23秒也就结束了。对于10s内完成的任务如本文的sql1和sql3基本没有影                                    响。

                             但是集群的瓶颈也是很明显的,上图中的bjlg-49p122-greenplum-01节点的磁盘读速率已经到达了上限。另一方面,在内存上瓶颈依然存在,我目前还不清楚上图中的内存使用为什么显示还很少。但是从另一个图表中可以看到内存已经过载了(Used(MBytes)):         

而空闲时段的内存情况是这样的:



其实硬件方面瓶颈最严重的是disk IO和network IO,下面是每台机器的IO评测情况:

disk IO:



写最大也只有140MB/s,读最大260MB/s.

Network IO:

,100MB/s左右的网络传输速率对于一个要支持大数据量的在线计算框架来说瓶颈很明显。

下图是一个大Join任务在shuffle阶段的瓶颈,cpu和内存正在空闲状态等待数据的传输:



  综上所诉,现在集群存在的问题:

                        1.网络IO低,目前使用的千兆网卡。

                        2.磁盘IO低,对于本地读取需求的任务影响大。

                        3.现有的业务数据所有都存在hdfs,如果需要迁移到GP,不是太效率。

调研结论:                       

        针对现有的硬件条件和数据存储情况,建议迁移实时性要求高的短作业到GP上跑,不建议迁移长时间的批处理作业。
分享到:
评论

相关推荐

    第四节课 Greenplum 快速调优.pdf

    Greenplum是一种基于MPP...总之,Greenplum的快速调优涉及到集群规划、数据库管理、日常维护和SQL优化等多个方面,需要系统管理员具备全面的技术知识和经验,才能有效地提升系统的性能,保障大数据分析任务的顺利进行。

    Greenplum数据库调优1

    《Greenplum数据库调优1》 在大数据处理领域,Greenplum数据库因其高效的数据处理能力和优秀的并行计算性能而受到广泛关注。然而,为了确保其性能最大化,数据库调优是必不可少的一环。本文将深入探讨Greenplum...

    CPIC-Greenplum-调优汇总

    根据提供的文档信息,本文将详细...通过以上几个方面的详细解析,我们可以看出CPIC-Greenplum-调优汇总涵盖了从系统需求分析到具体调优实践的全过程,不仅解决了当前的问题,也为未来的性能优化提供了宝贵的参考经验。

    gp较全面性能调优官方ppt

    该内容较为全面,详细的讲解有关greenplum调优的官方指导,不适合初级入门人员,需要有一定基础的人员,最好会一点英文。

    Greenplum性能测试报告.docx

    【Greenplum性能测试报告】 1. 测试目的 本次测试的主要目的是评估Greenplum数据库在数据查询方面的性能,包括单表查询效率和多表JOIN操作的处理能力。通过深入理解Greenplum的架构和分布式存储策略,我们将验证其...

    Greenplum日常维护手册-常用命令.zip

    四、Greenplum性能调优 1. 参数调整:合理设置`shared_buffers`、`work_mem`等参数,平衡内存使用和I/O性能。 2. 查询优化:分析慢查询,通过索引、物化视图、并行执行等手段提升查询效率。 3. 分区策略:根据数据...

    基于Greenplum数据库的查询优化

    因此,如何优化查询路径,生成高效的查询计划,是提高Greenplum数据库性能的重要途径。 ### 查询优化方法的提出 为了优化查询路径,本文首先设计了一种有效的代价模型,用于估算查询代价。这个代价模型考虑了多个...

    VMware vSphere 5.5的Greenplum的数据库性能

    - **系统调优**:根据实际工作负载调整操作系统和数据库参数,实现最佳性能。 - **监控与维护**:定期监控系统性能,及时发现并解决问题,确保长期稳定运行。 ### 结论 综上所述,《VMware vSphere 5.5的Greenplum...

    greenplum官方培训教材

    本教材通过深入浅出的方式,详细介绍了Greenplum的核心概念、架构、安装配置、数据操作、查询优化、性能调优以及高级特性等内容。 首先,教材会讲解Greenplum的基本架构,包括其分布式存储模型、段(segment)的...

    基于Greenplum Hadoop- 分布式平台的大数据解决方案04 - 安装Greenplum(2)

    安装完成后,需要对Greenplum进行性能调优,包括调整查询计划、内存分配、并行度等。同时,监控系统资源,定期进行维护任务,如检查段的状态、清理无用数据等。 **总结** Greenplum与Hadoop的结合提供了全面的...

    Greenplum 64位 odbc

    【Greenplum 64位 ODBC:连接与数据访问技术】 Greenplum是一款高度可扩展的并行数据库系统,专为大...正确安装和配置ODBC驱动,结合有效的性能调优策略,能够充分利用Greenplum的强大功能,满足大数据处理的挑战。

    greenplum数据库学习资料

    3. 使用手册:使用手册详尽地介绍了Greenplum的各种功能和使用技巧,包括数据导入导出、性能调优、安全设置等。 四、GP培训-1 "GP培训-1"可能是系列培训材料的一部分,可能涵盖了基础理论、实践操作和案例分析等...

    greenplum6.1官方文档

    例如,理解如何使用gpadmin工具进行性能调优,或者如何利用Java API进行数据导入导出,都是提高开发效率的关键。 文档还可能包含关于安全性的内容,如用户权限管理、角色权限分配、网络加密等。Java开发者需要熟悉...

    Greenplum 数据库最佳实践

    Greenplum具备处理PB级别数据的能力,支持复杂的查询,并能通过并行化技术有效提升查询性能。掌握Greenplum数据库的最佳实践是确保数据库集群高效运行的关键。 最佳实践可以从多个方面来考虑,包括集群的维护、支持...

    Greenplum数据库文档(中文)

    - **智能调优**:使用机器学习算法进行自动调优,优化查询性能。 - **安全与权限管理**:用户角色、访问控制、审计日志等机制保障数据安全。 - **备份恢复**:支持在线备份和快速恢复,确保业务连续性。 - **...

    GreenPlum安装包

    因此,在实际应用中,合理规划硬件资源,以及对系统进行性能调优,是非常重要的。 最后,理解并熟悉GreenPlum的数据分片策略、并行执行计划以及MPP架构的工作原理,将有助于提升你在大数据处理领域的专业技能。持续...

    greenplum安装配置手册

    九、性能监控与调优 Greenplum提供了丰富的监控工具,如`gpperfmon`,用于实时查看系统状态和查询性能。结合监控数据,可以对硬件资源、查询执行计划等进行调优,提升整体性能。 十、故障排查与维护 了解常见问题及...

    greenplum 企业应用实战高清带目录版 解压成pdf

    7. 性能监控与调优:如何监控数据库性能,识别瓶颈,以及调优策略。 8. 高可用性与灾难恢复:如何构建高可用集群,以及数据备份和恢复策略。 通过《Greenplum 企业应用实战》这本书,读者可以深入理解如何利用...

    greenplum-cc-web-6.8.0-gp6-rhel7-x86_64.zip

    同时,定期进行性能调优和维护,以保持系统的高效运行。 总之,Greenplum CC Web 6.8.0-GP6是大数据环境中一个强大的工具,结合RHEL7的稳定性,为企业提供了高效的数据管理和分析解决方案。通过深入了解和熟练使用...

Global site tag (gtag.js) - Google Analytics