Linkis:https://github.com/WeBankFinTech/Linkis
DataSphereStudio:https://github.com/WeBankFinTech/DataSphereStudio
用户登录认证方式:
https://mp.weixin.qq.com/s/OB3H0xnWIZ9-mTy9FI3UkA
LDAP参考文档:
https://www.sohu.com/a/284300312_283613
安装方式:
DataSphereStudio(DSS)是微众银行开源的一站式大数据开发平台,开源于19年7月左右,目前市面上只发现这一个产品。基于公司需求,我们调研后发现基本满足现有的需求,于是安装。安装过程踩了些坑,在这里记录分享下。
环境:
centOS7
原生集群
DSS 0.7.0
Linkis 0.9.3
1.spark任务请求资源报错,版本不兼容,如下:
ERROR DWCException{errCode=20010, desc='NoSuchMethodError: org.apache.hadoop.io.retry.RetryPolicies.retryOtherThanRemoteException(Lorg/apache/hadoop/io/retry/RetryPolicy;Ljava/util/Map;)Lorg/apache/hadoop/io/retry/RetryPolicy;', ip='nl-dss2', port=9106, serviceKind='sparkEntrance'
微众使用的hadoop版本是2.7.2,spark使用的是2.4.3,spark内hadoop的相关的包是2.7.3版本,在安装成功后请求spark资源的时候会报错,将linkis-ujes-spark-enginemanager下原有的hadoop移出,把spark jars下面的对应的hadoop包复制到linkis-ujes-spark-enginemanager的lib下,就可以了
2.分布式安装的时候报错(获取Yarn队列信息异常)需要你的hadoop集群互相免密
先排查下访问yarn的web接口是否有问题,可以把yarn的web地址直接配成wds.linkis.yarn.rm.web.address属性,在RM的linkis.properties里
分布式安装时distribution.sh不要有默认的127.0.0.1,全都写成真实的ip或者主机名,安装后最好检查下每个任务的application.yml,里面的defaultZone可能有错。分布式安装后,其他台的机器我还需要自己启动,start-all.sh无法启动其他机器上的服务,希望这点后面版本能够改进。
3.新增用户后,查看不了元数据
我是开启了hive权限,grant all on database default to user test 后好了。
4.visualis显示没有权限查看:暂未解决
5.总资源数会变动,本来有48G内存,用到24G的时候显示100%使用
解决办法:我们一开始用的Capacity Scheduler,后来换成Fair Scheduler就好了
6.启动一次spark任务,结果启动了两个引擎,还在检查,可能是同时请求的并发数太多了,等待时间过了,导致重新请求,结果起了两个:原因是代码中判断逻辑不对,singleEngineSelecotr中将spark-submit提交成功视为成功,之后就进行加锁,但是engine可能启动的比较慢,导致不能及时注册到eureka中,加锁的时候在eureka中找不到该engine将视为启动失败,触发了重试机制,导致最后显示两个引擎。
解决办法:
在SingleEngineSelector的lockEngine方法中,info(s"try to ask a lock for $engine.")下面添加代码:
val instance: ServiceInstance = engine.getModuleInstance
Utils.waitUntil(() => {
// 追加判断engine是否已到eureka注册的判断
try {
serverLoader.getOrRefreshServiceInstance(instance)
true
} catch {
case _ => {
false
}
}
}, ENGINE_CREATE_MAX_WAIT_TIME.getValue.toDuration, 1000, 5000)
7.hive执行计算的时候报错:
The ownership on the staging directory /tmp/hadoop-yarn/staging/test4/.staging is not as expected. It is owned by root. The directory must be owned by the submitter test4 or by test4
权限问题,需要把新建用户放到supergroup里,工作流删除重建就可以了,不然还会报这个错:
8.更新到DSS0.8.0后,使用ldap上的账号建工作流时报错:
解决办法:新增用户需要在dss-serve/conf下的token.properties和azkaban/conf下的azkaban-users.xml增加相关用户信息
9.我们测试20个人的时候报错,因为可能因为我们只用了一台256G服务器搭了DSS:
原因:总资源数受限
解决办法:在EM配置文件linkis.properties修改参数
结果报了另一个错:
原因:当在同一台机器上提交多个spark任务时 并且是以client的方式提交,会报端口占用错误,spark.port.maxRetries太低
修改spark/conf下的spark-defaults.conf,添加或者修改spark.port.maxRetries 128就可以了
10.yarn资源有两百多G,却只能启动31个spark任务
原因:每个spark driver需要至少1核,我们用的32核机器单台部署,所以受到限制
解决办法:分布式部署DSS,多起一份spark服务,两台64核的可以跑50多个任务没问题。
11.shellEngineManager启动报错
java.lang.VerifyError: Stack map does not match the one at exception
将shellEM lib下的jackson-core-2.4.3.jar移除就可以了
12.执行azkaban调度任务的时候报错:
日志显示:
网友提示:
参考
https://github.com/WeBankFinTech/DataSphereStudio/blob/master/docs/zh_CN/ch2/Azkaban_LinkisJobType_Deployment_Manual.md
即可解决
13.安装schedulis代替azkaban后发布任务失败
目前官网上的云盘里提供的是0.7.0版本,需要找管理员拿到自己DSS版本对应的jar包或者从
链接: https://pan.baidu.com/s/1c0kaTRS5uV2_CFMjWxlUgg 提取码: 3n9c
下载,之后放入/dss-appjoints/schedulis/lib/ ,重启dss-server即可,具体操作在官方文档里有介绍:
https://github.com/WeBankFinTech/DataSphereStudio/wiki/FAQ_for_Usage
另外,之前发布过的任务,需要自己在schedulis里面建对应的项目名,否则也会创建失败。1.0之后会修复这个问题。
-----------使用HDP部署集群
HDP版本2.6.5
遇到的问题:
1.查看队列管理器报错
解决方法:
YarnUtils里第136行的报错那里,有两个JDecimal,需要改成JDouble,重新打包上传替换,重启linkis-resourcemanager