调试相关

因为linkis本身模块比较多,调试起来有一定的难度,下面就指导大家如何进行一次本地的服务调试(基于1.0.3版本)。

linkis 1.0.3版本前,还未进入apache孵化,组织还是归属webank,主类的包名为`com.webank.wedatasphere.linkis`,调试时,注意区分。

step 1 准备源码并编译

  1. git clone https://github.com/apache/incubator-linkis.git
  2. cd incubator-linkis
  3. #如果需要 可以切换到对应的分支上
  4. #git checkout dev-xxx
  5. mvn -N install
  6. mvn clean Install

step2 必要的参数配置

对于incubator-linkis/assembly-combined-package/assembly-combined/conf/下的配置文件,需要对数据库以及hive meta等必要启动参数进行配置。

step3 调整log4j.xml配置

为了方便调试的时候将日志打印到控制台,需要修改下默认的log4j2.xml文件,修改appender默认为console。需要移除默认的RollingFile的append,增加console的appender,如下所示: 调试指引 - 图1 log4j2.xml 路径 incubator-linkis/assembly-combined-package/assembly-combined/conf/log4j2.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration status="error" monitorInterval="30">
  3. <appenders>
  4. <RollingFile name="RollingFile" append="false" fileName="logs/${sys:serviceName}.log"
  5. filePattern="logs/$${date:yyyy-MM}/${sys:serviceName}/linkis-log-%d{yyyy-MM-dd}-%i.log">
  6. <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%-40t] %c{1.} (%L) [%M] - %msg%xEx%n"/>
  7. <SizeBasedTriggeringPolicy size="100MB"/>
  8. <DefaultRolloverStrategy max="10"/>
  9. </RollingFile>
  10. <Console name="Console" target="SYSTEM_OUT">
  11. <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
  12. <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger{36} %L %M - %msg%xEx%n"/>
  13. </Console>
  14. </appenders>
  15. <loggers>
  16. <root level="INFO">
  17. <appender-ref ref="RollingFile"/>
  18. <appender-ref ref="Console"/>
  19. </root>
  20. </loggers>
  21. </configuration>

step 4 整体调试方案

Linkis和DSS的服务都依赖Eureka,所以需要首先启动Eureka服务,Eureka服务也可以用您已经启动的Eureka。Eureka启动后就可以启动其他服务了。

因为linkis内部通过-DserviceName参数设置应用名以及使用的配置文件,所以-DserviceName是必须的启动VM参数

可以通过 “-Xbootclasspath/a:配置文件路径“命令。将配置文件,追加到引导程序类的搜索路劲末尾,即将依赖的配置文件加到classpath中

通过勾选Include dependencies with “Provided” scope ,这样可以在调试时,引入provided级别的依赖包。

Microservice Governance Services组件

linkis-mg-eureka的启动

  1. [main Class]
  2. org.apache.linkis.eureka.SpringCloudEurekaApplication
  3. [VM Opitons]
  4. -DserviceName=linkis-mg-eureka -Xbootclasspath/a:D:\yourDir\incubator-linkis\assembly-combined-package\assembly-combined\conf
  5. [Program arguments]
  6. --spring.profiles.active=eureka --eureka.instance.preferIpAddress=true
  7. [Use classpath of module]
  8. linkis-eureka

如果不想默认的20303端口可以修改端口配置:

  1. 文件路径:conf/application-eureka.yml
  2. 修改端口:
  3. server:
  4. port: 8080 ##启动的端口
具体配置如下:

老版idea配置 调试指引 - 图2 新版idea配置 调试指引 - 图3

启动后可以通过http://localhost:20303/ 查看eureka服务列表 调试指引 - 图4

linkis-mg-gateway的启动配置

  1. [main Class]
  2. org.apache.linkis.gateway.springcloud.LinkisGatewayApplication
  3. [VM Opitons]
  4. -DserviceName=linkis-mg-gateway -Xbootclasspath/a:D:\yourDir\incubator-linkis\assembly-combined-package\assembly-combined\conf
  5. [Use classpath of module]
  6. linkis-gateway-server-support

注意 若出现’org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j-to-slf4j’ 问题 请exclude掉,对spring-boot-starter-logging的依赖

Public Enhancement Services组件

linkis-ps-publicservice的启动配置

  1. [main Class]
  2. org.apache.linkis.filesystem.LinkisPublicServiceApp
  3. [VM Opitons]
  4. -DserviceName=linkis-ps-publicservice -Xbootclasspath/a:D:\yourDir\incubator-linkis\assembly-combined-package\assembly-combined\conf
  5. [Use classpath of module]
  6. #linkis < 1.1.0 为linkis-jobhistory
  7. #linkis >= 1.1.0 为linkis-storage-script-dev-server
  8. linkis-storage-script-dev-server

linkis-ps-cs的启动配置

  1. [main Class]
  2. org.apache.linkis.cs.server.LinkisCSApplication
  3. [VM Opitons]
  4. -DserviceName=linkis-ps-cs -Xbootclasspath/a:D:\yourDir\incubator-linkis\assembly-combined-package\assembly-combined\conf
  5. [Use classpath of module]
  6. linkis-cs-server

Computation Governance Services 组件

linkis-cg-linkismanager启动

  1. [main Class]
  2. org.apache.linkis.manager.am.LinkisManagerApplication
  3. [VM Opitons]
  4. -DserviceName=linkis-cg-linkismanager -Xbootclasspath/a:D:\yourDir\incubator-linkis\assembly-combined-package\assembly-combined\conf
  5. [Use classpath of module]
  6. linkis-application-manager

linkis-cg-entrance启动

  1. [main Class]
  2. org.apache.linkis.entrance.LinkisEntranceApplication
  3. [VM Opitons]
  4. -DserviceName=linkis-cg-entrance -Xbootclasspath/a:D:\yourDir\incubator-linkis\assembly-combined-package\assembly-combined\conf
  5. [Use classpath of module]
  6. linkis-entrance

注:暂不支持Windows本地调试的服务

linkis-cg-engineplugin(ecp):需要读取本地的ecp物料,本地调试需要先准备好对应的物料,建议在远程进行调试

linkis-cg-engineconnmanager(ecm):暂时ecm启动引擎使用的是unix的方式,不支持windows环境

  1. 下面是通过正常成功安装后,linkis服务启动具体的详细命令参数
  2. LinkisInstallDir:完整linkis的安装目录
  3. [linkis-mg-eureka]
  4. nohup java -DserviceName=linkis-mg-eureka -Xmx512M -XX:+UseG1GC -Xloggc:/data/LinkisInstallDir/logs/linkis-mg-eureka-gc.log -cp /data/LinkisInstallDir/conf/:/data/LinkisInstallDir/lib/linkis-spring-cloud-services/linkis-mg-eureka/* org.apache.linkis.eureka.SpringCloudEurekaApplication --eureka.instance.hostname=bdpujes110001 --spring.profiles.active=eureka 2>&1 > /data/LinkisInstallDir/logs/linkis-mg-eureka.out &
  5. [linkis-mg-gateway]
  6. nohup java -DserviceName=linkis-mg-gateway -Xmx512M -XX:+UseG1GC -Xloggc:/data/LinkisInstallDir/logs/linkis-mg-gateway-gc.log -cp /data/LinkisInstallDir/conf/:/data/LinkisInstallDir/lib/linkis-spring-cloud-services/linkis-mg-gateway/* org.apache.linkis.gateway.springcloud.LinkisGatewayApplication 2>&1 > /data/LinkisInstallDir/logs/linkis-mg-gateway.out &
  7. [linkis-ps-publicservice]
  8. nohup java -DserviceName=linkis-ps-publicservice -Xmx512M -XX:+UseG1GC -Xloggc:/data/LinkisInstallDir/logs/linkis-ps-publicservice-gc.log -cp /data/LinkisInstallDir/conf/:/data/LinkisInstallDir/lib/linkis-commons/public-module/*:/data/LinkisInstallDir/lib/linkis-public-enhancements/linkis-ps-publicservice/* org.apache.linkis.jobhistory.LinkisPublicServiceApp 2>&1 > /data/LinkisInstallDir/logs/linkis-ps-publicservice.out &
  9. [linkis-cg-linkismanager]
  10. nohup java -DserviceName=linkis-cg-linkismanager -Xmx512M -XX:+UseG1GC -Xloggc:/data/LinkisInstallDir/logs/linkis-cg-linkismanager-gc.log -cp /data/LinkisInstallDir/conf/:/data/LinkisInstallDir/lib/linkis-commons/public-module/*:/data/LinkisInstallDir/lib/linkis-computation-governance/linkis-cg-linkismanager/* org.apache.linkis.manager.am.LinkisManagerApplication 2>&1 > /data/LinkisInstallDir/logs/linkis-cg-linkismanager.out &
  11. [linkis-ps-cs]
  12. nohup java -DserviceName=linkis-ps-cs -Xmx512M -XX:+UseG1GC -Xloggc:/data/LinkisInstallDir/logs/linkis-ps-cs-gc.log -cp /data/LinkisInstallDir/conf/:/data/LinkisInstallDir/lib/linkis-commons/public-module/*:/data/LinkisInstallDir/lib/linkis-public-enhancements/linkis-ps-cs/* org.apache.linkis.cs.server.LinkisCSApplication 2>&1 > /data/LinkisInstallDir/logs/linkis-ps-cs.out &
  13. [linkis-cg-entrance]
  14. nohup java -DserviceName=linkis-cg-entrance -Xmx512M -XX:+UseG1GC -Xloggc:/data/LinkisInstallDir/logs/linkis-cg-entrance-gc.log -cp /data/LinkisInstallDir/conf/:/data/LinkisInstallDir/lib/linkis-commons/public-module/*:/data/LinkisInstallDir/lib/linkis-computation-governance/linkis-cg-entrance/* org.apache.linkis.entrance.LinkisEntranceApplication 2>&1 > /data/LinkisInstallDir/logs/linkis-cg-entrance.out &
  15. [linkis-cg-engineconnmanager]
  16. nohup java -DserviceName=linkis-cg-engineconnmanager -Xmx512M -XX:+UseG1GC -Xloggc:/data/LinkisInstallDir/logs/linkis-cg-engineconnmanager-gc.log -cp /data/LinkisInstallDir/conf/:/data/LinkisInstallDir/lib/linkis-commons/public-module/*:/data/LinkisInstallDir/lib/linkis-computation-governance/linkis-cg-engineconnmanager/* org.apache.linkis.ecm.server.LinkisECMApplication 2>&1 > /data/LinkisInstallDir/logs/linkis-cg-engineconnmanager.out &
  17. [linkis-cg-engineplugin]
  18. nohup java -DserviceName=linkis-cg-engineplugin -Xmx512M -XX:+UseG1GC -Xloggc:/data/LinkisInstallDir/logs/linkis-cg-engineplugin-gc.log -cp /data/LinkisInstallDir/conf/:/data/LinkisInstallDir/lib/linkis-commons/public-module/*:/data/LinkisInstallDir/lib/linkis-computation-governance/linkis-cg-engineplugin/* org.apache.linkis.engineplugin.server.LinkisEngineConnPluginServer 2>&1 > /data/LinkisInstallDir/logs/linkis-cg-engineplugin.out &

远程调试服务步骤

1. 打开远程调试端口

1.1 明确需要调试的包所在的服务

根据需要调试的代码位置,确定其所属的服务

1.2 进入{LINKIS_HOME}/sbin/ext,修改模块配置文件开启远程调用端口

c-port

2. 重启需要调试的服务

sh linkis-daemon.sh restart ps-publicservice(如果不确定服务名称,在 {LINKIS_HOME}/sbin/linkis-start-all.sh 内查询)

3. 编译器配置远程调试

如下图所示打开窗口并配置远程调试的端口,服务,以及模块
c-debug

4. 开始调试

点击调试按钮,出现如下信息代表可以开始调试
企业微信截图_16500167527083