title: Installation EngineConn Plugin sidebar_position: 3

This article mainly introduces the use of Linkis EngineConnPlugins, mainly from the aspects of compilation and installation.

1. Compilation and packaging of EngineConnPlugins

After Linkis 1.0, the engine is managed by EngineConnManager, and the EngineConnPlugin (ECP) supports real-time effectiveness. In order to facilitate the EngineConnManager to be loaded into the corresponding EngineConnPlugin by labels, it needs to be packaged according to the following directory structure (take hive as an example):

hive engine home directory, must be the name of the engine
│   ├──  dist  # Dependency and configuration required for engine startup, different versions of the engine need to be in this directory to prevent the corresponding version directory
│   │   └── 2.3.3 # Engine version
│   │       └── conf # Configuration file directory required by the engine
│   │       └── lib  # Dependency package required by EngineConnPlugin
│   ├── plugin #EngineConnPlugin directory, this directory is used for engine management service package engine startup command and resource application
│       └── 2.3.3 # Engine version
│           └── linkis-engineplugin-hive-1.0.0.jar  #Engine module package (only need to place a separate engine package)   

If you are adding a new engine, you can refer to hive's assembly configuration method, source code directory: linkis-engineconn-pluginshive/src/main/assembly/distribution.xml

2. Engine Installation

2.1 Plugin package installation

1.First, confirm the dist directory of the engine: wds.linkis.engineconn.home (get the value of this parameter from ${LINKIS_HOME}/conf/linkis.properties), this parameter is used by EngineConnPluginServer to read the configuration file that the engine depends on And third-party Jar packages. If the parameter (wds.linkis.engineconn.dist.load.enable=true) is set, the engine in this directory will be automatically read and loaded into the Linkis BML (material library).

2.Second, confirm the engine Jar package directory: wds.linkis.engineconn.plugin.loader.store.path, which is used by EngineConnPluginServer to read the actual implementation Jar of the engine.

It is highly recommended specifying wds.linkis.engineconn.home and wds.linkis.engineconn.plugin.loader.store.path as the same directory, so that you can directly unzip the engine ZIP package exported by maven into this directory, such as: Place it in the ${LINKIS_HOME}/lib/linkis-engineconn-plugins directory.

${LINKIS_HOME}/lib/linkis-engineconn-plugins:
└── hive
    └── dist
    └── plugin
└── spark
    └── dist
    └── plugin

If the two parameters do not point to the same directory, you need to place the dist and plugin directories separately, as shown in the following example:

## dist directory
${LINKIS_HOME}/lib/linkis-engineconn-plugins/dist:
└── hive
    └── dist
└── spark
    └── dist
## plugin directory
${LINKIS_HOME}/lib/linkis-engineconn-plugins/plugin:
└── hive
    └── plugin
└── spark
    └── plugin

2.2 Configuration modification of management console (optional)

The configuration of the Linkis1.0 management console is managed according to the engine label. If the new engine has configuration parameters, you need to insert the corresponding configuration parameters in the Configuration, and you need to insert the parameters in three tables:

linkis_configuration_config_key: Insert the key and default values of the configuration parameters of the engin
linkis-manager_label: Insert engine label such as hive-1.2.1
linkis_configuration_category: Insert the catalog relationship of the engine
linkis_configuration_config_value: Insert the configuration that the engine needs to display

If it is an existing engine and a new version is added, you can modify the version of the corresponding engine in the linkis_configuration_dml.sql file for execution

2.3 Engine refresh

  1. The engine supports real-time refresh. After the engine is placed in the corresponding directory, Linkis1.0 provides a method to load the engine without shutting down the server, and just send a request to the linkis-engineconn-plugin-server service through the restful interface, that is, the actual deployment of the service Ip+port, the request interface is http://ip:port/api/rest_j/v1/rpc/receiveAndReply, the request method is POST, the request body is {“method”:“/enginePlugin/engineConn/refreshAll”}.

  2. Restart refresh: the engine catalog can be forced to refresh by restarting

### cd to the sbin directory, restart linkis-engineconn-plugin-server
cd /Linkis1.0.0/sbin
## Execute linkis-daemon script
sh linkis-daemon.sh restart linkis-cg-linkismanager

3.Check whether the engine refresh is successful: If you encounter problems during the refresh process and need to confirm whether the refresh is successful, you can check whether the last_update_time of the linkis_engine_conn_plugin_bml_resources table in the database is the time when the refresh is triggered.