Inceptor
TDH 6.0新版本功能大解析(上)
Transwarp Data Hub 6.0 目前已正式交付,是星环在5.x系列之后又一次大的版本更新。研发团队通过半年时间,对TDH在SQL支持性、分布式事务支持、数据安全、完整的开发套件、简单运维管理等固有优势进行了巩固,同时强化并改善了产品性能和使用体验。
比较重要的几个升级点包括:
Inceptor:分析型数据库Inceptor中新增两个组件——Compactor和Profiler。Compactor用于管理ORC事务Compaction,简化了用户对版本文件的管理,使分布式事务更高效;Profiler提供表的统计信息管理界面,方便实现SQL CBO优化,让数仓语句优化器更易用。
Guardian:作为安全管控组件,Guardian引入了“基于属性的权限管理(ABAC)”策略管理服务,系统将根据属性组合动态的进行授权,从属性角度提供多粒度集中化管理,打破角色管理的局限性,提升业务处理的灵敏度和系统的安全可靠性。
Manager:Manager开始独立于TDH,成为通用服务,为更多产品线(如KunDB、ArgoDB等)提供在线部署升级管理以及全线性的运维支撑。
Search:Search作为支持SQL的搜索引擎,在新版本中增强了存储效率和稳定性,并深化了SQL语句的支持度和优化能力。它同时还提升了分词功能,用户可以自定义词库并保持动态更新。这些新特性进一步推广了全文搜索引擎的应用,使之面向更普通的使用群体。
Studio:开发套件方面,流计算任务开发获得更多辅助。首先Transwarp Studio加入了新成员Slipstream-Studio,一款面向流计算的任务设计产品,提供界面化的流计算管理服务。另外,Slipstream与Rubik进行了整合,支持流式立方体,提供实时的多维分析支持。Slipstream从单纯的流计算产品成长为能处理更通用场景的平台。
TDH此次升级是它在多功能易用型平台发展路线上的又一次卓越前进,企业只需要经过一键部署就能获得数字化发展的强大推动力。本篇文章将首先对企业级数据仓库Inceptor、安全管控组件Guardian、管理运维工具Manager的新增功能进行解析。
Compactor
ORC事务表是Inceptor支持事务操作的关键类型,由于其实现事务的机制,执行事务操作时会产生大量版本文件,需要自动或手动定期合并以提高后续的读写性能,这个行为叫做Compaction。
此前我们并没有对Compaction提供很好的管理机制,即使Compaction运行失败,用户也无法及时感知,造成版本文件过多的情况未得到及时处理。为了解决该问题,Inceptor推出了Compactor服务,提供Web端管理界面,帮助查看和管理Compaction任务。
Compactor主要有以下功能:
黑名单。将Compaction失败次数超过一定限制的表或分区添加进Blacklist,使这些表或分区不再自动进行Compaction。用户也可以根据需要,对Blacklist里面的表或者分区手动触发Compaction,如下图所示。
任务队列。冗余文件数量达到自动Compaction阈值的表,会进入Compaction队列等待执行Compaction。Compactor提供了任务队列,如果表或分区的状态为“initiated”表示还没有开始执行Compaction,此时可以将表从队列中移除。
冗余文件统计信息。用户可以查看版本文件相关的统计信息,也可以根据需要手动触发扫描。
Profiler
Inceptor支持基于代价的优化方法(CBO)对SQL进行优化。这个优化的前提是,需要提前获得表的统计信息。以前的版本中,信息统计的收集通过手动完成,而且不能随着表的更新而更新。为了解决这些问题,Inceptor推出Profiler服务,自动收集及更新表级和列级统计信息,并通过Web界面提供查看和管理。
Profiler主要有以下功能:
Candidates。Profiler将需要统计分析的表加入Candidates列表(通过Inceptor参数设置或者手动加入)。Candidates页面提供完整的数据库列表,点击数据库可浏览其所有表。Profiler界面对数据库提供了执行启动、停止操作,方便触发统计任务,如下图所示。
Blacklist。对于分析过程中出错的表,Profiler会将其添加到Blacklist,用户也可以手动添加。系统不再对进入黑名单的表进行自动分析。Profiler界面提供了“执行”按钮,使用户可以对Blacklist中的表手动分析,如果分析成功,则自动移出Blacklist。用户也可以手动将表从Blacklist移出,使其重新返回Candidates。
此外,Profiler的Archives页面还提供数据库中每个表的统计信息。
UDF
本次新增的UDF主要分为以下几类:
线性回归函数。包括REGR_SLOPE(回归线斜率),REGR_R2(决定系数),REGR_SXX(自变量"平方和"),REGR_SYY(因变量"平方和"),REGR_AVGX(自变量平均值)和REGR_AVGY(因变量平均值)等。
字符串函数。包括字符串截取函数SUBSTRING_INDEX,SHA1、SHA2函数,CRC32函数,AES加解密函数AES_ENCRYPT和AES_DECRYPT,字符串长度函数CHAR_LENGTH和字段长度函数OCTET_LENGTH,以及字符串距离函数LEVENSHTEIN等。
算术函数。实立方根函数CBRT,阶乘函数FACTORIAL,位移函数SHIFTLEFT、SHIFTRIGHT和SHIFTRIGHTUNSIGNED等。
复杂类型函数:SORT_ARRAY_BY函数(以指定排序方式对ARRAY类型排序),EXTRACT_UNION函数(指定下标值提取UNION)。
类型转换函数SOUNDEX,可以将任何文本串转换为描述其语音字母数字模式。
其他还包括:通用唯一识别码的UUID函数;获取登录用户名的LOGGED_IN_USER函数;复制指定列的REPLICATE_ROWS函数。
此外,本版本还对日期函数进行了重构,增强了日期函数的功能。例如,支持英文日期作为输入,舍去返回日期类型的时间部分,增加输入日期检查,以及支持通过CAST函数将含有毫秒的日期提取为TIMESTAMP类型等。
性能优化
SQL优化
当查询的SELECT语句列表中存在多个相同的子表达式时,系统将按照一定条件找出公共子表达式,提前计算出其结果并复用,这样可以避免对每个公共表达式的重复计算。
例如以下语句:
SELECT (v2+v2+v3),(v2+v2),(v2+v2)+1,(v2+v2)+v1 FROM test GROUP BY (v2+v2+v3),(v2+v2),v1; |
优化后的执行逻辑等价于:
SELECT (a+v3),a,a+1,a+v1 FROM (SELECT v3,v1,v2+v2 AS a FROM test) GROUP BY (a+v3),a,v1; |
Metastore连接顺序优化
Metastore HA模式下连接Metastore时,Inceptor会按照预先定义的顺序依次尝试创建连接,直到成功或超过重试次数为止。如果位于前面的Metastore节点出现故障,Inceptor往往会等待知道超时后才连接后面的Metastore,造成过多的时间浪费。
本次优化通过维护一个全局的链接列表,将失败的链接放到最后,之后在创建Metastore连接时可以复用此列表,避免先连到错误的链接造成的时间浪费。
其他方面
Scheduler在Furion模式下未指定资源池时,将自动选择一个资源池。
优化了Reducer数量控制,使Reducer个数能够根据表的统计信息自适应,避免其个数过多或过少带来的系统和效率问题。
JDK版本升级到1.8。
Guardian
基于属性的权限控制(ABAC)
Guardian 6.0新增了基于属性的权限控制ABAC(Attribute-Based Access Control),通过对一些上下文标签(SourceIp, UserName, GroupName, RoleName, CurrentTime, Resource)添加判断条件,设置相应的权限,来实现面向属性的权限控制。
ABAC与Guardian本身支持的基于角色的权限控制RBAC(Role-Based Access Control)共同使用时,系统会优先根据ABAC规则做判断,若未配置ABAC规则则基于RBAC规则判断。
ABAC可以实现更复杂,粒度更灵活的权限控制。
权限穿透
本版本新增了权限穿透功能,让用户对Inceptor中对象的权限穿透到该对象在HDFS上对应的底层目录和文件的权限。比如,用户可以把对Inceptor的数据库或表的SELECT权限映射到HDFS上对应的目录或文件的READ权限,即用户如果拥有某数据库/表的SELECT权限,就自动获得了HDFS上对应目录/文件的READ权限。
Access Token和CAS Ticket的跨域认证
用户可以通过Guardian提供的Access Token,访问TDH的各种服务服务。CAS是中央认证服务,提供Web端单点登录机制。本次更新后用户可通过Access Token或CAS Ticket跨集群访问服务,只需要集群间配置了互信即可。
Access Token还实现代理机制,使具有代理权限和服务访问权限的应用代理指定用户(如Alice)连接JDBC或Web HDFS服务,并使用指定用户Alice的名义和权限进行操作。该功能的引入可服务于第三方应用访问数据库中的有行级权限控制表的场景。
此外,CAS登录界面增加了验证码和OAuth支持,加强了网站安全以及跨服务登陆的便捷性。
Transwarp Manager
服务安装
Manager从6.0开始作为单独的产品提供服务,从而支持不同产品线。新版本的TDH安装流程也因此调整为:1. 安装Manager -> 2. 上传TDH安装包 -> 3. 安装服务。
权限管控
Manager通过RBAC(基于角色的权限控制)模型管理用户权限。本次新增了三类权限角色,目前共有系统管理员、系统访客、集群管理员、服务管理员、集群访客五种角色,细化了对平台角色的控制。
节点支持部署多个角色实例
Manager 5.x版本配置服务角色时,一个节点只能部署一个角色实例,面对多实例角色的场景,则无能为力。本版本开始,Manager支持多实例角色安装,用户通过“实例组”(Instance Group)组织实例,各个实例组之间管理相同一组实例。同一节点可以安装多种角色实例,各实例的节点配置彼此独立,互不影响。
例如下图中有一个多实例角色Search Server,共有两个实例,分别通过instancegroup1和instancegroup2管理,用户还可以通过按钮继续增加实例组。
Docker P2P模式分发镜像
TDH底层用Docker做容器管理。Docker运行容器化应用时,Docker Registry会将镜像发送到各个节点。对于大规模集群,特别是大量主机同时从Registry下载镜像的情况,Registry节点的带宽将成为安装升级服务的瓶颈。TDH 6.0开始采用Docker P2P技术分发镜像,通过在host之间共享镜像构成分布式网络,能有效的提高网络吞吐量。
未完待续
本文只涵盖了6.0的部分产品,涉及到的较大变化有Inceptor增加Compactor和Profiler服务,Guardian安全在功能和灵活性上的提升,以及Manager的独立。
关于关于企业级搜索引擎Search和大数据开发工具套件Studio的详解,我们将在下篇文章中继续介绍。
往期原创文章
大数据开放实验室由星环信息科技(上海)有限公司运营,专门致力于大数据技术的研究和传播。若转载请在文章开头明显注明“文章来源于微信订阅号——大数据开放实验室”,并保留作者和账号介绍。