Trafodion 性能优化之加载数据

Trafodion提供两种加载数据的方式,(1)Trickle Load(使用upsert/insert) (2)Bulk Load。Trickle Load使用HBase的写路径,而Bulk Load直接建立HFiles并放到HBase里面。关于Trickle Load和Bulk Load的介绍,请参考个人另一篇文章“ Trafodion 数据加载介绍 ”http://blog.csdn.net/post_yuan/article/details/52644900web

两种加载方式均可以经过如下方式提高性能,
1. 使用Aligned Format表
2. 加载数据时避免表上有索引数据库

下面是一些针对两种加载方式分别适用的调优原则,服务器

1 Trickle Load

(1) UPSERT USING LOAD速度最快,其次是UPSERT,最后是INSERT。若是是使用ODB,语法loadcmd=UL表示使用UPSERT USING LOAD方式加载。
(2) 若是是持续加载,把MEMSTORE_FLUSH_SIZE调大一些。
(3) 对于窄表,默认的HBASE_ROWSET_VSBB_SIZE能够设大一些,默认值是1024。
(4) 吞吐量随着region服务器的个数线性增加,所以集群规模越大性能越好。
(5) 增长写进程的个数(经过增长esp并发数,若是使用odb工具的话建立多个链接)能够提升吞吐量。ESP并发数能够经过cqd PARALLEL_NUM_ESPS ‘’方式来修改。
(6) 若是使用ODB工具,假设是6个节点的集群,测试过的性能最佳是2个客户端同时加载。
(7) 能够客户容许,设置DURABILITY值为skip_wal。
(8) 减小WAL文件备份数,默认为3,能够减小为2或者1。经过修改hbase.regionserver.hlog.tolerable.lowreplication ‘’实现。
(9) 持续加载后表每一个region可能会有几个HFile文件,从而可能须要作compaction动做。HBase根据参数设置触发compaction操做,不过仍是建议手动作compaction。
(10) 目前在6个节点集群上作过的测试,对于默认行格式加载性能约16MB/S,对于Aligned Format约21MB/S。并发

2 Bulk Load

(1) 查找Hive里面最长的字段并使用cqd HIVE_MAX_STRING_LENGTH ‘’,这是一个十分重要的设置。
(2) 若是表有更多的partition,那么吞吐量会更好,由于每一个HFile更小且须要排序的行更少(更多的排序并行执行)。增长CPU也是一个不错的选择。
(3) 经过SELECT “SALT”, count(*) from group by 1 order by 2;查看数据倾斜,若是有数据倾斜,就须要考虑换一个不一样的Salting key,由于倾斜严重影响数据加载性能 。数据加载的时候,能够经过RMS监控倾斜问题。
(4) Bulk Load对表的每一个partition启一个ESP进程,用来排序和写数据,但读取Hive源数据的DOP是能够配置的。默认每一个节点分配两个ESP,能够经过cqd HIVE_NUM_ESPS_PER_DATANODE ‘’增长到4或6个。
(5) 加载的flush size能够经过cqd TRAF_LOAD_FLUSH_SIZE_IN_KB来配置,默认是1024=1M。若是集群有内存的话能够增长到10M。
(6) 若是表上面有索引,可使用cqd TRAF_LOAD_ALLOW_RISKY_INDEX_MAINTENANCE ‘ON’,前提条件是源数据与已加载的数据库表数据没有重复。
(7) 检查scratch空间(影响排序)是否足够。若是每一个partition超过2G数据,整个表就有可能出现内存overflow(若是是默认的$MY_SQROOT/tmp)。这能够经过在ms.env中设置STFS_LOCATION修改(:做为分隔符表示多个路径)。
(8) 目前在6个节点集群上作过的测试,对于默认行格式加载性能约80MB/S,对于Aligned Format约84MB/S。svg