參考:
參考【后端編譯 | Apache Linkis】】
<mysql.connector.scope>compile</mysql.connector.scope>
<!--<mysql.connector.scope>test</mysql.connector.scope>-->
如果您是本地第一次使用,必須在最外層工程pom.xml所在目錄先執行以下命令:
mvn -N install
在最外層工程pom.xml所在目錄執行以下命令
mvn clean install -DskipTests
參考【管理臺編譯 | Apache Linkis】
在 Linkis 源碼文件夾下,子目錄 linkis-dist/package/conf 中,是 Linkis 的一些默認配置文件,將配置文件復制到自己的配置文件目錄,如D:\linkis\linkis-package\conf
增加日志輸出到控制臺的配置,修改后內容如下:
<configuration status="error" monitorInterval="30">
<properties>
<property name="LOG_PATH">logs</property>
<property name="LOG_FILE">linkis</property>
</properties>
<appenders>
<RollingFile name="RollingFile" append="true" fileName="${LOG_PATH}/${LOG_FILE}.log"
filePattern="${LOG_PATH}/$${date:yyyy-MM}/${LOG_FILE}/linkis-log-%d{yyyy-MM-dd-hh}-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%-40t] %c{1.} (%L) [%M] [JobId-%X{jobId}] - %msg%xEx%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<console name="Console-Plain" target="SYSTEM_OUT">
<!--輸出日志的格式-->
<PatternLayout pattern="%m%n"/>
</console>
</appenders>
<loggers>
<root level="INFO">
<appender-ref ref="Console-Plain"/>
</root>
<logger name="com.netflix.loadbalancer.DynamicServerListLoadBalancer" level="warn" additivity="true">
<appender-ref ref="Console-Plain"/>
</logger>
</loggers>
</configuration>
創建數據庫,并執行linkis數據庫腳本,修改linkis.properties配置文件。
所有微服務名稱如下:
├── linkis-cg-engineconnmanager 引擎管理服務
├── linkis-cg-engineplugin 引擎插件管理服務
├── linkis-cg-entrance 計算治理入口服務
├── linkis-cg-linkismanager 計算治理管理服務
├── linkis-mg-eureka 微服務注冊中心服務
├── linkis-mg-gateway Linkis網關服務
├── linkis-ps-publicservice 公共服務
Linkis 和 DSS 的服務都依賴 Eureka,所以我們需要首先啟動 Eureka 服務,Eureka 服務可以在本地啟動,也可以使用遠程啟動的服務。保證各個服務都能訪問到 Eureka 的 IP 和端口之后,就可以開始著手啟動其他微服務了。
在 Linkis 內部是通過-DserviceName 參數設置應用名以及使用配置文件,所以-DserviceName 是必須要指定的 VM 啟動參數。
可以通過 “-Xbootclasspath/a:配置文件路徑”命令,將配置文件追加到引導程序類的路徑末尾,即將依賴的配置文件加到 classpath 中。
通過勾選 Include dependencies with “Provided” scope ,可以在調試時,引入 provided 級別的依賴包。
服務名:
linkis-mg-eureka
啟動類:
org.apache.linkis.eureka.SpringCloudEurekaApplication
VM參數:
-DserviceName=linkis-mg-eureka -Xbootclasspath/a\:D:\linkis\linkis-package\conf
program參數:
--spring.profiles.active=eureka --eureka.instance.preferIpAddress=true
直接運行此Application,成功啟動后可以通過http://localhost:20303/ 查看 eureka 服務列表。
附:如果服務器已有linkis-mg-eureka服務,可以使用nginx作為代理訪問(端口不能直接訪問)。修改nginx.conf,配置如下
upstream eureka-host {
server eurake服務器IP:20303;
}
location /eureka {
proxy_pass http://eurake服務器IP:20303;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /eureka/js/wro.js {
proxy_pass http://eureka-host/eureka/js/wro.js;
}
location /eureka/css/wro.css {
proxy_pass http://eureka-host/eureka/css/wro.css;
}
location /eureka/images/spring-logo-eureka.png {
proxy_pass http://eureka-host/eureka/images/spring-logo-eureka.png;
}
location /eureka/fonts/montserrat-webfont.woff {
proxy_pass http://eureka-host/eureka/fonts/montserrat-webfont.woff;
}
location /eureka/fonts/varela_round-webfont.woff {
proxy_pass http://eureka-host/eureka/fonts/varela_round-webfont.woff;
}
location /eureka/fonts/montserrat-webfont.ttf {
proxy_pass http://eureka-host/eureka/fonts/montserrat-webfont.ttf;
}
location /eureka/fonts/varela_round-webfont.ttf {
proxy_pass http://eureka-host/eureka/fonts/varela_round-webfont.ttf;
}
location ^~/eureka-state {
proxy_pass http://eureka-host/;
}
可通過http://代理IP:代理端口/eureka-state 訪問eurake web
其他服務訪問eurake,修改application-linkis.yml中eurake配置
defaultZone: http://代理IP:代理端口/eureka
linkis-mg-gateway 是 Linkis 的服務網關,所有的請求都會經由 gateway 來轉發到對應的服務上。
啟動服務器前,首先需要編輯 conf/linkis-mg-gateway.properties 配置文件,增加管理員用戶名和密碼,【用戶名需要與你當前登錄的機器用戶名保持一致?待驗證】。我配置為如下,用于dss登錄。
wds.linkis.admin.user=hadoop
wds.linkis.admin.password=123456
設置 linkis-mg-gateway的啟動Application:
服務名:
linkis-mg-gateway
啟動類:
org.apache.linkis.gateway.springcloud.LinkisGatewayApplication
VM參數:
-DserviceName=linkis-mg-gateway -Xbootclasspath/a\:D:\linkis\linkis-package\conf
啟動服務,可正常啟動,不過,在服務調用時,會報gatewayParsers空異常?
參考【關于linkis-spring-cloud-gateway 服務的空指針以及gatewayProperties無法賦值問題 · Issue #1086 · apache/linkis (github.com)】,做如下調整:
1.修改linkis-spring-cloud-gateway模塊下的pom.xml。添加如下內容,并修改reactor-netty包版本,重新import。(不先import,下面修改Project Structure的修改會丟失)。
<!-- only for debug -->
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<!-- <version>0.9.7.RELEASE</version>-->
<version>0.9.20.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-pes-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-jobhistory</artifactId>
<version>${project.version}</version>
</dependency>
<!-- instance label -->
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-instance-label-server</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- only for debug -->
2.打開Project Structrue,刪除linkis-engineplugin-openlookeng、linkis-eureka、linkis-metadata模塊下重復的Source Folders和Resource Folders。【沒有重復則跳過此步驟】。
3.linkis-spring-cloud-gateway模塊添加linkis-gateway-server-support-1.5.0-SNAPSHOT.jar到classpath。
4.修改linkis-mg-gateway.properties文件,在mybatis包掃描配置中添加jobhistory模塊bean和entity包掃描。
5.保存設置,重新啟動linkis-mg-gateway服務。調試gatewayParsers不為null。
publicservice 是 Linkis 的公共增強服務,為其他微服務模塊提供統一配置管理、上下文服務、物料庫、數據源管理、微服務管理和歷史任務查詢等功能的模塊。
設置linkis-ps-publicservice的啟動Application:
服務名:
linkis-ps-publicservice
啟動類:
org.apache.linkis.filesystem.LinkisPublicServiceApp
VM參數:
-DserviceName=linkis-ps-publicservice -Xbootclasspath/a\:D:\linkis\linkis-package\conf
如果需要物料上傳需求,做以下調整:
<!-- only for debug -->
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-datasource-manager-server</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-bmlserver</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-metadata</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-cs-server</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-instance-label-server</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-udf-service</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-jobhistory</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-configuration</artifactId>
<version>${project.version}</version>
</dependency>
<!-- only for debug -->
服務名:
linkis-cg-linkismanager
啟動類:
org.apache.linkis.manager.LinkisManagerApplication
VM參數:
-DserviceName=linkis-cg-linkismanager -Xbootclasspath/a:D:\linkis\linkis-package\conf
修改linkis-cg-linkismanager.properties,配置wds.linkis.engineconn.home參數【需解壓linkis安裝包到指定目錄】
#wds.linkis.engineconn.home=/appcom/Install/LinkisInstall/lib/linkis-engineconn-plugins
#wds.linkis.engineconn.plugin.loader.store.path=/appcom/Install/LinkisInstall/lib/linkis-engineconn-plugins
wds.linkis.engineconn.home=D:\\linkis\\linkis-package\\lib\\linkis-engineconn-plugins
服務名:
linkis-cg-entrance
啟動類:
org.apache.linkis.entrance.LinkisEntranceApplication
VM參數:
-DserviceName=linkis-cg-entrance -Xbootclasspath/a:D:\linkis\linkis-package\conf
服務名:
linkis-cg-engineconnmanager
啟動類:
org.apache.linkis.ecm.server.LinkisECMApplication
VM參數:
-DserviceName=linkis-cg-engineconnmanager -Xbootclasspath/a:D:\linkis\linkis-package\conf
linkis-cg-engineconnmanager模塊調試暫只支持Mac OS 和 Linux系統。【可參考官方文檔調試 Debug 指引 | Apache Linkis進行遠程調試】
啟動控制臺可以看到如下異常:
start register ecm
RPC-Sender-Asyn-Thread-ListenerBus add a new listener=> class org.apache.linkis.rpc.BaseRPCSender$$anon$1
Flipping property: linkis-cg-linkismanager.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit=2147483647
Shutdown hook installed for: NFLoadBalancer-PingTimer-linkis-cg-linkismanager
Client: linkis-cg-linkismanager instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=linkis-cg-linkismanager,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
Flipping property: linkis-cg-linkismanager.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit=2147483647
Start to linkis-ec-clear shell
Shell linkis-ec-clear.sh execution failed, msg:Cannot run program "sh": CreateProcess error=2, 系統找不到指定的文件。
End to linkis-ec-clear shell
Flipping property: linkis-cg-linkismanager.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit=2147483647
org.apache.linkis.ecm.server.service.impl.DefaultECMHealthService@251b3e8a changed status Starting=> Running.
ECM:ServiceInstance(linkis-cg-engineconnmanager, DIGITAL-MAYANJ:9102, 0) is ready
SpringCloudInstanceLabelClient app state ACCEPTING_TRAFFIC
SpringCloudInstanceLabelClient init
至此,查看eureka界面,查看服務列表:
新建數據庫dss,前后執行db目錄下的dss_ddl.sql、dss_dml.sql腳本文件
如果您是本地第一次使用,必須在最外層工程pom.xml所在目錄先執行以下命令:
mvn -N install
在最外層工程pom.xml所在目錄執行以下命令
mvn clean install -DskipTests
在 DSS 源碼文件夾下,子目錄conf 中,是 dss 的一些默認配置文件,將配置文件復制到自己的配置文件目錄,如D:\dss\dss-1.1.2\conf
增加日志輸出到控制臺的配置,修改內容如下:
<configuration status="error" monitorInterval="30">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger{36} %L %M - %msg%xEx%n"/>
</Console>
</appenders>
<loggers>
<root level="INFO">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
服務名:
dss-server
啟動類:
com.webank.wedatasphere.dss.DSSServerApplication
VM參數:
-DserviceName=dss-framework-orchestrator-server -DDSS\_HOME=D:\\dss\\dss-1.1.2 -Xbootclasspath/a\:D:\\dss\\dss-1.1.2\\conf
修改dss-server模塊下的pom.xml,添加如下內容:
<!-- only for debug -->
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-rpc</artifactId>
<version>${linkis.version}</version>
</dependency>
<dependency>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<groupId>org.springframework.cloud</groupId>
<version>${spring.cloud.version}</version>
</dependency>
<dependency>
<groupId>com.webank.wedatasphere.dss</groupId>
<artifactId>dss-sender-service</artifactId>
<version>${dss.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
<!-- only for debug -->
由于dss-server啟動,com.webank.wedatasphere.dss.common.utils.ZipHelper會使用到zip命令,需要安裝zip和unzip命令【下載地址zip and unzip for the windows command line (stahlworks.com)】,直接下載安裝即可。
修改com.webank.wedatasphere.dss.common.utils.ZipHelper 源碼。將源碼中String[] strArr=dirPath.split(File.separator);修改為如下代碼:
String[] strArr=null;
if (FsPath.WINDOWS) {
strArr=dirPath.split("\\" + File.separator);
} else {
strArr=dirPath.split(File.separator);
}
修改linkis項目中org.apache.linkis.storage.fs.impl.LocalFileSystem源碼:
@Override
public boolean create(String dest) throws IOException {
LOG.info("try to create file with path:" + dest);
File file=new File(dest);
if (!FsPath.WINDOWS && !isOwner(file.getParent())) {
throw new IOException("you have no permission to create file " + dest);
}
try {
boolean created=file.createNewFile();
if (created && !FsPath.WINDOWS) {
setPermission(new FsPath(dest), this.getDefaultFilePerm());
if (!user.equals(getOwner(dest))) {
setOwner(new FsPath(dest), user, null);
}
}
return created;
} catch (Throwable e) {
file.delete();
if (e instanceof IOException) {
throw (IOException) e;
} else {
throw new IOException(e);
}
}
}
服務名:
dss-apps-server
啟動類:
com.webank.wedatasphere.dss.apps.DSSAppsServerApplication
VM參數:
-DserviceName=dss-apps-server -DDSS\_HOME=D:\\dss\\dss-1.1.2 -Xbootclasspath/a\:D:\\dss\\dss-1.1.2\\conf
修改dss-server模塊下的pom.xml,添加如下內容:
<!-- only for debug -->
<dependency>
<groupId>org.apache.linkis</groupId>
<artifactId>linkis-rpc</artifactId>
<version>${linkis.version}</version>
</dependency>
<dependency>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<groupId>org.springframework.cloud</groupId>
<version>${spring.cloud.version}</version>
</dependency>
<dependency>
<groupId>com.webank.wedatasphere.dss</groupId>
<artifactId>dss-sender-service</artifactId>
<version>${dss.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
<!-- only for debug -->
至此,查看eurake服務列表:
參考【DataSphereStudio-Doc/zh_CN/開發文檔/前端編譯文檔.md at main · WeDataSphere/DataSphereStudio-Doc (github.com)】
本地編譯node版本為16.15.1 ,learna版本為 6.4.0
編譯啟動,瀏覽器打開http://localhost:8080。使用1.4.2中配置的用戶名和密碼登錄。
本文中調試過程基于linkis和DSS的master分支,由于社區活躍,代碼變化頻繁,部分內容會有一些出入,可按需和調試日志做適當調整。還有很多功能沒有進行調試,如任務創建、執行等,各種appcon集成等。
作為微軟全力以赴的新Windows系統,其投入的精力肯定不是Windows 10所能比的。
據微軟最新的表態,微軟表示Windows 10X系統將通過容器方式,不僅可以支持大多數傳統桌面應用程序,而且能確保操作系統免受惡意軟件和性能下降的影響。不過微軟也表示通過容器運行Win32應用會受到限制,部分權限無法獲得支持。
這就意味著要么所有應用都能夠訪問諸如相機這樣的隱私敏感硬件,要么所有都無法訪問。用戶無法在文件管理器中使用由第三方開發者設計的擴展或者插件。例如,能夠移動和復制文件的實用應用TeraCop可能就無法在Windows 10X上使用。
微軟表示當前沒有計劃支持系統任務欄插件、文件管理器加載項等等。此外微軟還將會阻止鉤子(hook)方式來截取鍵盤和鼠標的操作。
Windows 10X可以運行從Microsoft Store外部下載的應用程序,但是這些應用程序必須具有良好的信譽和簽名代碼。