WeBankFinTech / WeDataSphere

WeDataSphere is a financial grade, one-stop big data platform suite.
661 stars 162 forks source link

【有奖征文】数据开发平台集成linkis分享 #14

Open JavaMrYang opened 4 years ago

JavaMrYang commented 4 years ago

应用场景: 公司的数据开发团队目前使用的是hue和notepad记事本开发脚本,开发较落后,需要在不同的环境hue界面测试开发脚本,没有统一的界面进行开发维护,而且出错率高,没有自动提示和管理。目前公司数据的处理方式是先用记事本把脚本写好,然后都不同的hue环境测试开发脚本运行结果是否一致。然后在上传脚本到调度平台的脚本目录,并且配置好调度平台调度时间,依赖以及重试次数等配置参数,测试通过后然后在上线的生产环境。此过程较为繁琐,而且脚本不易控制,所以我们使用开发平台与linkis引擎集成,通过用户绑定ldap用户执行不同环境下的脚本查看结果,存储开发脚本规范脚本编写,极大的提高了效率和使用方式。 解决问题: 使用了我们的用户体系与linkis组件,以页面化的形式开发脚本,运行、测试不同执行环境,打包,发布,上线。方便快捷,能够使用多种类型脚本直接操作hive数据,不需要数据导出到本地后再处理,对开发脚本节省开发时间,相比较于以前的方式的管理HDFS中的文件。目前阶段处于分析人员使用linkis引擎开发数据处理脚本,以及使用过程中的问题修复。

使用情况: 目前阶段处于linkis适配公司环境,以及修复使用问题,还未新增功能或者新引擎支持,后续如有会分享出来。 公司的大数据相关环境有专门的团队负责,我们在安装使用的过程中进行了一系列的适配:

大数据环境使用的是CDH 5.14.2,而源码是社区版本,所以根据具体的版本我们进行了重新编译。 HDFS权限被ACL接管,不与Linux系统权限同步,所以直接用hql脚本查询数据时,遇到了HDFS目录无权访问的情况,经过查看源码我们使用ldap用户绑定我们的用户项目组执行脚本,在创建ldap用户的时候我们会调用一个自己预先编好的脚本执行程序自动创建hdfs和linux用户目录。然而后期我们要对用户数据权限进行控制,所以集成了sentry,然而sentry在hive引擎中是无效的(hive引擎使用的hive beeline方式执行脚本),所以采用jdbc执行脚本,经过ldap用戶和密码验证后,才可访问hive数据。所以在使用中我们自己开发一套页面存储脚本(因为我们存放的脚本位置要根据我们的用户体系和环境体系来存储脚本,所以自己开发了一套页面)和执行脚本,主要使用jdbc和spark脚本来处理数据。 公司spark版本是2.2.0.cloudera2,所以把编译的cdh spark替换成集成的spark包,并把json4这类的冲突的包删掉,具体看linkis环境部署指南。 linkis引擎的ldap用户是不带用户组的,所以我们修改了LDAPUtils这个类的登录方法 image

linkis jdbc编译的包是不支持cdh5.14.2的所以把jdbc-entrance中的hive-jdbc包换成cdh5.14.2的并增加hive-service5.14.2的包,才能正常使用jdbc执行脚本。 期望功能: 日志打印:jdbc日志打印看不到异常信息,必须到jdbc-entrance的log日志目录去看,而且关键信息也只能看到jdbc Exception这种信息,无法分析问题。 结果集获取:无法获取超过5000条以外的数据,有时候获取结果集还会进度条卡死不动。 执行出错:同一用户使用jmeter并发执行50条sql,linkis报队列执行已满,不在响应,sdk不能迅速捕获异常信息。 目前版本的linkis脚本引擎启动时间过长,希望可以改善。 目前遇到了一些脚本持续停留在排队中的情况,重启引擎后才可以正常执行。

Originally posted by @JavaMrYang in https://github.com/WeBankFinTech/WeDataSphere/issues/12#issuecomment-727215623