首頁 > 軟體

Apache Linkis 中介軟體架構及快速安裝步驟

2022-03-15 13:03:37

1、Apache Linkis 介紹

Linkis 在上層應用和底層引擎之間構建了一層計算中介軟體。通過使用Linkis 提供的REST/WebSocket/JDBC 等標準介面,上層應用可以方便地連線存取Spark, Presto, Flink 等底層引擎,同時實現跨引擎上下文共用、統一的計算任務和引擎治理與編排能力。

MySQL/Spark/Hive/Presto/Flink 等底層引擎,同時實現變數、指令碼、函數和資原始檔等使用者資源的跨上層應用互通。作為計算中介軟體,Linkis 提供了強大的連通、複用、編排、擴充套件和治理管控能力。通過計算中介軟體將應用層和引擎層解耦,簡化了複雜的網路呼叫關係,降低了整體複雜度,同時節約了整體開發和維護成本。

2.1 計算中介軟體概念

沒有Linkis之前

上層應用以緊耦合方式直連底層引擎,使得資料平臺變成複雜的網狀結構

有Linkis之後

通過計算中介軟體將應用層和引擎層解耦,以標準化可複用方式簡化複雜的網狀呼叫關係,降低資料平臺複雜度

2.2 整體架構

Linkis 在上層應用和底層引擎之間構建了一層計算中介軟體。通過使用Linkis 提供的REST/WebSocket/JDBC 等標準介面,上層應用可以方便地連線存取Spark, Presto, Flink 等底層引擎。

2.3 核心特點

  • 豐富的底層計算儲存引擎支援。目前支援的計算儲存引擎:Spark、Hive、Python、Presto、ElasticSearch、MLSQL、TiSpark、JDBC和Shell等。正在支援中的計算儲存引擎:Flink(>=1.0.2版本已支援)、Impala等。支援的指令碼語言:SparkSQL, HiveQL, Python, Shell, Pyspark, R, Scala 和JDBC 等。
  • 強大的計算治理能力。基於Orchestrator、Label Manager和客製化的Spring Cloud Gateway等服務,Linkis能夠提供基於多級標籤的跨叢集/跨IDC 細粒度路由、負載均衡、多租戶、流量控制、資源控制和編排策略(如雙活、主備等)支援能力。
  • 全棧計算儲存引擎架構支援。能夠接收、執行和管理針對各種計算儲存引擎的任務和請求,包括離線批次任務、互動式查詢任務、實時流式任務和儲存型任務;
  • 資源管理能力。ResourceManager 不僅具備 Linkis0.X 對 Yarn 和 Linkis EngineManager 的資源管理能力,還將提供基於標籤的多級資源分配和回收能力,讓 ResourceManager 具備跨叢集、跨計算資源型別的強大資源管理能力。
  • 統一上下文服務。為每個計算任務生成context id,跨使用者、系統、計算引擎的關聯管理使用者和系統資原始檔(JAR、ZIP、Properties等),結果集,引數變數,函數等,一處設定,處處自動參照;
  • 統一物料。系統和使用者級物料管理,可分享和流轉,跨使用者、系統共用物料。

2.4 支援的引擎型別

引擎

引擎版本

Linkis 0.X 版本要求

Linkis 1.X 版本要求

說明

Flink

1.12.2

>=dev-0.12.0, PR #703 尚未合併

>=1.0.2

Flink EngineConn。支援FlinkSQL 程式碼,也支援以Flink Jar 形式啟動一個新的Yarn 應用程式。

Impala

>=3.2.0, CDH >=6.3.0"

>=dev-0.12.0, PR #703 尚未合併

ongoing

Impala EngineConn. 支援Impala SQL 程式碼.

Presto

>= 0.180

>=0.11.0

ongoing

Presto EngineConn. 支援Presto SQL 程式碼.

ElasticSearch

>=6.0

>=0.11.0

ongoing

ElasticSearch EngineConn. 支援SQL 和DSL 程式碼.

Shell

Bash >=2.0

>=0.9.3

>=1.0.0_rc1

Shell EngineConn. 支援Bash shell 程式碼.

MLSQL

>=1.1.0

>=0.9.1

ongoing

MLSQL EngineConn. 支援MLSQL 程式碼.

JDBC

MySQL >=5.0, Hive >=1.2.1

>=0.9.0

>=1.0.0_rc1

JDBC EngineConn. 已支援MySQL 和HiveQL,可快速擴充套件支援其他有JDBC Driver 包的引擎, 如Oracle.

Spark

Apache 2.0.0~2.4.7, CDH >=5.4.0

>=0.5.0

>=1.0.0_rc1

Spark EngineConn. 支援SQL, Scala, Pyspark 和R 程式碼.

Hive

Apache >=1.0.0, CDH >=5.4.0

>=0.5.0

>=1.0.0_rc1

Hive EngineConn. 支援HiveQL 程式碼.

Hadoop

Apache >=2.6.0, CDH >=5.4.0

>=0.5.0

ongoing

Hadoop EngineConn. 支援Hadoop MR/YARN application.

Python

>=2.6

>=0.5.0

>=1.0.0_rc1

Python EngineConn. 支援python 程式碼.

TiSpark

1.1

>=0.5.0

ongoing

TiSpark EngineConn. 支援用SparkSQL 查詢TiDB.

2、Apache Linkis 快速部署

2.1 注意事項

因為mysql-connector-java驅動是GPL2.0協定,不滿足Apache開源協定關於license的政策,因此從1.0.3版本開始,提供的Apache版本官方部署包,預設是沒有mysql-connector-java-x.x.x.jar的依賴包,安裝部署時需要新增依賴到對應的lib包中。

Linkis1.0.3 預設已適配的引擎列表如下:

引擎型別

適配情況

官方安裝包是否包含

Python

1.0已適配

包含

Shell

1.0已適配

包含

Hive

1.0已適配

包含

Spark

1.0已適配

包含

2.2 確定環境

2.2.1 依賴

   

引擎型別

依賴環境

特殊說明

Python

Python環境

紀錄檔和結果集如果設定hdfs://則依賴HDFS環境

JDBC

可以無依賴

紀錄檔和結果集路徑如果設定hdfs://則依賴HDFS環境

Shell

可以無依賴

紀錄檔和結果集路徑如果設定hdfs://則依賴HDFS環境

Hive

依賴Hadoop和Hive環境

 

Spark

依賴Hadoop/Hive/Spark

 

要求:安裝Linkis需要至少3G記憶體。

預設每個微服務JVM堆記憶體為512M,可以通過修改​​SERVER_HEAP_SIZE​​來統一調整每個微服務的堆記憶體,如果您的伺服器資源較少,我們建議修改該引數為128M。如下:

vim ${LINKIS_HOME}/deploy-config/linkis-env.sh

# java application default jvm memory.
export SERVER_HEAP_SIZE="128M"

2.2.2 環境變數

官網範例:

#JDK
export JAVA_HOME=/nemo/jdk1.8.0_141

##如果不使用Hive、Spark等引擎且不依賴Hadoop,則不需要修改以下環境變數
#HADOOP  
export HADOOP_HOME=/appcom/Install/hadoop
export HADOOP_CONF_DIR=/appcom/config/hadoop-config
#Hive
export HIVE_HOME=/appcom/Install/hive
export HIVE_CONF_DIR=/appcom/config/hive-config
#Spark
export SPARK_HOME=/appcom/Install/spark
export SPARK_CONF_DIR=/appcom/config/spark-config/
export PYSPARK_ALLOW_INSECURE_GATEWAY=1  # Pyspark必須加的引數

範例:

2.3 安裝包下載

​​https://linkis.apache.org/zh-CN/download/main​​

2.4 不依賴HDFS的基礎設定修改

vi deploy-config/linkis-env.sh

#SSH_PORT=22        #指定SSH埠,如果單機版本安裝可以不設定
deployUser=hadoop      #指定部署使用者
LINKIS_INSTALL_HOME=/appcom/Install/Linkis    # 指定安裝目錄
WORKSPACE_USER_ROOT_PATH=file:///tmp/hadoop    # 指定使用者根目錄,一般用於儲存使用者的指令碼檔案和紀錄檔檔案等,是使用者的工作空間。
RESULT_SET_ROOT_PATH=file:///tmp/linkis   # 結果集檔案路徑,用於儲存Job的結果集檔案
ENGINECONN_ROOT_PATH=/appcom/tmp #存放ECP的安裝路徑,需要部署使用者有寫許可權的本地目錄
ENTRANCE_CONFIG_LOG_PATH=file:///tmp/linkis/  #ENTRANCE的紀錄檔路徑
## LDAP設定,預設Linkis只支援部署使用者登入,如果需要支援多使用者登入可以使用LDAP,需要設定以下引數:
#LDAP_URL=ldap://localhost:1389/ 
#LDAP_BASEDN=dc=webank,dc=com

2.5 修改資料庫設定

vi deploy-config/db.sh

2.6 安裝

執行安裝指令碼:​​sh bin/install.sh​

install.sh指令碼會詢問您是否需要初始化資料庫並匯入後設資料。

因為擔心使用者重複執行install.sh指令碼,把資料庫中的使用者資料清空,所以在install.sh執行時,會詢問使用者是否需要初始化資料庫並匯入後設資料。

2.7 檢查是否安裝成功

2.8 快速啟動Linkis

啟動服務

sh sbin/linkis-start-all.sh

檢視是否啟動成功

可以在Eureka介面檢視服務啟動成功情況,檢視方法:

使用​​http://${EUREKA_INSTALL_IP}:${EUREKA_PORT}​​, 在瀏覽器中開啟,檢視服務是否註冊成功。

如果您沒有在config.sh指定EUREKA_INSTALL_IP和EUREKA_INSTALL_IP,則HTTP地址為:http://127.0.0.1:20303

預設會啟動8個Linkis微服務,其中圖下linkis-cg-engineconn服務為執行任務才會啟動

2.9 問題集

1、telnet

<-----start to check used cmd---->
check command fail
 need 'telnet' (your linux command not found)
Failed to  + check env

解決:sudo yum -y install telnet

2、connection exception

mkdir: Call From hadoop01/192.168.88.111 to hadoop01:9820 failed on connection exception: java.net.ConnectException: 拒絕連線; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
Failed to  + create hdfs:///tmp/linkis directory

解決:啟動HDFS

到此這篇關於Apache Linkis 中介軟體架構及快速安裝的文章就介紹到這了,更多相關Apache Linkis 中介軟體內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com