您的位置:首页 > 其它

Trafodion 性能优化之常用优化技巧

2017-01-03 11:13 204 查看
HBASE_FILTER_PERDS ‘2’: 当表是默认行格式且查询在非主键(簇键)列上做过滤时,这个cqd可以把过滤下推到region服务器去执行以减少数据流动。默认不开启。运用此cqd时注意timeout错误,需要最小化扫描cache size。

HBASE_NUM_CACHE_ROWS_MAX: 默认值是10000。当需要在region服务器中做过滤时可能需要把这个值设的小一点如1000。还有一个相关的cqd HBASE_NUM_CACHE_ROWS_MIN,默认值是100。对于极端的带条件过滤的查询需要同时把这两个值改小一些。

TRAF_TABLE_SNAPSHOT_SCAN: 对于大表(10亿或更多)的扫描,snapshot扫描比常归的HBase扫描性能要好。可以创建一个snapshot并把这个cqd设为’LATEST’。可以通过查看执行计划验证是否运用snapshot。这对大表的扫描可以获得2-3X的性能提升。默认不开启。

PARALLEL_NUM_ESPS: 并发度的大小是决定查询快慢的一个很重要的因素。dop较高可以减少集群服务和数据交换的时间。dop并发度不超过表的partition的数目。

TRAF_ALLOW_ESP_COLOCATION: 这个cqd允许esp从本地region服务器上面直接读取数据。在网络带宽不好的情况(如1 G/s)比较适用。

ATTEMPT_ESP_PARALLELISM: 如果不想开启esp并发时可以把这个cqd设为’OFF’。在有多个短的查询并发执行时比较有用。如果每个连接都使用好几个esp的话那么内存很快就容易被吃满。对于并发查询很高的情况下把esp的并发尽可能的设小。

HIVE_MAX_STRING_LENGTH: 扫描hive表时这个cqd是必要的。把值设为比表中最长的字符串稍微大一些。默认值是32KB。如果是通过ROW格式扫描本地HBase表,对应cqd HBASE_MAX_COLUMN_INFO_LENGTH,默认值为10K。如果通过CELL格式扫描本地HBase表,cqd HBASE_MAX_COLUMN_VAL_LENGTH,默认值为1K。

HIVE_NUM_ESPS_PER_DATANODE: 这个cqd用来设置hive表扫描的并发度,默认值为2。HIVE_MIN_BYTES_PER_ESP_PARTITION也是跟hive扫描并发度有关的一个cqd,默认值是64MB。

AFFINITY_VALUE: 针对集群内单个查询来控制esp的分配。如果发现esp分配严重倾斜(通过pdsh $MY_NODES ps -ef | grep esp | wc -l查看),可以把cqd设为-1。默认值为-2。

NESTED_JOINS: 编译译默认使用的关联方式可以禁用,通过cqd NESTED_JOINS, HASH_JOINS, MERGE_JOINS为’OFF’实现。可以使用JOIN_ORDER_BY_USER ‘ON’来指定表的关联顺序。

如果想实现某一个特定的执行计划,但使用cqd又无法实现,可以使用CONTROL QUERY SHAPE语法。使用SHOWSHAPE来查看使用样例。CONTROL QUERY SHAPE是强制MDAM执行计划或控制多并发的最有效的方式。

基数提示功能可以通知编译器表有多少行数据,用来影响执行计划。语法为FROM table_name <<+ cardinality 10e6>>。

查询重写: 比如最近的例子是把一个35个UNION的查询拆分。

监控系统负载: 对于并发执行或者即使是会导致系统压力的单一查询,使用monitor工具如CDH Manager/Ambari等监控系统是十分重要的。

检查系统配置如region服务器的heap size,namenode heap size等,参考https://cwiki.apache.org/confluence/display/TRAFODION/Configuration

HBASE_SMALL_SCANNER ‘SYSTEM’: 开启小扫描(扫描小于HBASE块大小)优化功能。对于MDAM扫描,性能可以提升1.4X或更多。默认关闭。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: