本指南仅做本地调试开发参考,不做线上部署参考,修改内容后可能会存在打包问题(未做测试)
数据库准备
新建数据库dds,前后执行db目录下的dss_ddl.sql、dss_dml.sql脚本文件
Maven构建打包获取dss-appconns下面相关的lib包便于后面调试
如果您是本地第一次使用,必须在最外层工程pom.xml所在目录先执行以下命令:
mvn -N install
在最外层工程pom.xml所在目录执行以下命令
mvn clean install
获取安装包,在工程的assembly->target目录下:
wedatasphere-dss-x.x.x-dist.tar.gz
解压安装包到指定目录,得到安装包内dss-appconns目录的路径,例如:
/Users/roger/Downloads/wedatasphere-dss-1.0.0-dist/dss-1.0.0/dss-appconns
配置文件修改
把conf目录下的通用配置文件(注意:无需再拷贝到各个子工程!无需再拷贝到各个子工程!无需再拷贝到各个子工程!查看文章底部最新更新说明!!!)application-dss.yml、log4j2.xml、dss.properties、token.properties、log4j.properties
5个人配置问价分别拷贝到dss-apps/dss-apiservice-server
、dss-apps/dss-datapipe-server
、dss-framewor/dss-framework-orchestrator-server
、dss-framewor/dss-framework-project-server
、dss-orchestrator/orchestrators/dss-workflow/dss-flow-execution-server
、dss-orchestrator/orchestrators/dss-workflow/dss-workflow-server
模块的Resources目录下面,需要自己新建Resources目录,然后再把剩余的每个模块所对应的文件分别拷贝到每个模块所对应的Resources目录
并设置标记好为resource目录
修改每个模块中配置文件中注册中心、数据库、服务名等配置信息(PS:也可以先修改后拷贝到每个模块)
application-dss.yml:
dss.properties:
如果你没配置当前dss运行的环境是开发环境还是生产环境的话,默认是DEV,需要修改两个服务名,一遍出现网关无法通过服务名去转发请求的情况
修改 dss-framework-orchestrator-server.properties
的spring.spring.application.name
的值为dss-framework-orchestrator-server-dev
修改dss-workflow-server.properties
的spring.spring.application.name
的值为dss-workflow-server-dev
修改POM文件
- 修改
dss-apps/dss-apiservice-server
的pom.xml避免运行中可能会出现classNotFound的错误:
增加以下内容:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>6.1.26</version>
<scope>compile</scope>
</dependency>
- 修改
dss-framewor/dss-framework-orchestrator-server
的pom.xml避免运行中可能会出现classNotFound的错误:
增加以下内容:
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
<dependency>
<groupId>com.webank.wedatasphere.dss</groupId>
<artifactId>dss-sender-service</artifactId>
<version>${dss.version}</version>
<scope>provided</scope>
</dependency>
修改以下内容:
旧:
<dependency>
<groupId>com.webank.wedatasphere.linkis</groupId>
<artifactId>linkis-rpc</artifactId>
<version>${linkis.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<groupId>org.springframework.cloud</groupId>
</exclusion>
</exclusions>
</dependency>
新:
<dependency>
<groupId>com.webank.wedatasphere.linkis</groupId>
<artifactId>linkis-rpc</artifactId>
<version>${linkis.version}</version>
<scope>provided</scope>
</dependency>
- 修改
dss-framewor/dss-framework-project-server
的pom.xml避免运行中可能会出现classNotFound的错误:
增加以下内容:
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
- 修改
dss-orchestrator/orchestrators/dss-workflow/dss-flow-execution-server
的pom.xml避免运行中可能会出现classNotFound的错误:
修改以下内容:
旧:
<dependency>
<groupId>com.webank.wedatasphere.linkis</groupId>
<artifactId>linkis-rpc</artifactId>
<version>${linkis.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</exclusion>
<exclusion>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish.hk2.external</groupId>
<artifactId>bean-validator</artifactId>
</exclusion>
</exclusions>
</dependency>
新:
<dependency>
<groupId>com.webank.wedatasphere.linkis</groupId>
<artifactId>linkis-rpc</artifactId>
<version>${linkis.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish.hk2.external</groupId>
<artifactId>bean-validator</artifactId>
</exclusion>
</exclusions>
</dependency>
- 修改
dss-orchestrator/orchestrators/dss-workflow/dss-workflow-server
的pom.xml避免运行中可能会出现classNotFound的错误:
增加以下内容:
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
修改以下内容:
旧:
<dependency>
<groupId>com.webank.wedatasphere.linkis</groupId>
<artifactId>linkis-rpc</artifactId>
<version>${linkis.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<groupId>org.springframework.cloud</groupId>
</exclusion>
</exclusions>
</dependency>
新:
<dependency>
<groupId>com.webank.wedatasphere.linkis</groupId>
<artifactId>linkis-rpc</artifactId>
<version>${linkis.version}</version>
<scope>provided</scope>
</dependency>
修改代码避免创建工作流出现appconn空指针异常
修改DefaultLinkedAppConnResolver.java
这个类:
旧:
@Override
public List<AppConn> resolveAppConnByUser(String userName, String workspaceName, String typeName) {
//todo 后面可以使用数据库表来定义用户可以加载的AppConn.
List<AppConn> appConns = new ArrayList<>();
for(AppConn appConn : AppConnManager.getAppConnManager().listAppConns()){
//可以在这里根据用户情况和工作空间情况,限制appConn的加载
appConns.add(appConn);
}
return appConns;
}
新:
@Override
public List<AppConn> resolveAppConnByUser(String userName, String workspaceName, String typeName) {
//todo 后面可以使用数据库表来定义用户可以加载的AppConn.
List<AppConn> appConns = new ArrayList<>(AppConnManager.getAppConnManager().listAppConns());
return appConns;
}
至于为啥这里会出现空指针,还有待研究
配置IDEA启动
IDEA新增六个Application,对应前面的六个模块,运行主类都在每个模块的scala目录下面,记得勾选如下所示
DSSOrchestratorServerApplication
需要设置VM运行参数
-DserviceName=dss-framework-orchestrator-server
-DDSS_HOME=/Users/roger/Downloads/wedatasphere-dss-1.0.0-dist/dss-1.0.0
DSSProjectServerApplication
需要设置VM运行参数
-DserviceName=dss-framework-project-server
-DDSS_HOME=/Users/roger/Downloads/wedatasphere-dss-1.0.0-dist/dss-1.0.0
-DDSS_INSTALL_HOME_VAL=/Users/roger/Downloads/wedatasphere-dss-1.0.0-dist/dss-1.0.0
DSSDatapipeServerApplication
需要设置VM运行参数
-DserviceName=dss-datapipe-server
DSSWorkflowServerApplication
需要设置VM运行参数
-DserviceName=dss-workflow-server
DSSApiServiceServerApplication
需要设置VM运行参数
-DserviceName=dss-apiservice-server
DSSFowExecutionServerApplication
需要设置VM运行参数
-DserviceName=dss-flow-execution-server
JVM参数解析:
-DserviceName
这个参数主要用于服务查找对应的properties配置文件
-DDSS_HOME
和-DDSS_INSTALL_HOME_VAL
这个参数主要用于在发现appconns插件依赖相关的lib包(本文步骤二的解压路径),并且在DSSProjectServerApplication
项目启动初始化的时候会上传到hadoop的hdfs文件系统中,便于后面的流程使用
数据库修改
在项目启动后的一些使用过程中,可能会出现一些appconn lib无法找到导致的异常,需要去手动修改一下数据库
修改dss_appconn
这张表的appconn_class_path
字段的内容,修改为你本地存储这些lib的路径(本文步骤二的解压路径),例如:
前端本地调试设置
修改web文件下下面的vue.config.js
文件,修改devServe
下面的内容如下:
修改target
的内容为你网关的地址,例如:
其他问题
spark提交任务的时候会读取当前系统用户,如果是分布式部署dss和linkis的话,就会出现linkis所在的机器没有dss所在机器的用户,就会出现Permission denied: user=Administrator, access=WRITE, inode="/user":root:supergroup:drwxr-xr-x
的异常,可以在linkis所在的服务器上执行以下命令即可解决:
adduser Administrator
groupadd supergroup
usermod -a -G supergroup Administrator
更新
由于最近linkis放出了相关开发手册,其实发现dss的配置文件不用拷贝到各个工程中去,只需在jvm 参数配置好配置文件路径就行,参考如下: 添加:-Xbootclasspath/a:你的配置文件路径即可