<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://linkis.apache.org/blog</id>
    <title>Apache Linkis Blog</title>
    <updated>2023-03-08T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://linkis.apache.org/blog"/>
    <subtitle>Apache Linkis Blog</subtitle>
    <icon>https://linkis.apache.org/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Linkis 1.3.2 Integration with OceanBase]]></title>
        <id>/2023/03/08/linkis-integration-with-oceanbase</id>
        <link href="https://linkis.apache.org/blog/2023/03/08/linkis-integration-with-oceanbase"/>
        <updated>2023-03-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This article mainly introduces the integration of OceanBase database in Linkis 1.3.2 version. OceanBase database is compatible with most functions and syntax of MySQL 5.7/8.0. Therefore, the OceanBase database can be used as MySQL.]]></summary>
        <content type="html"><![CDATA[<p>This article mainly introduces the integration of OceanBase database in <code>Linkis</code> 1.3.2 version. OceanBase database is compatible with most functions and syntax of MySQL 5.7/8.0. Therefore, the OceanBase database can be used as MySQL.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-preparations">1. Preparations<a class="hash-link" href="#1-preparations" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="11-environment-installation">1.1 Environment installation<a class="hash-link" href="#11-environment-installation" title="Direct link to heading">​</a></h3><p>Install and deploy the OceanBase database, see <a href="https://en.oceanbase.com/docs/community-observer-en-10000000000829647" target="_blank" rel="noopener noreferrer">Quick experience</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="12-environment-verification">1.2 Environment Verification<a class="hash-link" href="#12-environment-verification" title="Direct link to heading">​</a></h3><p>You can use the MySQL command to verify the installation of the OceanBase database.</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">mysql </span><span class="token operator">-</span><span class="token plain">h${ip} </span><span class="token operator">-</span><span class="token plain">P${port} </span><span class="token operator">-</span><span class="token plain">u${username} </span><span class="token operator">-</span><span class="token plain">p${password} </span><span class="token operator">-</span><span class="token plain">D${db_name}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The connection is successful as shown in the figure below:
<img loading="lazy" src="/assets/images/ob-conn-ad13249d704982c7e8d9ffa0c47ce50a.png" width="1092" height="202" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="2-linkis-submits-oceanbase-database-tasks">2. Linkis submits OceanBase database tasks<a class="hash-link" href="#2-linkis-submits-oceanbase-database-tasks" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="21-submit-tasks-through-the-shell">2.1 Submit tasks through the shell<a class="hash-link" href="#21-submit-tasks-through-the-shell" title="Direct link to heading">​</a></h3><p>shell</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">sh</span><span class="token plain"> ./bin/linkis-cli -engineType jdbc-4 -codeType jdbc -code </span><span class="token string" style="color:rgb(255, 121, 198)">"show tables"</span><span class="token plain"> -submitUser hadoop -proxyUser hadoop -runtimeMap wds.linkis.jdbc.connect.url</span><span class="token operator">=</span><span class="token plain">jdbc:mysql://</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">${ip}</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">:</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">${port}</span><span class="token plain">/</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">${db_name}</span><span class="token plain"> -runtimeMap wds.linkis.jdbc.driver</span><span class="token operator">=</span><span class="token plain">com.mysql.jdbc.Driver -runtimeMap wds.linkis.jdbc.username</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">${username}</span><span class="token plain"> -runtimeMap wds.linkis.jdbc.password </span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">${password}</span><span class="token plain"> </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="22-submit-tasks-through-linkis-sdk">2.2 Submit tasks through Linkis SDK<a class="hash-link" href="#22-submit-tasks-through-linkis-sdk" title="Direct link to heading">​</a></h3><p><code>Linkis</code> provides <code>SDK</code> of <code>Java</code> and <code>Scala</code> to submit tasks to <code>Linkis</code> server. For details, please refer to <a href="/docs/latest/user-guide/sdk-manual">JAVA SDK Manual</a>. For <code>OceanBase</code> tasks, you only need to modify <code>EngineConnType</code> and <code>CodeType</code> parameters in <code>Demo</code>:</p><div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Map&lt;String, Object&gt; labels = new HashMap&lt;String, Object&gt;(); </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">labels.put (LabelKeyConstant.ENGINE_TYPE_KEY, "jdbc-4"); // required engineType Label</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">labels.put(LabelKeyConstant.USER_CREATOR_TYPE_KEY, "hadoop-IDE");// required execute user and creator </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">labels.put(LabelKeyConstant.CODE_TYPE_KEY, "jdbc"); // required codeType </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="23-multi-data-source-support">2.3 Multi-data source support<a class="hash-link" href="#23-multi-data-source-support" title="Direct link to heading">​</a></h3><p>Address: Login Management Platform --&gt; Data Source Management</p><p>Step 1: Create a new data source</p><p><img loading="lazy" src="/assets/images/ds-manage-en-4553078ddd8283ec8c3bf10acc693b63.png" width="1895" height="570" class="img_ev3q"></p><p><img loading="lazy" src="/assets/images/new-en-0d0f086445007fb10aa4a2dba292d41b.png" width="800" height="788" class="img_ev3q"></p><p>Step 2: Connection test</p><p>Click Test Connect button to test
<img loading="lazy" src="/assets/images/ob-test-en-38b41fbc94deb1fa6f66f41eb5f5fc57.png" width="1689" height="355" class="img_ev3q"></p><p>Step 3: Publish data source</p><p><img loading="lazy" src="/assets/images/publish-1-en-1eca28f80ec46376adc445554473df33.png" width="1661" height="236" class="img_ev3q"></p><p><img loading="lazy" src="/assets/images/publish-2-en-37d03ef777c5fcc02986963c9ba97f4b.png" width="792" height="220" class="img_ev3q"></p><p>Step 4: Submit the OceanBase task by specifying the data source name</p><p>Request URL: <code>http://${gateway_url}:${port}/api/rest_j/v1/entrance/submit</code> Request</p><p>method: POST</p><p>Request parameter:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"executionContent"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token property">"code"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"show databases"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token property">"runType"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"jdbc"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"params"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token property">"variable"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token property">"configuration"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token property">"startup"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token property">"runtime"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">                </span><span class="token property">"wds.linkis.engine.runtime.datasource"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"ob-test"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"labels"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token property">"engineType"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"jdbc-4"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Response：</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"method"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"/api/entrance/submit"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"status"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">0</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"message"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"OK"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token property">"data"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"taskID"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token number">93</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token property">"execID"</span><span class="token operator">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"exec_id018017linkis-cg-entrance000830fb1364:9104IDE_hadoop_jdbc_0"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" src="/assets/images/show-status-en-845ef09ab1a2735ec00519663edc94f0.png" width="1881" height="449" class="img_ev3q"></p>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Engine Material Management]]></title>
        <id>/2022/12/02/material-manage</id>
        <link href="https://linkis.apache.org/blog/2022/12/02/material-manage"/>
        <updated>2022-12-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[background]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="background">background<a class="hash-link" href="#background" title="Direct link to heading">​</a></h2><p>Engine material management is the linkis engine material management system, which is mainly used to manage Linkis engine material files and store various engine files of users, including engine type, engine version and other information. The overall process is that the compressed file is uploaded to the material library (BML) through the front-end browser, and the material compressed file is decompressed and verified. If the engine does not exist locally when it needs to be executed, it needs to be searched in the material library, downloaded, installed and registered for execution.</p><p>Has the following function points:</p><p>1) Support uploading packaged engine files. The size of uploaded files is affected by nginx configuration, and the file type is zip file type. It is not supported to package zip compressed files by yourself in the windows environment.</p><p>2) Support for updating existing engine materials. After updating, add a storage version of bml engine materials in BML, and the current version can be rolled back and deleted.</p><p>3) An engine involves two engine materials, namely lib and conf, which can be managed separately.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="architecture-diagram">Architecture Diagram<a class="hash-link" href="#architecture-diagram" title="Direct link to heading">​</a></h2><p><img loading="lazy" src="/assets/images/bml-94c1a3494a1d7b2321ad2c911c530901.jpg" width="934" height="924" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="architecture-description">Architecture Description<a class="hash-link" href="#architecture-description" title="Direct link to heading">​</a></h2><ol><li><p>Engine material management requires administrator privileges in the Linkis web management console, and the administrator field in the test environment needs to be set during development and debugging.</p></li><li><p>Engine material management involves adding, updating, and deleting engine material files. Material files are divided into lib and conf to store them separately. The concept of two versions is involved in the file, one is the version of the engine itself, and the other is the material version. In the update operation, if the material is modified, a new material version will be added and stored in BML, which supports the material version delete and rollback.</p></li><li><p>Use the BML Service to store the engine material files, call the BML service to store the files through RPC, and obtain the stored resource id and version and save them.</p></li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="core-process">Core process<a class="hash-link" href="#core-process" title="Direct link to heading">​</a></h3><ol><li>Upload the engine plug-in file of zip type, first store it in the Home directory of the engine plug-in and decompress the file, and then start the refresh program.</li><li>Compress the conf and lib directories in the decompressed engine file, upload it to the BML (material management system), obtain the corresponding BML resource id and resource version, and read the corresponding engine name and version information.</li><li>In the engine material resource table, add a new engine material record, and each upload will generate lib and conf data respectively. In addition to recording the name and type information of the engine, the most important thing is to record the information of the engine in the material management system, including the resource id and version information of the engine, which are linked to the resource table in BML.</li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="database-design">Database Design<a class="hash-link" href="#database-design" title="Direct link to heading">​</a></h2><p>Engine Material Resource Information Table (linkis_cg_engine_conn_plugin_bml_resources)</p><table><thead><tr><th>Field name</th><th>Function</th><th>Remarks</th></tr></thead><tbody><tr><td>id</td><td>engine material package identification id</td><td>Primary key</td></tr><tr><td>engine_conn_type</td><td>The location where resources are stored</td><td>such as Spark</td></tr><tr><td>version</td><td>engine version</td><td>such as Spark's v2.4.3</td></tr><tr><td>file_name</td><td>engine file name</td><td>such as lib.zip</td></tr><tr><td>file_size</td><td>engine file size</td><td></td></tr><tr><td>last_modified</td><td>The last modification time of the file</td><td></td></tr><tr><td>bml_resource_id</td><td>The id of the record resource in BML (material management system)</td><td>The id used to identify the engine file in BML</td></tr><tr><td>bml_resource_version</td><td>record resource version in BML</td><td>such as v000001</td></tr><tr><td>create_time</td><td>resource creation time</td><td></td></tr><tr><td>last_update_time</td><td>The last update time of the resource</td><td></td></tr></tbody></table>]]></content>
        <author>
            <name>aiceflower</name>
            <uri>https://github.com/aiceflower/</uri>
        </author>
        <category label="bml" term="bml"/>
        <category label="linki1.3.1" term="linki1.3.1"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Apache Linkis 1.3.0 PES(Public Enhancement Services) Some Service Merge]]></title>
        <id>/2022/10/09/linkis-service-merge</id>
        <link href="https://linkis.apache.org/blog/2022/10/09/linkis-service-merge"/>
        <updated>2022-10-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Foreword]]></summary>
        <content type="html"><![CDATA[<h3 class="anchor anchorWithStickyNavbar_LWe7" id="foreword">Foreword<a class="hash-link" href="#foreword" title="Direct link to heading">​</a></h3><p>With the development of business and the update and iteration of community products, we found that Linkis1 There are too many .X services, and services can be merged appropriately to reduce the number of services and facilitate deployment and debugging. At present, Linkis services are mainly divided into three categories, including computing governance services (CG: entrance/ecp/ecm/linkismanager), public enhancement services (PS: publicservice/datasource/cs) and microservice governance services (MG: Gateway/Eureka) . There are too many sub-services extended by these three types of services, and services can be merged, so that all PS services can be merged, CG services can be merged, and ecm services can be separated out. </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="service-merge-changes">Service merge changes<a class="hash-link" href="#service-merge-changes" title="Direct link to heading">​</a></h3><p>The main changes of this service merge are as follows: </p><ul><li>Support Restful service forwarding: The modification point is mainly the forwarding logic of Gateway, similar to the current publicservice service merge parameter: wds.linkis.gateway.conf.publicservice.list </li><li>Support Change the remote call of the RPC service to a local call, similar to LocalMessageSender, and now it is possible to complete the return of the local call by changing the Sender </li><li>Configuration file changes </li><li>Service start and stop script changes </li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="to-be-achieved">To be achieved<a class="hash-link" href="#to-be-achieved" title="Direct link to heading">​</a></h3><ul><li>Basic goal: merge PS services into one service </li><li>Basic goal: merge CG service into CG-Service and ECM</li><li>Advanced goal: merge CG services into one server </li><li>Final goal: remove eureka, gateway into single service </li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="specific-changes">Specific changes<a class="hash-link" href="#specific-changes" title="Direct link to heading">​</a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="gateway-changes-orgapachelinkisgatewayujesroutehacontextgatewayrouter">Gateway changes (org.apache.linkis.gateway.ujes.route.HaContextGatewayRouter)<a class="hash-link" href="#gateway-changes-orgapachelinkisgatewayujesroutehacontextgatewayrouter" title="Direct link to heading">​</a></h4><div class="language-scala codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-scala codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">//Override before changing </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">def route(gatewayContext: GatewayContext): ServiceInstance = { </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    if (gatewayContext.getGatewayRoute.getRequestURI.contains(HaContextGatewayRouter.CONTEXT_SERVICE_STR) || </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        gatewayContext.getGatewayRoute.getRequestURI.contains(HaContextGatewayRouter.OLD_CONTEXT_SERVICE_PREFIX)){ </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      val params: util.HashMap[String, String] = gatewayContext.getGatewayRoute.getParams </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (!gatewayContext.getRequest.getQueryParams.isEmpty) { </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        for ((k, vArr) &lt;- gatewayContext.getRequest.getQueryParams) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          if (vArr.nonEmpty) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            params.putIfAbsent(k, vArr.head)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (gatewayContext.getRequest.getHeaders.containsKey(ContextHTTPConstant.CONTEXT_ID_STR)) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        params.putIfAbsent(ContextHTTPConstant.CONTEXT_ID_STR, gatewayContext.getRequest.getHeaders.get(ContextHTTPConstant.CONTEXT_ID_STR)(0))</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (null == params || params.isEmpty) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        dealContextCreate(gatewayContext)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        var contextId : String = null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        for ((key, value) &lt;- params) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          if (key.equalsIgnoreCase(ContextHTTPConstant.CONTEXT_ID_STR)) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            contextId = value</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        if (StringUtils.isNotBlank(contextId)) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          dealContextAccess(contextId.toString, gatewayContext)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          dealContextCreate(gatewayContext)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }else{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  //after modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  override def route(gatewayContext: GatewayContext): ServiceInstance = {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    if (</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        gatewayContext.getGatewayRoute.getRequestURI.contains(</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          RPCConfiguration.CONTEXT_SERVICE_REQUEST_PREFIX</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        )</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      val params: util.HashMap[String, String] = gatewayContext.getGatewayRoute.getParams</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (!gatewayContext.getRequest.getQueryParams.isEmpty) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        for ((k, vArr) &lt;- gatewayContext.getRequest.getQueryParams.asScala) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          if (vArr.nonEmpty) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            params.putIfAbsent(k, vArr.head)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (gatewayContext.getRequest.getHeaders.containsKey(ContextHTTPConstant.CONTEXT_ID_STR)) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        params.putIfAbsent(</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          ContextHTTPConstant.CONTEXT_ID_STR,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          gatewayContext.getRequest.getHeaders.get(ContextHTTPConstant.CONTEXT_ID_STR)(0)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        )</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (null == params || params.isEmpty) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        dealContextCreate(gatewayContext)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        var contextId: String = null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        for ((key, value) &lt;- params.asScala) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          if (key.equalsIgnoreCase(ContextHTTPConstant.CONTEXT_ID_STR)) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            contextId = value</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        if (StringUtils.isNotBlank(contextId)) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          dealContextAccess(contextId, gatewayContext)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          dealContextCreate(gatewayContext)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  // before modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  def dealContextCreate(gatewayContext:GatewayContext):ServiceInstance = {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val serviceId =  findService(HaContextGatewayRouter.CONTEXT_SERVICE_STR, list =&gt; {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      val services = list.filter(_.contains(HaContextGatewayRouter.CONTEXT_SERVICE_STR))</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      services.headOption</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    })</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val serviceInstances = ServiceInstanceUtils.getRPCServerLoader.getServiceInstances(serviceId.orNull)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    if (serviceInstances.size &gt; 0) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      val index = new Random().nextInt(serviceInstances.size)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      serviceInstances(index)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      logger.error(s"No valid instance for service : " + serviceId.orNull)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  //after modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  def dealContextCreate(gatewayContext: GatewayContext): ServiceInstance = {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val serviceId = findService(</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      RPCConfiguration.CONTEXT_SERVICE_NAME,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      list =&gt; {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        val services = list.filter(_.contains(RPCConfiguration.CONTEXT_SERVICE_NAME))</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        services.headOption</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    )</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val serviceInstances =</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      ServiceInstanceUtils.getRPCServerLoader.getServiceInstances(serviceId.orNull)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    if (serviceInstances.size &gt; 0) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      val index = new Random().nextInt(serviceInstances.size)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      serviceInstances(index)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      logger.error(s"No valid instance for service : " + serviceId.orNull)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  // before modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  def dealContextAccess(contextIdStr:String, gatewayContext: GatewayContext):ServiceInstance = {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val contextId : String = {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      var tmpId : String = null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (serializationHelper.accepts(contextIdStr)) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        val contextID : ContextID = serializationHelper.deserialize(contextIdStr).asInstanceOf[ContextID]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        if (null != contextID) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          tmpId = contextID.getContextId</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          logger.error(s"Deserializate contextID null. contextIDStr : " + contextIdStr)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        logger.error(s"ContxtIDStr cannot be deserialized. contextIDStr : " + contextIdStr)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (null == tmpId) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        contextIdStr</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        tmpId</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val instances = contextIDParser.parse(contextId)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    var serviceId:Option[String] = None</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    serviceId = findService(HaContextGatewayRouter.CONTEXT_SERVICE_STR, list =&gt; {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      val services = list.filter(_.contains(HaContextGatewayRouter.CONTEXT_SERVICE_STR))</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        services.headOption</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      })</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val serviceInstances = ServiceInstanceUtils.getRPCServerLoader.getServiceInstances(serviceId.orNull)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    if (instances.size() &gt; 0) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      serviceId.map(ServiceInstance(_, instances.get(0))).orNull</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    } else if (serviceInstances.size &gt; 0) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      serviceInstances(0)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      logger.error(s"No valid instance for service : " + serviceId.orNull)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">//after modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">def dealContextAccess(contextIdStr: String, gatewayContext: GatewayContext): ServiceInstance = {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val contextId: String = {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      var tmpId: String = null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (serializationHelper.accepts(contextIdStr)) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        val contextID: ContextID =</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          serializationHelper.deserialize(contextIdStr).asInstanceOf[ContextID]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        if (null != contextID) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          tmpId = contextID.getContextId</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          logger.error(s"Deserializate contextID null. contextIDStr : " + contextIdStr)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        logger.error(s"ContxtIDStr cannot be deserialized. contextIDStr : " + contextIdStr)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      if (null == tmpId) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        contextIdStr</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        tmpId</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val instances = contextIDParser.parse(contextId)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    var serviceId: Option[String] = None</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    serviceId = findService(</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      RPCConfiguration.CONTEXT_SERVICE_NAME,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      list =&gt; {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        val services = list.filter(_.contains(RPCConfiguration.CONTEXT_SERVICE_NAME))</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        services.headOption</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    )</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val serviceInstances =</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      ServiceInstanceUtils.getRPCServerLoader.getServiceInstances(serviceId.orNull)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    if (instances.size() &gt; 0) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      serviceId.map(ServiceInstance(_, instances.get(0))).orNull</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    } else if (serviceInstances.size &gt; 0) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      serviceInstances(0)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      logger.error(s"No valid instance for service : " + serviceId.orNull)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      null</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">// before modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">object HaContextGatewayRouter{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val CONTEXT_ID_STR:String = "contextId"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val CONTEXT_SERVICE_STR:String = "ps-cs"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  @Deprecated</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val OLD_CONTEXT_SERVICE_PREFIX = "contextservice"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val CONTEXT_REGEX: Regex = (normalPath(API_URL_PREFIX) + "rest_[a-zA-Z][a-zA-Z_0-9]*/(v\\d+)/contextservice/" + ".+").r</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">//after modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">object HaContextGatewayRouter {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val CONTEXT_ID_STR: String = "contextId"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  @deprecated("please use RPCConfiguration.CONTEXT_SERVICE_REQUEST_PREFIX")</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val CONTEXT_SERVICE_REQUEST_PREFIX = RPCConfiguration.CONTEXT_SERVICE_REQUEST_PREFIX</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  @deprecated("please use RPCConfiguration.CONTEXT_SERVICE_NAME")</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val CONTEXT_SERVICE_NAME: String =</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    if (</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        RPCConfiguration.ENABLE_PUBLIC_SERVICE.getValue &amp;&amp; RPCConfiguration.PUBLIC_SERVICE_LIST</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          .exists(_.equalsIgnoreCase(RPCConfiguration.CONTEXT_SERVICE_REQUEST_PREFIX))</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      RPCConfiguration.PUBLIC_SERVICE_APPLICATION_NAME.getValue</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    } else {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      RPCConfiguration.CONTEXT_SERVICE_APPLICATION_NAME.getValue</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val CONTEXT_REGEX: Regex =</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    (normalPath(API_URL_PREFIX) + "rest_[a-zA-Z][a-zA-Z_0-9]*/(v\\d+)/contextservice/" + ".+").r</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="rpc-service-changeorgapachelinkisrpcconfrpcconfiguration">RPC Service Change（org.apache.linkis.rpc.conf.RPCConfiguration）<a class="hash-link" href="#rpc-service-changeorgapachelinkisrpcconfrpcconfiguration" title="Direct link to heading">​</a></h4><div class="language-scala codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-scala codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">//before modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">val BDP_RPC_BROADCAST_THREAD_SIZE: CommonVars[Integer] = CommonVars("wds.linkis.rpc.broadcast.thread.num", new Integer(25))</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">//after modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">val BDP_RPC_BROADCAST_THREAD_SIZE: CommonVars[Integer] = CommonVars("wds.linkis.rpc.broadcast.thread.num", 25)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">//before modification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">val PUBLIC_SERVICE_LIST: Array[String] = CommonVars("wds.linkis.gateway.conf.publicservice.list", "query,jobhistory,application,configuration,filesystem,udf,variable,microservice,errorcode,bml,datasource").getValue .split(",") </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">//after change </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">val PUBLIC_SERVICE_LIST: Array[String] = CommonVars("wds.linkis.gateway.conf.publicservice.list", "cs,contextservice,data-source-manager,metadataquery,metadatamanager, query,jobhistory,application,configuration,filesystem,udf,variable,microservice,errorcode,bml,datasource").getValue.split(",") </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="configuration-file-changes">Configuration file changes<a class="hash-link" href="#configuration-file-changes" title="Direct link to heading">​</a></h4><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">##Remove part #Delete the </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">following configuration files </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">linkis</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">dist/package/conf/linkis</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">ps</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">cs.properties </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">linkis</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">dist/package/conf/linkis</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">ps</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">data</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">source</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">manager.properties</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">linkis</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">dist/package/conf/linkis</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">ps</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">metadataquery.properties</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">##modified part</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#modify linkis-dist/package/conf/linkis-ps-publicservice.properties</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#restful before modification</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.server.restful.scan.packages=org.apache.linkis.jobhistory.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.variable.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.configuration.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.udf.api</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.filesystem.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.filesystem.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.instance.label.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.metadata.restful.api</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.cs.server.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.bml.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.errorcode.server.restful</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#restful after modification</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.server.restful.scan.packages=org.apache.linkis.cs.server.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.datasourcemanager.core.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.metadata.query.server.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.jobhistory.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.variable.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.configuration.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.udf.api</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.filesystem.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.filesystem.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.instance.label.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.metadata.restful.api</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.cs.server.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.bml.restful</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.errorcode.server.restful</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#mybatis before modification</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.server.mybatis.mapperLocations=classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/jobhistory/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/variable/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/configuration/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/udf/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/instance/label/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/metadata/hive/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org/apache/linkis/metadata/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/bml/dao/impl/</span><span class="token important">*.xml</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.server.mybatis.typeAliasesPackage=org.apache.linkis.configuration.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.jobhistory.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.udf.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.variable.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.instance.label.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.manager.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.metadata.domain</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.bml.entity</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.server.mybatis.BasePackage=org.apache.linkis.jobhistory.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.variable.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.configuration.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.udf.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.instance.label.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.metadata.hive.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.metadata.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.bml.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.errorcode.server.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.publicservice.common.lock.dao</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#mybatis after modification</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.server.mybatis.mapperLocations=classpath</span><span class="token important">*:org/apache/linkis/cs/persistence/dao/impl/*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/datasourcemanager/core/dao/mapper/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/jobhistory/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/variable/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/configuration/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/udf/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/instance/label/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/metadata/hive/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org/apache/linkis/metadata/dao/impl/</span><span class="token important">*.xml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">classpath</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">org/apache/linkis/bml/dao/impl/</span><span class="token important">*.xml</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.server.mybatis.typeAliasesPackage=org.apache.linkis.cs.persistence.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.datasourcemanager.common.domain</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.datasourcemanager.core.vo</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.configuration.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.jobhistory.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.udf.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.variable.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.instance.label.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.manager.entity</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.metadata.domain</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.bml.entity</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.server.mybatis.BasePackage=org.apache.linkis.cs.persistence.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.datasourcemanager.core.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.jobhistory.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis. variable.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.configuration.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.udf.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.instance.label.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.metadata.hive.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org. apache.linkis.metadata.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.bml.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.errorcode.server.dao</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">org.apache.linkis.publicservice.common.lock.dao </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="deployment-script-changes-linkis-distpackagesbinlinkis-start-allsh">Deployment script changes (linkis-dist/package/sbin/linkis-start-all.sh)<a class="hash-link" href="#deployment-script-changes-linkis-distpackagesbinlinkis-start-allsh" title="Direct link to heading">​</a></h4><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">startup script remove the following part </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-ps-cs </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_NAME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"ps-cs"</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_IP</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$CS_INSTALL_IP</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">startApp </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"</span><span class="token string variable" style="color:rgb(189, 147, 249);font-style:italic">$ENABLE_METADATA_QUERY</span><span class="token string" style="color:rgb(255, 121, 198)">"</span><span class="token plain"> </span><span class="token operator">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"true"</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">then</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-ps-data-source-manager</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_NAME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"ps-data-source-manager"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_IP</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$DATASOURCE_MANAGER_INSTALL_IP</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  startApp</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-ps-metadataquery</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_NAME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"ps-metadataquery"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_IP</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$METADATA_QUERY_INSTALL_IP</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  startApp</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">fi</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-ps-cs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_NAME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"ps-cs"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_IP</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$CS_INSTALL_IP</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">checkServer</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"</span><span class="token string variable" style="color:rgb(189, 147, 249);font-style:italic">$ENABLE_METADATA_QUERY</span><span class="token string" style="color:rgb(255, 121, 198)">"</span><span class="token plain"> </span><span class="token operator">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"true"</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">then</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-ps-data-source-manager</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_NAME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"ps-data-source-manager"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_IP</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$DATASOURCE_MANAGER_INSTALL_IP</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  checkServer</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-ps-metadataquery</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_NAME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"ps-metadataquery"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_IP</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$METADATA_QUERY_INSTALL_IP</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  checkServer</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">fi</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#Service stop script remove the following part </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-ps-cs </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_NAME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"ps-cs"</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_IP</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$CS_INSTALL_IP</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">stopApp </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"</span><span class="token string variable" style="color:rgb(189, 147, 249);font-style:italic">$ENABLE_METADATA_QUERY</span><span class="token string" style="color:rgb(255, 121, 198)">"</span><span class="token plain"> </span><span class="token operator">==</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"true"</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">then</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-ps-data-source-manager </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  SERVER_NAME </span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"ps-data-source-manager"</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_IP</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$DATASOURCE_MANAGER_INSTALL_IP</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  stopApp </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-ps-metadataquery </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_NAME</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"ps-metadataquery"</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_IP</span><span class="token operator">=</span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$METADATA_QUERY_INSTALL_IP</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  stopApp </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">fi</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>For more details on service merge changes, see: <a href="https://github.com/apache/linkis/pull/2927/files" target="_blank" rel="noopener noreferrer">https://github.com/apache/linkis/pull/2927/files</a></p>]]></content>
        <author>
            <name>aiceflower</name>
            <uri>https://github.com/aiceflower/</uri>
        </author>
        <category label="blog" term="blog"/>
        <category label="linki1.3.0" term="linki1.3.0"/>
        <category label="service merge" term="service merge"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Deploy Apache Linkis1.1.1 and DSS1.1.0 based on CDH6.3.2]]></title>
        <id>/2022/09/27/linkis111-deploy</id>
        <link href="https://linkis.apache.org/blog/2022/09/27/linkis111-deploy"/>
        <updated>2022-09-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[With the development of business and the update and iteration of community products, we found that Linkis1. X has greatly improved its performance in terms of resource management and engine management, which can better meet the requirements of the construction of data middle stations. Compared with version 0.9.3 and the platform we used before, the user experience has also been greatly improved, and the problems such as the inability to view details on the task failure page have also been improved. Therefore, we decided to upgrade Linkis and the WDS suite. The following are the specific practical operations, which we hope will give you a reference.]]></summary>
        <content type="html"><![CDATA[<p>With the development of business and the update and iteration of community products, we found that Linkis1. X has greatly improved its performance in terms of resource management and engine management, which can better meet the requirements of the construction of data middle stations. Compared with version 0.9.3 and the platform we used before, the user experience has also been greatly improved, and the problems such as the inability to view details on the task failure page have also been improved. Therefore, we decided to upgrade Linkis and the WDS suite. The following are the specific practical operations, which we hope will give you a reference.</p><h1>1.Environment</h1><h2 class="anchor anchorWithStickyNavbar_LWe7" id="cdh632-component-versions">CDH6.3.2 Component versions<a class="hash-link" href="#cdh632-component-versions" title="Direct link to heading">​</a></h2><ul><li>hadoop:3.0.0-cdh6.3.2</li><li>hive:2.1.1-cdh6.3.2</li><li>spark：2.4.8</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="hardware-environment">hardware environment&nbsp;<a class="hash-link" href="#hardware-environment" title="Direct link to heading">​</a></h2><p>128G cloud physical machine*2</p><h1>2. Linkis installation and deployment</h1><h2 class="anchor anchorWithStickyNavbar_LWe7" id="21-compile-code-or-release-installation-package">2.1 Compile code or release installation package?<a class="hash-link" href="#21-compile-code-or-release-installation-package" title="Direct link to heading">​</a></h2><p>This installation deployment adopts the release installation package method. In order to adapt to the company's CDH6.3.2 version, the dependency packages of hadoop and hive need to be replaced with the CDH6.3.2 version. Here, the installation package is directly replaced. The dependent packages and modules to be replaced are shown in the following list.</p><div class="language-plain codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-plain codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// Modules involved </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">linkis-engineconn-plugins/spark</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">linkis-engineconn-plugins/hive</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">/linkis-commons/public-module</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">/linkis-computation-governance/</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-plain codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-plain codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">// List of cdh packages that need to be replaced</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/spark/dist/v2.4.8/lib/hive-shims-0.23-2.1.1-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/spark/dist/v2.4.8/lib/hive-shims-scheduler-2.1.1-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/spark/dist/v2.4.8/lib/hadoop-annotations-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/spark/dist/v2.4.8/lib/hadoop-auth-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/spark/dist/v2.4.8/lib/hadoop-common-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/spark/dist/v2.4.8/lib/hadoop-hdfs-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/spark/dist/v2.4.8/lib/hadoop-hdfs-client-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-client-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-mapreduce-client-common-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-mapreduce-client-jobclient-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-yarn-api-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-yarn-client-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-yarn-server-common-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-hdfs-client-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-mapreduce-client-core-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-mapreduce-client-shuffle-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/hive/dist/v2.1.1/lib/hadoop-yarn-common-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/flink/dist/v1.12.2/lib/hadoop-annotations-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/flink/dist/v1.12.2/lib/hadoop-auth-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/flink/dist/v1.12.2/lib/hadoop-mapreduce-client-core-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/flink/dist/v1.12.2/lib/hadoop-yarn-api-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/flink/dist/v1.12.2/lib/hadoop-yarn-client-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-engineconn-plugins/flink/dist/v1.12.2/lib/hadoop-yarn-common-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-commons/public-module/hadoop-annotations-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-commons/public-module/hadoop-auth-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-commons/public-module/hadoop-common-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-commons/public-module/hadoop-hdfs-client-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-computation-governance/linkis-cg-linkismanager/hadoop-annotations-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-computation-governance/linkis-cg-linkismanager/hadoop-auth-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-computation-governance/linkis-cg-linkismanager/hadoop-yarn-api-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-computation-governance/linkis-cg-linkismanager/hadoop-yarn-client-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./lib/linkis-computation-governance/linkis-cg-linkismanager/hadoop-yarn-common-3.0.0-cdh6.3.2.jar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="22-problems-encountered-during-deployment">2.2 Problems encountered during deployment<a class="hash-link" href="#22-problems-encountered-during-deployment" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="221--kerberos-configuration">2.2.1  Kerberos configuration<a class="hash-link" href="#221--kerberos-configuration" title="Direct link to heading">​</a></h3><p>It needs to be added in the linkis.properties public configuration</p><p>Each engine conf also needs to be added</p><div class="language-plain codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-plain codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.keytab.enable=true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.keytab.file=/hadoop/bigdata/kerberos/keytab</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.keytab.host.enabled=false</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.keytab.host=your_host</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="222--error-is-reported-after-hadoop-dependency-package-is-replaced">2.2.2  Error is reported after Hadoop dependency package is replaced<a class="hash-link" href="#222--error-is-reported-after-hadoop-dependency-package-is-replaced" title="Direct link to heading">​</a></h3><p>java.lang.NoClassDefFoundError:org/apache/commons/configuration2/Configuration</p><p><img loading="lazy" alt="image" src="/assets/images/config-err-0b7267a47e539866aefbe8be9db6c197.png" width="750" height="216" class="img_ev3q"></p><p>Cause: Configuration class conflict. Add a commons-configuration2-2.1.1.jar under the linkis commons module to resolve the conflict</p><h3></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="223-running-spark-python-etc-in-script-reports-no-plugin-for-xxx">2.2.3 Running spark, python, etc. in script reports no plugin for XXX<a class="hash-link" href="#223-running-spark-python-etc-in-script-reports-no-plugin-for-xxx" title="Direct link to heading">​</a></h3><p>Phenomenon: After modifying the version of Spark/Python in the configuration file, the startup engine reports no plugin for XXX</p><p><img loading="lazy" alt="image" src="/assets/images/pugin-error-0b7267a47e539866aefbe8be9db6c197.png" width="750" height="216" class="img_ev3q"></p><p>Reason: LabelCommonConfig.java and GovernanceCommonConf In scala, the version of the engine is written dead, the corresponding version is modified, and all jars containing these two classes (linkis computation governance common-1.1.1. jar and linkis label common-1.1.1. jar) in linkis and other components (including scheduleris) are replaced after compilation</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="224-python-engine-execution-error-initialization-failed">2.2.4 Python engine execution error, initialization failed<a class="hash-link" href="#224-python-engine-execution-error-initialization-failed" title="Direct link to heading">​</a></h3><ul><li>Modify python. py and remove the imported pandas module</li><li>Configure the python loading directory and modify the python engine's linkis-enginecon.properties</li></ul><div class="language-plain codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-plain codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">pythonVersion=/usr/local/bin/python3.6</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="225-failed-to-run-the-pyspark-task-and-reported-an-error">2.2.5 Failed to run the pyspark task and reported an error<a class="hash-link" href="#225-failed-to-run-the-pyspark-task-and-reported-an-error" title="Direct link to heading">​</a></h3><p><img loading="lazy" alt="image" src="/assets/images/pyspark-error-59e263d21e848c5bda995cdc900e0ca9.png" width="1542" height="341" class="img_ev3q"></p><p>Reason: PYSPARK is not set_ VERSION</p><p>resolvent:</p><p>Set two parameters in/etc/profile</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">export PYSPARK_ PYTHON=/usr/local/bin/python3.6</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">export PYSPARK_ DRIVER_PYTHON=/usr/local/bin/python3.6</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="226-error-occurs-when-executing-the-pyspark-task">2.2.6 Error occurs when executing the pyspark task<a class="hash-link" href="#226-error-occurs-when-executing-the-pyspark-task" title="Direct link to heading">​</a></h3><p>java.lang.NoSuchFieldError: HIVE<em> STATS</em> JDBC_ TIMEOUT</p><p><img loading="lazy" alt="image" src="/assets/images/spark-hive-verion-error-73f07dc42df540b1aeb4ea048a131fa8.png" width="1549" height="361" class="img_ev3q"></p><p>Reason: Spark 2.4.8 uses the hive1.2.1 package, but our hive has been upgraded to version 2.1.1. This parameter has been removed from hive2. Then the code in spark sql still calls the hive parameter, and then an error is reported,</p><p>Therefore, HIVE is deleted from the spark sql/hive code<em> STATS</em> JDBC<em> TIMEOUT This parameter is recompiled and packaged to replace the spark hive in spark 2.4.8</em> 2.11-2.4.8.jar</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="227-proxy-user-exception-during-jdbc-engine-execution">2.2.7 Proxy user exception during jdbc engine execution<a class="hash-link" href="#227-proxy-user-exception-during-jdbc-engine-execution" title="Direct link to heading">​</a></h3><p>Phenomenon: User A is used to execute a jdbc task 1. The engine chooses to reuse it. Then I also use User B to execute a jdbc task 2. It is found that the submitter of task 2 is A</p><p>Analysis reason:</p><p>ConnectionManager::getConnection</p><p><img loading="lazy" alt="image" src="/assets/images/jdbc-engine-analyze-e765a7057a729bb49816e9e7ebffc787.png" width="1027" height="439" class="img_ev3q"></p><p>When creating a datasource, we judge whether to create it according to the key. The key is a jdbc url, but this granularity may be a bit large, because different users may access the same datasource, such as hive. Their urls are the same, but their account passwords are different. So when the first user creates a datasource, the username has been specified. When the second user comes in, If the data source is found to exist, it will be used directly instead of creating a new data source. Therefore, the code submitted by user B will be executed by user A.</p><p>Solution: Reduce the key granularity of the data source cache map, and change it to jdbc. url+jdbc. user.</p><ol start="3"><li>DSS deployment
The installation process refers to the official website documents for installation configuration. The following describes some issues encountered in the installation and debugging process.</li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="31-the-database-list-displayed-on-the-left-side-of-the-dss-is-incomplete">3.1 The database list displayed on the left side of the DSS is incomplete<a class="hash-link" href="#31-the-database-list-displayed-on-the-left-side-of-the-dss-is-incomplete" title="Direct link to heading">​</a></h2><p>Analysis: The database information displayed in the DSS data source module is from the hive metabase. However, because of the permission control through the Sentry in CDH6, most of the hive table metadata information does not exist in the hive metastore, so the displayed data is missing.</p><p>resolvent:</p><p>The original logic is transformed into the way of using jdbc to link hive and obtain table data display from jdbc.</p><p>Simple logic description:</p><p>The properties information of jdbc is obtained through the IDE jdbc configuration information configured on the linkis console.</p><p>DBS: Get the schema through connection. getMetaData()</p><p>TBS: connection. getMetaData(). getTables() Get the tables under the corresponding db</p><p>COLUMNS: Get the columns information of the table by executing describe table</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="32-error-jdbc-is-reported-when-executing-jdbc-script-in-dss-workflow-name-is-empty">3.2 Error jdbc is reported when executing jdbc script in DSS workflow name is empty<a class="hash-link" href="#32-error-jdbc-is-reported-when-executing-jdbc-script-in-dss-workflow-name-is-empty" title="Direct link to heading">​</a></h2><p>Analysis: The default creator in the dss workflow is Schedulis. Because the related engine parameters of Schedulis are not configured in the management console, the parameters read are all empty.</p><p>Adding a category of Schedulis to the console gives an error, ”The Schedulis directory already exists. Because the creator in the scheduling system is schedulis, the Schedulis Category cannot be added. In order to better identify each system, the default creator in the dss workflow is changed to nod_exception. This parameter can add wds. linkis. flow. job. creator. v1=nod_execution in the dss flow execution server. properties.</p>]]></content>
        <author>
            <name>kevinWdong</name>
            <uri>https://github.com/kongslove</uri>
        </author>
        <category label="blog" term="blog"/>
        <category label="linki1.1.1" term="linki1.1.1"/>
        <category label="hadoop3.0.0-cdh6.3.2" term="hadoop3.0.0-cdh6.3.2"/>
        <category label="spark2.4.8" term="spark2.4.8"/>
        <category label="hive2.1.1" term="hive2.1.1"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Linkis1.1.1 adapts Hadoop 3.1.1 and deploys other services]]></title>
        <id>/2022/08/08/linkis111-compile-integration</id>
        <link href="https://linkis.apache.org/blog/2022/08/08/linkis111-compile-integration"/>
        <updated>2022-08-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Environment and Version]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="environment-and-version">Environment and Version<a class="hash-link" href="#environment-and-version" title="Direct link to heading">​</a></h2><ul><li>jdk-8 , maven-3.6.3</li><li>node-14.15.0(Compiling the front end requires)</li><li>Gradle-4.6(Compile qualitis quality service)</li><li>hadoop-3.1.1,Spark-3.0.1,Hive-3.1.2,Flink-1.13.2,Sqoop-1.4.7 (Apache version)</li><li>linkis-1.1.1</li><li>DataSphereStudio-1.1.0</li><li>Schudulis-0.7.0</li><li>Qualitis-0.9.2</li><li>Visualis-1.0.0</li><li>Streamis-0.2.0</li><li>Exchangis-1.0.0</li><li>Chrome recommends versions below 100</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="scenarios-and-versions-of-each-component">Scenarios and versions of each component<a class="hash-link" href="#scenarios-and-versions-of-each-component" title="Direct link to heading">​</a></h2><table><thead><tr><th>System name</th><th>Version</th><th>scene</th></tr></thead><tbody><tr><td>linkis</td><td>1.1.1</td><td>Engine orchestration, running and executing hive, spark, flinksql, shell, python, etc., unified data source management, etc</td></tr><tr><td>DataSphereStudio</td><td>1.1.0</td><td>Implement DAG scheduling of tasks, integrate the specifications of other systems and provide unified access, and provide sparksql based service API</td></tr><tr><td>Schudulis</td><td>0.7.0</td><td>Task scheduling, as well as scheduling details and rerouting, and provide trap data based on the selected time</td></tr><tr><td>Qualitis</td><td>0.9.2</td><td>Provide built-in SQL version and other functions, check common data quality and customizable SQL, verify some data that does not conform to the rules, and write it to the corresponding library</td></tr><tr><td>Exchangis</td><td>1.0.0</td><td>Hive to MySQL, data exchange between MySQL and hive</td></tr><tr><td>Streamis</td><td>0.2.0</td><td>Streaming development and Application Center</td></tr><tr><td>Visualis</td><td>1.0.0</td><td>Visual report display, can share external links</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="deployment-sequence">Deployment sequence<a class="hash-link" href="#deployment-sequence" title="Direct link to heading">​</a></h2><p>  You can select and adjust the sequence after serial number 3 However, one thing to pay attention to when deploying exchangis is to copy the sqoop engine plug-in of exchangis to the engine plug-in package under lib of linkis
Schedulis, qualitis, exchangis, streamis, visualis and other systems are integrated with DSS through their respective appconn. Note that after integrating the component appconn, restart the service module corresponding to DSS or restart DSS</p><ol><li>linkis</li><li>DataSphereStudio</li><li>Schedulis</li><li>Qualitis</li><li>Exchangis</li><li>Streamis</li><li>Visualis</li></ol><p><img loading="lazy" alt="image.png" src="/assets/images/sx1-808e41fd5ce8b7cdf2a72953efcfb52a.png" width="1184" height="690" class="img_ev3q"></p><p>If you integrate skywalking, you can see the service status and connection status in the extended topology diagram, as shown in the following figure:
<img loading="lazy" alt="image.png" src="/assets/images/sx2-72292e18cadcfa92b920613ea29abb73.png" width="677" height="607" class="img_ev3q">
At the same time, you can also clearly see the call link in the trace, as shown in the following figure, which is also convenient for you to locate the error log file of the specific service
<img loading="lazy" alt="image.png" src="/assets/images/sx3-967b6ac9e375892ec45cfc8fe8e1a46c.png" width="1913" height="319" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-adjustment-and-packaging">Dependency adjustment and packaging<a class="hash-link" href="#dependency-adjustment-and-packaging" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="linkis">linkis<a class="hash-link" href="#linkis" title="Direct link to heading">​</a></h3><p>Since spark uses version 3. X, Scala also needs to be upgraded to version 12
<a href="https://github.com/apache/linkis/tree/release-1.1.1" target="_blank" rel="noopener noreferrer">Original project code address</a>
<a href="https://github.com/ruY9527/linkis/tree/release-1.1.1-hadoop3.x" target="_blank" rel="noopener noreferrer">Adaptation modification code reference address</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-linkis">The pom file of linkis<a class="hash-link" href="#the-pom-file-of-linkis" title="Direct link to heading">​</a></h4><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">hadoop.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">3.1.1</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">hadoop.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">2.12.10</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.binary.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">2.12</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.binary.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">&lt;!-- hadoop-hdfs replace with hadoop-hdfs-client --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">dependency</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">groupId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">org.apache.hadoop</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">groupId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">artifactId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">hadoop-hdfs-client</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">artifactId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">${hadoop.version}</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-linkis-hadoop-common">The pom file of linkis-hadoop-common<a class="hash-link" href="#the-pom-file-of-linkis-hadoop-common" title="Direct link to heading">​</a></h4><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">       </span><span class="token comment" style="color:rgb(98, 114, 164)">&lt;!-- Notice here &lt;version&gt;${hadoop.version}&lt;/version&gt; , adjust according to whether you have encountered any errors --&gt;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">       </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">dependency</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">groupId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">org.apache.hadoop</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">groupId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">artifactId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">hadoop-hdfs-client</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">artifactId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">${hadoop.version}</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">dependency</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-linkis-engineplugin-hive">The pom file of linkis-engineplugin-hive<a class="hash-link" href="#the-pom-file-of-linkis-engineplugin-hive" title="Direct link to heading">​</a></h4><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">hive.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">3.1.2</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">hive.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-linkis-engineplugin-spark">The pom file of linkis-engineplugin-spark<a class="hash-link" href="#the-pom-file-of-linkis-engineplugin-spark" title="Direct link to heading">​</a></h4><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">spark.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">3.0.1</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">spark.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The getfield method in sparkscalaexecutor needs to adjust the following code</p><div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">protected def getField(obj: Object, name: String): Object = {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    // val field = obj.getClass.getField(name)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    val field = obj.getClass.getDeclaredField("in0")</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        field.setAccessible(true)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        field.get(obj)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-linkis-engineplugin-flink">The pom file of linkis-engineplugin-flink<a class="hash-link" href="#the-pom-file-of-linkis-engineplugin-flink" title="Direct link to heading">​</a></h4><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">flink.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">1.13.2</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">flink.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Due to the adjustment of some classes in Flink 1.12.2 and 1.13.2, we refer to the temporary "violence" method given by the community students: copy the classes in part 1.12.2 to 1.13.2, adjust the scala version to 12, and compile them by ourselves
It involves the specific modules of flink: flink-sql-client_${scala.binary.version}</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-- Note that the following classes are copied from 1.12.2 to 1.13.2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">org.apache.flink.table.client.config.entries.DeploymentEntry</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">org.apache.flink.table.client.config.entries.ExecutionEntry</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">org.apache.flink.table.client.gateway.local.CollectBatchTableSink</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">org.apache.flink.table.client.gateway.local.CollectStreamTableSink</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="image.png" src="/assets/images/flink1-087dcf93f3692dc19b9eff3ba204823d.png" width="937" height="472" class="img_ev3q"><img loading="lazy" alt="image.png" src="/assets/images/flink2-fa8164c77b9feccfd6381b816995fcdd.png" width="937" height="482" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="linkis-engineplugin-python">linkis-engineplugin-python<a class="hash-link" href="#linkis-engineplugin-python" title="Direct link to heading">​</a></h4><p><a href="https://github.com/apache/linkis/commit/7a26e85c53fc7cd55ddefbd78b1748b00f85ddd6" target="_blank" rel="noopener noreferrer">Reference pr</a>
If resource / Python's python In the PY file, there is import pandas as PD. If you do not want to install pandas, you need to remove it</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="linkis-label-common">linkis-label-common<a class="hash-link" href="#linkis-label-common" title="Direct link to heading">​</a></h4><p>org.apache.linkis.manager.label.conf.LabelCommonConfig
Modify the default version to facilitate the use of subsequent self compilation scheduling components</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">    public static final CommonVars&lt;String&gt; SPARK_ENGINE_VERSION =</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            CommonVars.apply("wds.linkis.spark.engine.version", "3.0.1");</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    public static final CommonVars&lt;String&gt; HIVE_ENGINE_VERSION =</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            CommonVars.apply("wds.linkis.hive.engine.version", "3.1.2");</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="linkis-computation-governance-common">linkis-computation-governance-common<a class="hash-link" href="#linkis-computation-governance-common" title="Direct link to heading">​</a></h4><p>org.apache.linkis.governance.common.conf.GovernanceCommonConf
Modify the default version to facilitate the use of subsequent self compilation scheduling components</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val SPARK_ENGINE_VERSION = CommonVars("wds.linkis.spark.engine.version", "3.0.1")</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  val HIVE_ENGINE_VERSION = CommonVars("wds.linkis.hive.engine.version", "3.1.2")</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="compile">Compile<a class="hash-link" href="#compile" title="Direct link to heading">​</a></h4><p>Ensure that the above modifications and environments are available and implemented in sequence</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">cd</span><span class="token plain"> linkis-x.x.x</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    mvn -N  </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    mvn clean </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"> -DskipTests</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="compilation-error-troubleshooting">Compilation error troubleshooting<a class="hash-link" href="#compilation-error-troubleshooting" title="Direct link to heading">​</a></h4><ul><li>If there is an error when you compile, try to enter a module to compile separately to see if there is an error and adjust it according to the specific error</li><li>For example, the following example (the py4j version does not adapt when the group Friends adapt to the lower version of CDH): if you encounter this problem, you can adjust the version with the corresponding method to determine whether to adapt</li></ul><p><img loading="lazy" alt="image.png" src="/assets/images/linkis1-8a23252e4187925ce9aa3baf384fc782.png" width="937" height="493" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="dataspherestudio">DataSphereStudio<a class="hash-link" href="#dataspherestudio" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/DataSphereStudio/tree/1.1.0" target="_blank" rel="noopener noreferrer">Original project code address</a>
<a href="https://github.com/ruY9527/DataSphereStudio/tree/1.1.0-hadoop3.x" target="_blank" rel="noopener noreferrer">Adaptation modification code reference address</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-dataspherestudio">The pom file of DataSphereStudio<a class="hash-link" href="#the-pom-file-of-dataspherestudio" title="Direct link to heading">​</a></h4><p>Since DSS relies on linkis, all compilers should compile linkis before compiling DSS</p><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">&lt;!-- scala consistent environment --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">2.12.10</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dss-dolphinschuduler-token">dss-dolphinschuduler-token<a class="hash-link" href="#dss-dolphinschuduler-token" title="Direct link to heading">​</a></h4><p>DolphinSchedulerTokenRestfulApi: Remove type conversion</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">responseRef.getValue("expireTime")</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="web-tuning">web tuning<a class="hash-link" href="#web-tuning" title="Direct link to heading">​</a></h4><p> <a href="https://github.com/WeBankFinTech/DataSphereStudio-Doc/blob/main/zh_CN/%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%89%8D%E7%AB%AF%E7%BC%96%E8%AF%91%E6%96%87%E6%A1%A3.md" target="_blank" rel="noopener noreferrer">Front end compilation address</a>
<a href="https://github.com/WeBankFinTech/DataSphereStudio/commit/1dc9d99648e9f78b2dfb4776df4b9f46ef530c8a" target="_blank" rel="noopener noreferrer">Reference pr</a>
Overwrite the contents of the following directories from the master branch, or build the web based on the master branch
<img loading="lazy" alt="image.png" src="/assets/images/dss1-20ef6540150ed9310355835fb507fbee.png" width="937" height="540" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="compile-1">Compile<a class="hash-link" href="#compile-1" title="Direct link to heading">​</a></h4><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">cd</span><span class="token plain"> DataSphereStudio</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    mvn -N  </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    mvn clean </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"> -DskipTests</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="schedulis">Schedulis<a class="hash-link" href="#schedulis" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/Schedulis/tree/release-0.7.0" target="_blank" rel="noopener noreferrer">Original project code address</a>
<a href="https://github.com/ruY9527/Schedulis/tree/release-0.7.0-hadoop.x" target="_blank" rel="noopener noreferrer">Adaptation modification code reference address</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-schedulis">The pom file of Schedulis<a class="hash-link" href="#the-pom-file-of-schedulis" title="Direct link to heading">​</a></h4><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">       </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">hadoop.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">3.1.1</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">hadoop.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">       </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">hive.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">3.1.2</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">hive.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">       </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">spark.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">3.0.1</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">spark.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="azkaban-jobtype">azkaban-jobtype<a class="hash-link" href="#azkaban-jobtype" title="Direct link to heading">​</a></h4><p>Download the jobtype file of the corresponding version (note the corresponding version): <a href="https://github.com/WeBankFinTech/Schedulis/blob/master/docs/schedulis_deploy_cn.md" target="_blank" rel="noopener noreferrer">Download address:</a>
After downloading, put the entire jobtypes under jobtypes
<img loading="lazy" alt="image.png" src="/assets/images/schedulis1-3dd098ac55f1fff03d5466bf1acf503b.png" width="937" height="455" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="qualitis">Qualitis<a class="hash-link" href="#qualitis" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/Qualitis/tree/release-0.9.2" target="_blank" rel="noopener noreferrer">Original project code address</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="forgerock-package-download">Forgerock package download<a class="hash-link" href="#forgerock-package-download" title="Direct link to heading">​</a></h4><p><a href="https://github.com/WeBankFinTech/Qualitis/releases" target="_blank" rel="noopener noreferrer">release地址</a> of <a href="https://github.com/WeBankFinTech/Qualitis/releases/tag/release-0.9.1" target="_blank" rel="noopener noreferrer">release-0.9.1</a>,after decompression, put it under. m2\repository\org</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="compile-2">Compile<a class="hash-link" href="#compile-2" title="Direct link to heading">​</a></h4><p>Gradle version 4.6</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token builtin class-name" style="color:rgb(189, 147, 249)">cd</span><span class="token plain"> Qualitis</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">gradle clean distZip</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>After compiling, there will be a qualitis-0.9.2.zip file under qualitis
<img loading="lazy" alt="image.png" src="/assets/images/qualitis1-8e3dba5b4b155e0c96ad3b1680ca7914.png" width="879" height="161" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dss-qualitis-appconn-compile">dss-qualitis-appconn compile<a class="hash-link" href="#dss-qualitis-appconn-compile" title="Direct link to heading">​</a></h4><p>Copy the appconn to the appconns under datasphere studio (create the DSS quality appconn folder), as shown in the following figure:
Compile the DSS qualitis appconn. The qualitis under out is the package of integrating qualitis with DSS
<img loading="lazy" alt="image.png" src="/assets/images/qualitis2-15148e52070389ee6491f08119d6445b.png" width="937" height="490" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="exchangis">Exchangis<a class="hash-link" href="#exchangis" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/Exchangis/tree/release-1.0.0" target="_blank" rel="noopener noreferrer">Original project code address</a>
<a href="https://github.com/ruY9527/Exchangis/tree/release-1.0.0-hadoop3.x" target="_blank" rel="noopener noreferrer">Adaptation modification code reference address</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-exchangis">The pom file of Exchangis<a class="hash-link" href="#the-pom-file-of-exchangis" title="Direct link to heading">​</a></h4><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">&lt;!-- scala Consistent version --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">2.12.10</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="back-end-compilation">Back end compilation<a class="hash-link" href="#back-end-compilation" title="Direct link to heading">​</a></h4><p><a href="https://github.com/WeBankFinTech/Exchangis/blob/dev-1.0.0/docs/zh_CN/ch1/exchangis_deploy_cn.md" target="_blank" rel="noopener noreferrer">Official compiled documents</a>
In the target package of the assembly package, wedatasphere-exchangis-1.0.0.tar.gz is its own service package
Linkis engineplug sqoop needs to be put into linkis (lib/linkis enginecon plugins)
Exchangis-appconn.zip needs to be put into DSS (DSS appconns)</p><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">mvn clean install </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="image.png" src="/assets/images/exchangis1-4921fd02462370bd7c40cb7f9ceb7fb2.png" width="937" height="459" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="front-end-compilation">Front end compilation<a class="hash-link" href="#front-end-compilation" title="Direct link to heading">​</a></h4><p>If you deploy the front-end using nginx yourself, you need to pay attention to the dist folder under dist
<img loading="lazy" alt="image.png" src="/assets/images/exchangis2-e5f54b200065ab3ceec007472851d54a.png" width="1873" height="907" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="visualis">Visualis<a class="hash-link" href="#visualis" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/Visualis/tree/v1.0.0" target="_blank" rel="noopener noreferrer">Original project code address</a>
<a href="https://github.com/ruY9527/Visualis/tree/v1.0.0-hadoop3.x" target="_blank" rel="noopener noreferrer">Adaptation modification code reference address</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-visualis">The pom file of Visualis<a class="hash-link" href="#the-pom-file-of-visualis" title="Direct link to heading">​</a></h4><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">2.12.10</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="compile-3">Compile<a class="hash-link" href="#compile-3" title="Direct link to heading">​</a></h4><p> <a href="https://github.com/WeBankFinTech/Visualis/blob/master/visualis_docs/zh_CN/Visualis_deploy_doc_cn.md" target="_blank" rel="noopener noreferrer">Official compiled documents</a>
In the target under assembly, visuis server zip is the package of its own service
The target of visualis appconn is visualis.zip, which is the package required by DSS (DSS appconns)
Build is the package printed by the front end</p><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">cd Visualis</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">mvn -N install</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">mvn clean package -DskipTests=true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="image.png" src="/assets/images/visualis1-526c531225821a7aa99946d3a194ec18.png" width="937" height="460" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="streamis">Streamis<a class="hash-link" href="#streamis" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/Streamis/tree/0.2.0" target="_blank" rel="noopener noreferrer">Original project code address</a>
<a href="https://github.com/ruY9527/Streamis/tree/0.2.0-hadoop3.x" target="_blank" rel="noopener noreferrer">Adaptation modification code reference address</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="the-pom-file-of-streamis">The pom file of Streamis<a class="hash-link" href="#the-pom-file-of-streamis" title="Direct link to heading">​</a></h4><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">2.12.10</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">scala.version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The pom file of streamis-project-server</p><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">       </span><span class="token comment" style="color:rgb(98, 114, 164)">&lt;!-- If you are 1.0.1 here, adjust it to ${dss.version} --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">       </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">dependency</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">groupId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">com.webank.wedatasphere.dss</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">groupId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">artifactId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">dss-sso-integration-standard</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">artifactId</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">${dss.version}</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">version</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token tag" style="color:rgb(255, 121, 198)">scope</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain">compile</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">scope</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&lt;/</span><span class="token tag" style="color:rgb(255, 121, 198)">dependency</span><span class="token tag punctuation" style="color:rgb(248, 248, 242)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="compile-4">Compile<a class="hash-link" href="#compile-4" title="Direct link to heading">​</a></h4><p> <a href="https://github.com/WeBankFinTech/Streamis/blob/main/docs/zh_CN/0.2.0/Streamis%E5%AE%89%E8%A3%85%E6%96%87%E6%A1%A3.md" target="_blank" rel="noopener noreferrer">Official compiled documents</a>
Under assembly, the target package wedatasphere-streams-0.2.0-dist.tar.gz is the package of its own back-end service
The stream.zip package of target under stream appconn is required by DSS (DSS appconns)
dist under dist is the front-end package</p><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">cd ${STREAMIS_CODE_HOME}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">mvn -N install</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">mvn clean install</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="image.png" src="/assets/images/streamis1-067a0add4da497c30b77a6c0aba3128a.png" width="937" height="463" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="installation-deployment">Installation deployment<a class="hash-link" href="#installation-deployment" title="Direct link to heading">​</a></h2><p><a href="https://linkis.apache.org/zh-CN/docs/1.1.1/deployment/quick-deploy" target="_blank" rel="noopener noreferrer">Official deployment address</a>
<a href="https://linkis.apache.org/zh-CN/blog/2022/02/21/linkis-deploy" target="_blank" rel="noopener noreferrer">Common error address</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="path-unification">Path unification<a class="hash-link" href="#path-unification" title="Direct link to heading">​</a></h3><p>It is recommended to deploy the relevant components in the same path (for example, I unzip them all in /home/hadoop/application)
<img loading="lazy" alt="image.png" src="/assets/images/deploy1-74f8a7facb0f4a9de3d43c233bcbb29c.png" width="650" height="219" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="notes-on-linkis-deployment">Notes on linkis deployment<a class="hash-link" href="#notes-on-linkis-deployment" title="Direct link to heading">​</a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="deploy-config-folder">Deploy config folder<a class="hash-link" href="#deploy-config-folder" title="Direct link to heading">​</a></h4><p>db.sh, the address of the links connection configured by mysql, and the metadata connection address of hive
linkis-env.sh</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-- The path to save the script script. Next time, there will be a folder with the user's name, and the script of the corresponding user will be stored </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">in</span><span class="token plain"> this folder</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">WORKSPACE_USER_ROOT_PATH</span><span class="token operator">=</span><span class="token plain">file:///home/hadoop/logs/linkis</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-- Log files </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">for</span><span class="token plain"> storing materials and engine execution</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HDFS_USER_ROOT_PATH</span><span class="token operator">=</span><span class="token plain">hdfs:///tmp/linkis</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-- Log of each execution of the engine and information related to starting engineconnexec.sh</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ENGINECONN_ROOT_PATH</span><span class="token operator">=</span><span class="token plain">/home/hadoop/logs/linkis/apps</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-- Access address of </span><span class="token function" style="color:rgb(80, 250, 123)">yarn</span><span class="token plain"> master </span><span class="token function" style="color:rgb(80, 250, 123)">node</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">active resource manager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">YARN_RESTFUL_URL</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-- Conf address of Hadoop / hive / spark</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">HADOOP_CONF_DIR</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">HIVE_CONF_DIR</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">SPARK_CONF_DIR</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-- Specify the corresponding version</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SPARK_VERSION</span><span class="token operator">=</span><span class="token number">3.0</span><span class="token plain">.1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HIVE_VERSION</span><span class="token operator">=</span><span class="token number">3.1</span><span class="token plain">.2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-- Specify the path after the installation of linkis. For example, I agree to specify the path under the corresponding component here</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">LINKIS_HOME</span><span class="token operator">=</span><span class="token plain">/home/hadoop/application/linkis/linkis-home</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="flink">flink<a class="hash-link" href="#flink" title="Direct link to heading">​</a></h4><p>If you use Flink, you can try importing it from <a target="_blank" href="/assets/files/flink-engine-2a1a0199ef097db16d2d0238005245e3.sql">flink-engine.sql</a>  into the database of linkis</p><p>Need to modify @Flink_LABEL version is the corresponding version, and the queue of yarn is default by default</p><p>At the same time, in this version, if you encounter the error of "1g" converting digital types, try to remove the 1g unit and the regular check rules. Refer to the following:</p><p><img loading="lazy" alt="flink3.png" src="/assets/images/flink3-7e851b84808cf7d6116653a6978ca63d.png" width="1592" height="712" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="lzo">lzo<a class="hash-link" href="#lzo" title="Direct link to heading">​</a></h4><p>If your hive uses LZO, copy the corresponding LZO jar package to the hive path. For example, the following path:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">lib/linkis-engineconn-plugins/hive/dist/v3.1.2/lib</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="frequently-asked-questions-and-precautions">Frequently asked questions and precautions<a class="hash-link" href="#frequently-asked-questions-and-precautions" title="Direct link to heading">​</a></h4><ul><li>The MySQL driver package must be copied to /lib/linkis-commons/public-module/ and /lib/linkis-spring-cloud-services/linkis-mg-gateway/</li><li>Initialization password in conf/linkis-mg-gateway.properties -&gt; wds.linkis.admin.password</li><li>ps-cs in the startup script,there may be failures, if any,use sh linkis-daemon.sh ps-cs , start it separately</li><li>At present, if there is time to back up the log, sometimes if the previous error log cannot be found, it may be backed up to the folder of the corresponding date</li><li>At present lib/linkis-engineconn-plugins have only spark/shell/python/hive,If you want appconn, flink and sqoop, go to DSS, linkis and exchangis to get them</li><li>Configuration file version check</li></ul><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">linkis.properties,flink see </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">if</span><span class="token plain"> it is used</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.spark.engine.version</span><span class="token operator">=</span><span class="token number">3.0</span><span class="token plain">.1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.hive.engine.version</span><span class="token operator">=</span><span class="token number">3.1</span><span class="token plain">.2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.flink.engine.version</span><span class="token operator">=</span><span class="token number">1.13</span><span class="token plain">.2</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="image.png" src="/assets/images/deploy2-cc5f46ae416646c300738e32a63754fe.png" width="1425" height="193" class="img_ev3q">
<img loading="lazy" alt="image.png" src="/assets/images/deploy3-a07614a61a4284be9bb0ad32c1ac6045.png" width="726" height="213" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="error-record">Error record<a class="hash-link" href="#error-record" title="Direct link to heading">​</a></h4><ol><li>Incompatible versions. If you encounter the following error, it is whether the scala version is not completely consistent. Check and compile it</li></ol><p><img loading="lazy" alt="1905943989d7782456c356b6ce0d72b.png" src="/assets/images/deploy4-fe0bda10b58063c12e25064aabcc9b8d.png" width="1630" height="524" class="img_ev3q"></p><ol start="2"><li>Yarn configures the active node address. If the standby address is configured, the following error will appear:</li></ol><p><img loading="lazy" alt="1ca32f79d940016d72bf1393e4bccc8.jpg" src="/assets/images/deploy5-9a10e4fd895a0dd493b263f827fe9f92.jpg" width="937" height="525" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="considerations-for-dss-deployment">Considerations for DSS deployment<a class="hash-link" href="#considerations-for-dss-deployment" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/DataSphereStudio-Doc/tree/main/zh_CN" target="_blank" rel="noopener noreferrer">Official installation document</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="config-folder">config folder<a class="hash-link" href="#config-folder" title="Direct link to heading">​</a></h4><p>db.sh: configure the database of DSS
config.sh</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-- The installation path of DSS, </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">for</span><span class="token plain"> example, is defined </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">in</span><span class="token plain"> the folder under DSS</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">DSS_INSTALL_HOME</span><span class="token operator">=</span><span class="token plain">/home/hadoop/application/dss/dss</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="conf-folder">conf folder<a class="hash-link" href="#conf-folder" title="Direct link to heading">​</a></h4><p>dss.properties</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Mainly check whether spark / hive and other versions are available. If not, add</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.spark.engine.version=3.0.1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.hive.engine.version=3.1.2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.flink.engine.version=1.13.2</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>dss-flow-execution-server.properties</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Mainly check whether spark / hive and other versions are available. If not, add</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.spark.engine.version=3.0.1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.hive.engine.version=3.1.2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.flink.engine.version=1.13.2</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If you want to use dolphin scheduler for scheduling, please add the corresponding spark / hive version to this pr
<a href="https://github.com/WeBankFinTech/DataSphereStudio/pull/914/files" target="_blank" rel="noopener noreferrer">Reference pr</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dss-appconns">dss-appconns<a class="hash-link" href="#dss-appconns" title="Direct link to heading">​</a></h4><p>Exchangis, qualitis, streamis and visualis should be obtained from the projects of exchangis, qualitis, streamis and visualis respectively</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="frequently-asked-questions-and-precautions-1">Frequently asked questions and precautions<a class="hash-link" href="#frequently-asked-questions-and-precautions-1" title="Direct link to heading">​</a></h4><ul><li>Since we integrate scheduleis, qualitis, exchangis and other components into DSS, all the interfaces of these components will be called synchronously when creating a project, so we ensure that dss_appconn_instance  configuration paths in the instance are correct and accessible</li><li>The Chrome browser recommends that the kernel use version 100 or below. Otherwise, there will be a problem that you can separate scdulis, qaulitis and other components, but you cannot log in successfully through DSS</li><li>Hostname and IP. If IP access is used, make sure it is IP when executing appconn-install.sh installation Otherwise, when accessing other components, you will be prompted that you do not have login or permission</li></ul><p><img loading="lazy" alt="ec4989a817646f785c59f6802d0fab2.jpg" src="/assets/images/deploy6-93dece9bd52296bfd4a8269e387f6be0.jpg" width="820" height="555" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="schedulis-deployment-considerations">Schedulis deployment considerations<a class="hash-link" href="#schedulis-deployment-considerations" title="Direct link to heading">​</a></h3><p> <a href="https://github.com/WeBankFinTech/Schedulis/blob/master/docs/schedulis_deploy_cn.md" target="_blank" rel="noopener noreferrer">Official deployment document</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="conf-folder-1">conf folder<a class="hash-link" href="#conf-folder-1" title="Direct link to heading">​</a></h4><p>azkaban.properties</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"># azkaban.jobtype.plugin.dir and executor.global.properties. It's better to change the absolute path here</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Azkaban JobTypes Plugins</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">azkaban.jobtype.plugin.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_exec/plugins/jobtypes</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Loader for projects</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">executor.global.properties=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_exec/conf/global.properties</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Engine version</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.spark.engine.version=3.0.1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.hive.engine.version=3.1.2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.flink.engine.version=1.13.2</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="web-modular">web modular<a class="hash-link" href="#web-modular" title="Direct link to heading">​</a></h4><p>plugins/viewer/system/conf:  Here, you need to configure the database connection address to be consistent with scheduleis
azkaban.properties:  Configuration of user parameters and system management</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">viewer.plugins=system</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">viewer.plugin.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_web/plugins/viewer</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="frequently-asked-questions-and-precautions-2">Frequently asked questions and precautions<a class="hash-link" href="#frequently-asked-questions-and-precautions-2" title="Direct link to heading">​</a></h4><p>If there are resources or there are no static files such as CSS in the web interface, change the relevant path to an absolute path
If the configuration file cannot be loaded, you can also change the path to an absolute path
For example:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">### web module</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">web.resource.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_web/web/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">viewer.plugin.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_web/plugins/viewer</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">### exec module</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">azkaban.jobtype.plugin.dir=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_exec/plugins/jobtypes</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">executor.global.properties=/home/hadoop/application/schedulis/apps/schedulis_0.7.0_exec/conf/global.properties</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="considerations-for-qualitis-deployment">Considerations for qualitis deployment<a class="hash-link" href="#considerations-for-qualitis-deployment" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/Qualitis/blob/master/docs/zh_CN/ch1/%E5%BF%AB%E9%80%9F%E6%90%AD%E5%BB%BA%E6%89%8B%E5%86%8C%E2%80%94%E2%80%94%E5%8D%95%E6%9C%BA%E7%89%88.md" target="_blank" rel="noopener noreferrer">Official deployment document</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="conf-folder-2">conf folder<a class="hash-link" href="#conf-folder-2" title="Direct link to heading">​</a></h4><p>application-dev.yml</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">  # The correct spark version is configured here</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  spark:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    application:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      name: IDE</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      reparation: 50</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    engine:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      name: spark</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      version: 3.0.1</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="exchange-deployment-considerations">Exchange deployment considerations<a class="hash-link" href="#exchange-deployment-considerations" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/Exchangis/blob/dev-1.0.0/docs/zh_CN/ch1/exchangis_deploy_cn.md" target="_blank" rel="noopener noreferrer">Official deployment document</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="frequently-asked-questions-and-precautions-3">Frequently asked questions and precautions<a class="hash-link" href="#frequently-asked-questions-and-precautions-3" title="Direct link to heading">​</a></h4><p>If you click the data source and there is an error that has not been published, you can try to add linkis<em>ps_dm_datasource</em> -&gt; published_version_id Modify the published_version_id value to 1 (if it is null)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="visualis-1">Visualis<a class="hash-link" href="#visualis-1" title="Direct link to heading">​</a></h3><p><a href="https://github.com/WeBankFinTech/Visualis/blob/master/visualis_docs/zh_CN/Visualis_deploy_doc_cn.md" target="_blank" rel="noopener noreferrer">Official deployment document</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="frequently-asked-questions-and-precautions-4">Frequently asked questions and precautions<a class="hash-link" href="#frequently-asked-questions-and-precautions-4" title="Direct link to heading">​</a></h4><p>If the preview view is inconsistent, please check whether the bin / phantomjs file is uploaded completely
If you can see the following results, the upload is complete</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">./phantomjs -v</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">2.1.1</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="streamis-1">Streamis<a class="hash-link" href="#streamis-1" title="Direct link to heading">​</a></h3><p> <a href="https://github.com/WeBankFinTech/Streamis/blob/main/docs/zh_CN/0.2.0/Streamis%E5%AE%89%E8%A3%85%E6%96%87%E6%A1%A3.md" target="_blank" rel="noopener noreferrer">Official deployment document</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="dss-appconn">dss-appconn<a class="hash-link" href="#dss-appconn" title="Direct link to heading">​</a></h3><p>Qualitis, exchangis, streams and visualis are compiled from various modules, copied to DSS appconns under DSS, and then executed appconn-install.sh under bin to install their components
If you find the following SQL script errors during integration, please check whether there are comments around the wrong SQL. If so, delete the comments and try appconn install again
<img loading="lazy" alt="903ceec2f69fc1c7a2be5f309f69726.png" src="/assets/images/deploy7-3d8d21245d502290cf376d396905122c.png" width="1887" height="81" class="img_ev3q">
For example, for qualitis, the following IP and host ports are determined according to their specific use</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">qualitis</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">127.0.0.1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">8090</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="nginx-deployment-example">Nginx deployment example<a class="hash-link" href="#nginx-deployment-example" title="Direct link to heading">​</a></h2><p> linkis.conf:   dss/linkis/visualis front end
exchangis.conf:  exchangis front end
streamis.conf:      streamis front end
Scheduling and Qaulitis are in their own projects
Linkis / Visualis needs to change the dist or build packaged from the front end to the name of the corresponding component here
<img loading="lazy" alt="image.png" src="/assets/images/deploy8-3db0b22721e52b2f2b8b389637b8ead7.png" width="778" height="183" class="img_ev3q">
<img loading="lazy" alt="image.png" src="/assets/images/deploy9-363fc68aa5231009c4a649fa457e8e3a.png" width="1219" height="465" class="img_ev3q">
<img loading="lazy" alt="image.png" src="/assets/images/deploy10-4c6b8e7214798a09d2d7245cdbb25b4a.png" width="1192" height="499" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="linkisconf">linkis.conf<a class="hash-link" href="#linkisconf" title="Direct link to heading">​</a></h4><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">server {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">listen       8089;# Access port:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">server_name  localhost;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">#charset koi8-r;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">#access_log  /var/log/nginx/host.access.log  main;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">location /dss/visualis {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Modify to your own front-end path</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">root   /home/hadoop/application/webs; # Static file directory</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">autoindex on;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">location /dss/linkis {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Modify to your own front-end path</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">root   /home/hadoop/application/webs; # linkis Static file directory of management console</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">autoindex on;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">location / {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Modify to your own front-end path</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">root   /home/hadoop/application/webs/dist; # Static file directory</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">#root /home/hadoop/dss/web/dss/linkis;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">index  index.html index.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">location /ws {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_pass http://127.0.0.1:9001;#Address of back-end linkis</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_http_version 1.1;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_set_header Upgrade $http_upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_set_header Connection upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">location /api {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_pass http://127.0.0.1:9001; #Address of back-end linkis</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_set_header Host $host;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_set_header X-Real-IP $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_set_header x_real_ipP $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_set_header remote_addr $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_http_version 1.1;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_connect_timeout 4s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_read_timeout 600s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_send_timeout 12s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_set_header Upgrade $http_upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">proxy_set_header Connection upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">#error_page  404              /404.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># redirect server error pages to the static page /50x.html</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">#</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">error_page   500 502 503 504  /50x.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">location = /50x.html {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">root   /usr/share/nginx/html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="exchangisconf">exchangis.conf<a class="hash-link" href="#exchangisconf" title="Direct link to heading">​</a></h4><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">server {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            listen       9800; # Access port: if the port is occupied, it needs to be modified</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            server_name  localhost;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            #charset koi8-r;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            #access_log  /var/log/nginx/host.access.log  main;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            location / {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            # Modify to own path</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            root   /home/hadoop/application/webs/exchangis/dist/dist; #Modify to your own path</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            autoindex on;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            location /api {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_pass http://127.0.0.1:9001;  # The address of the backend link needs to be modified</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header Host $host;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header X-Real-IP $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header x_real_ipP $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header remote_addr $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_http_version 1.1;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_connect_timeout 4s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_read_timeout 600s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_send_timeout 12s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header Upgrade $http_upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header Connection upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            #error_page  404              /404.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            # redirect server error pages to the static page /50x.html</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            #</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            error_page   500 502 503 504  /50x.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            location = /50x.html {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            root   /usr/share/nginx/html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="streamisconf">streamis.conf<a class="hash-link" href="#streamisconf" title="Direct link to heading">​</a></h4><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">server {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    listen       9088;# Access port: if the port is occupied, it needs to be modified</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    server_name  localhost;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    location / {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    # Modify to your own path</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        root   /home/hadoop/application/webs/streamis/dist/dist;  #Modify to your own path</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        index  index.html index.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    location /api {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_pass http://127.0.0.1:9001;        # The address of the backend link needs to be modified</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_set_header Host $host;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_set_header X-Real-IP $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_set_header x_real_ipP $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_set_header remote_addr $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_http_version 1.1;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_connect_timeout 4s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_read_timeout 600s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_send_timeout 12s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_set_header Upgrade $http_upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    proxy_set_header Connection upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    #error_page  404              /404.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    # redirect server error pages to the static page /50x.html</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    #</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    error_page   500 502 503 504  /50x.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    location = /50x.html {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    root   /usr/share/nginx/html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>]]></content>
        <author>
            <name>ruY9527</name>
            <uri>https://github.com/ruY9527</uri>
        </author>
        <category label="blog" term="blog"/>
        <category label="linki1.1.1" term="linki1.1.1"/>
        <category label="hadoop3.1.1" term="hadoop3.1.1"/>
        <category label="spark3.0.1" term="spark3.0.1"/>
        <category label="hive3.1.2" term="hive3.1.2"/>
        <category label="flink1.13.2" term="flink1.13.2"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Deploy Linkis with Kubernetes]]></title>
        <id>/2022/07/16/deploy-linkis-with-kubernetes</id>
        <link href="https://linkis.apache.org/blog/2022/07/16/deploy-linkis-with-kubernetes"/>
        <updated>2022-07-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[1. Dependencies and versions]]></summary>
        <content type="html"><![CDATA[<p><strong>1. Dependencies and versions</strong></p><p>kind github：<a href="https://github.com/kubernetes-sigs/kind" target="_blank" rel="noopener noreferrer">https://github.com/kubernetes-sigs/kind</a></p><p>kind website：<a href="https://kind.sigs.k8s.io/" target="_blank" rel="noopener noreferrer">kind.sigs.k8s.io/</a></p><p>version:</p><p>kind 0.14.0</p><p>docker  20.10.17</p><p>node v16.0.0</p><p>Note:</p><ol><li><p>Ensure that the front and back ends can compile properly</p></li><li><p>Ensure that the component depends on the version</p></li><li><p>Kind refers to the machine that uses docker container to simulate nodes. When the machine is restarted, the scheduler does not work because the container is changed.</p></li></ol><p><strong>2.Install the docker</strong></p><p>（1）Install the tutorial</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">sudo yum install -y yum-utils device-mapper-persistent-data lvm2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sudo yum makecache fast</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sudo yum -y install docker-ce</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">systemctl start docker</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">systemctl enable docker</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>（2）setting image mirrors</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">vi /etc/docker/daemon.json</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">"registry-mirrors": ["http://hub-mirror.c.163.com"],</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">"insecure-registries": ["https://registry.mydomain.com","http://hub-mirror.c.163.com"]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>3.install the kind</strong></p><p>（1）Manually download the Kind binary</p><p><a href="https://github.com/kubernetes-sigs/kind/releases" target="_blank" rel="noopener noreferrer">https://github.com/kubernetes-sigs/kind/releases</a></p><p>（2）Install kind binary</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">chmod +x ./kind</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">mv kind-linux-amd64 /usr/bin/kind</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>4.Install the JDK and Maven</strong></p><p>（1）Refer to the general installation tutorial to install the following components</p><p>jdk 1.8</p><p>mavne 3.5+</p><p><strong>5.Install the NodeJS</strong></p><p>（1）version</p><p>node v16.0.0</p><p>（2）install the nvm</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">export http_proxy=http://10.0.0.150:7890</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">export https_proxy=http://10.0.0.150:7890</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">export NVM_DIR="$HOME/.nvm"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ -s "$NVM_DIR/nvm.sh" ] &amp;&amp; \. "$NVM_DIR/nvm.sh"  # This loads nvm</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[ -s "$NVM_DIR/bash_completion" ] &amp;&amp; \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>（3）install the nodejs</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">nvm ls-remote</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">nvm install v14.19.3</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>（4）setting NPM</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">npm config set registry https://registry.npmmirror.com</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">npm config set sass_binary_site https://registry.npmmirror.com/binary.html?path=node-sass/</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>（5）Compiler front-end</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">npm install -g yarn</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">yarn</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">yarn build</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">yarn </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>6.Compile linkis</strong></p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"># 1. When compiling for the first time, execute the following command first</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./mvnw -N install</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># 2. make the linkis distribution package</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># - Option 1: make the linkis distribution package only</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./mvnw clean install -Dmaven.javadoc.skip=true -Dmaven.test.skip=true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># - Option 2: make the linkis distribution package and docker image</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./mvnw clean install -Pdocker -Dmaven.javadoc.skip=true -Dmaven.test.skip=true</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># - Option 3: linkis distribution package and docker image (included web)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./mvnw clean install -Pdocker -Dmaven.javadoc.skip=true -Dmaven.test.skip=true -Dlinkis.build.web=true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>7.Create the cluster</strong></p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">dos2unix ./linkis-dist/helm/scripts/*.sh</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./linkis-dist/helm/scripts/create-test-kind.sh</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>8.install the helm charts</strong></p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ./scripts/install-charts.sh linkis linkis-demo</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>9.Visit the Linkis page</strong></p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl port-forward -n linkis  --address=0.0.0.0 service/linkis-demo-web 8087:8087</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">http://10.0.2.101:8087</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>10.Test using the Linkis client</strong></p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl -n linkis exec -it linkis-demo-ps-publicservice-77d7685d9-f59ht -- bash</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">./linkis-cli -engineType shell-1 -codeType shell -code "echo \"hello\" "  -submitUser hadoop -proxyUser hadoop</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>11.install the kubectl</strong></p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">cat &lt;&lt;EOF &gt; /etc/yum.repos.d/kubernetes.repo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[kubernetes]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">name=Kubernetes</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">enabled=1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">gpgcheck=1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">repo_gpgcheck=1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">EOF</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">yum install -y --nogpgcheck kubectl</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl config view&nbsp;&nbsp;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl config get-contexts&nbsp;&nbsp;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">kubectl cluster-info&nbsp;&nbsp;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>]]></content>
        <author>
            <name>jacktao</name>
            <uri>https://github.com/jacktao007</uri>
        </author>
        <category label="github" term="github"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to add a GitHub Action for the GitHub repository]]></title>
        <id>/2022/07/04/how-to-add-auto-bot</id>
        <link href="https://linkis.apache.org/blog/2022/07/04/how-to-add-auto-bot"/>
        <updated>2022-07-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[1 Summary]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-summary">1 Summary<a class="hash-link" href="#1-summary" title="Direct link to heading">​</a></h2><p>As you know, <a href="#21-what-is-continuous-integration">continuous integration</a> consists of many operations, such as capturing code, running tests, logging in to remote servers, publishing to third-party services, and so on. GitHub calls these operations as Actions. Many operations are similar in different projects and can be shared. GitHub noticed this and came up with a wonderful idea to allow developers to write each operation as an independent script file and store it in the code repository so that other developers can reference it. If you need an action, you don't have to write a complex script by yourself. You can directly reference the action written by others. The whole continuous integration process becomes a combination of actions. This is the most special part of GitHub Actions.</p><p>GitHub provides a <a href="https://github.com/marketplace" target="_blank" rel="noopener noreferrer">Github Action Market</a> for developers, we can find the GitHub Action we want from this market and configure it into the <code>workflow</code> of the repository to realize automatic operation. Of course, the GitHub Action that this market can provide is limited. In some cases, we can't find a GitHub Action that can meet our needs. I will also teach you how to write GitHub Action by yourself later in this blog.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="2-some-terms">2 Some terms<a class="hash-link" href="#2-some-terms" title="Direct link to heading">​</a></h2><h4 class="anchor anchorWithStickyNavbar_LWe7" id="21-what-is-continuous-integration">2.1 What is continuous integration<a class="hash-link" href="#21-what-is-continuous-integration" title="Direct link to heading">​</a></h4><p>In short, it is an automated program. For example, every time the front-end programmer submits code to GitHub's repository, GitHub will automatically create a virtual machine (MAC / Windows / Linux) to execute one or more instructions (determined by us), for example:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">npm</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token function" style="color:rgb(80, 250, 123)">npm</span><span class="token plain"> run build</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="22-what-is-yaml">2.2 What is YAML<a class="hash-link" href="#22-what-is-yaml" title="Direct link to heading">​</a></h4><p>The way we integrate GitHub Action is to create a <code>Github/workflow</code> directory, with a <code>* yaml</code> file - this <code>yaml</code> file is the file we use to configure GitHub Action. It is a very easy scripting language. For users who are not familiar with <code>yaml</code>, you can refer to it <a href="https://www.codeproject.com/Articles/1214409/Learn-YAML-in-five-minutes" target="_blank" rel="noopener noreferrer">here</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-start-writing-the-first-workflow">3 Start writing the first Workflow<a class="hash-link" href="#3-start-writing-the-first-workflow" title="Direct link to heading">​</a></h2><h4 class="anchor anchorWithStickyNavbar_LWe7" id="31-how-to-customize-the-name-of-workflow">3.1 How to customize the name of Workflow<a class="hash-link" href="#31-how-to-customize-the-name-of-workflow" title="Direct link to heading">​</a></h4><p>GitHub displays the name of the Workflow on the action page of the repository. If we omit name, GitHub will set it as the Workflow file path relative to the repository root directory.</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  Say Hello</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="32-how-to-customize-the-trigger-event-of-workflow">3.2 How to customize the trigger event of Workflow<a class="hash-link" href="#32-how-to-customize-the-trigger-event-of-workflow" title="Direct link to heading">​</a></h4><p>There are many events, for example, the user submits a pull request to the repository, the user submits an issue to the repository, or the user closes an issue, etc. We hope that when some events occur, the Workflow will be automatically executed, which requires the definition of trigger events. The following is an example of a custom trigger event:</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  Say Hello</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  pull_request</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The above code can trigger workflow when the user submits a pull request. For multiple events, we enclose them in square brackets, for example:</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  Say Hello</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain">pull_request</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">pull</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Of course, we hope that the triggering event can be more specific, such as triggering Workflow when a pull request is closed or reopened:</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  Say Hello</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">pull_request</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain">reopend</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain">closed</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>For more trigger events, please refer to <a href="https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#about-workflow-events" target="_blank" rel="noopener noreferrer">document</a> here.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="33-how-to-define-a-job">3.3 How to define a job<a class="hash-link" href="#33-how-to-define-a-job" title="Direct link to heading">​</a></h4><p>A Workflow is composed of one or more jobs, which means that a continuous integration run can complete multiple tasks. Here is an example:</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  Say Hello</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  pull_request</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">jobs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">my_first_job</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> My first job</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">my_second_job</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> My second job</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Each job must have an ID associated with it. Above <code>my_ first_ Job</code> and <code>my_ second_ Job</code> is the ID of the job.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="34-how-to-specify-the-running-environment-of-a-job">3.4 How to specify the running environment of a job<a class="hash-link" href="#34-how-to-specify-the-running-environment-of-a-job" title="Direct link to heading">​</a></h4><p>Specify the running environment for running jobs. The operating systems available on Workflow are:</p><ul><li>Windows</li><li>macos</li><li>linux</li></ul><p>The following is an example of a specified running environment:</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Limited by space, the previous code is omitted</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">jobs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">my_first_job</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> My first job</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">runs-on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> macos</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token number">10.15</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="35-the-use-of-step">3.5 The use of step<a class="hash-link" href="#35-the-use-of-step" title="Direct link to heading">​</a></h4><p>Each job is composed of multiple steps, which will be executed from top to bottom. Step can run commands (such as linux commands) and actions.</p><p>The following is an example of outputting "Hello World":</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Limited by space, the previous code is omitted</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">jobs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">my_first_job</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> My first job</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">runs-on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> macos</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token number">10.15</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">step</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Print a greeting</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token comment" style="color:rgb(98, 114, 164)"># Define the environment variables of step</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">env</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">FIRST_WORD</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Hello</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">SECOND_WORD</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> WORD</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token comment" style="color:rgb(98, 114, 164)"># Run instructions: output environment variables</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">run</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">|</span><span class="token scalar string" style="color:rgb(255, 121, 198)"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)">        echo $FIRST_WORD $SECOND_WORD.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Next is the use of action, which is actually a command. For example, GitHub officially gives us some <a href="https://github.com/marketplace?type=actions&amp;query=actions" target="_blank" rel="noopener noreferrer">default commands</a>. We can directly use these commands to reduce the amount of Workflow code in the repository. The most common action is <a href="https://link.zhihu.com/?target=https%3A//github.com/marketplace/actions/checkout" target="_blank" rel="noopener noreferrer">Checkout</a>, it can clone the latest code in the repository into the Workflow workspace.</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Limited by space, the previous code is omitted</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">step</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Check out git repository </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">uses</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> actions/checkout@v2</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Some actions require additional parameters to be passed in. Generally, <code>with</code> is used to set the parameter value:</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># Limited by space, the previous code is omitted</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">step</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Check out git repository </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">uses</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> actions/checkout@v2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token key atrule">uses</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> actions/setup</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">node@v2.2.0</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">with</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">node-version</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token number">14</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-how-to-write-your-own-action">4 How to write your own action<a class="hash-link" href="#4-how-to-write-your-own-action" title="Direct link to heading">​</a></h2><h4 class="anchor anchorWithStickyNavbar_LWe7" id="41-configuration-of-actionyml">4.1 Configuration of action.yml<a class="hash-link" href="#41-configuration-of-actionyml" title="Direct link to heading">​</a></h4><p>When we can't find the action we want in the GitHub Action Market, we can write an action to meet our needs by ourselves. The customized action needs to be created a new <code>"actions"</code> directory under the <code>".gitHub/workflow"</code> directory, and then create a directory with a custom action name. Each action needs an action configuration file: <code>action.yml</code>. The <code>runs</code> section of <code>action.yml</code> specifies the starting mode of the operation. There are three startup methods: <code>node.js Script</code>, <code>Docker Image</code>, and <code>Composite Script</code>. The common parameters of <code>action.yml</code> are described below:</p><ul><li>name: Customize the name of the action</li><li>description: Declare the parameters or outputs that need to be passed in for action</li><li>inputs: Customize the parameters to be input</li><li>outputs: Output variables</li><li>runs: Startup mode</li></ul><p>The following is a configuration example of <code>action.yml</code>：</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"example action"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"This is an example action"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">inputs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">param1</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"The first param of this action"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">required</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)">#Required parameters must be set to true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">param2</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"The second param of this action"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">required</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">outputs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">out1</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"The outputs of this action"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">runs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">using</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> node16</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">main</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> dist/index.js</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">post</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> dist/index.js</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Setting <code>runs.using</code> to <code>node16</code> or <code>node12</code> can be specified as the starting <code>node.js</code> script. The script file named <code>main</code> is the startup file. The way to start is similar to running the command <code>node main.js</code> directly. Therefore, dependency will not be installed from <code>package.json</code>. During development, we usually use the packaging tool to package the dependencies together, output a separate <code>JS</code> file, and then use this file as the entry point. The <code>runs.post</code> can specify the cleanup work, and the content here will be run at the end of the Workflow.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="42-using-docker-image">4.2 Using Docker Image<a class="hash-link" href="#42-using-docker-image" title="Direct link to heading">​</a></h4><p>If Docker is used, we need to modify the <code>runs</code> in <code>action.yml</code> to:</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">runs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">using</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> docker</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Dockerfile</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><code>runs.image</code> specifies the dockerfile required for image startup, which is specified here as the dockerfile under the project root directory. In the dockerfile, specify the startup script with <code>ENTRYPOINT</code> or <code>CMD</code>. For example, define a program that runs scripts in <code>Python</code>:</p><div class="language-docker codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-docker codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">FROM python:3</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">RUN pip install --no-cache-dir requests</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">COPY . .</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">CMD [ "python", "/main.py"]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Here we can see the advantages of using docker: you can customize the running environment, and you can use other program languages.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-github-action-project-practice">5 GitHub Action project practice<a class="hash-link" href="#5-github-action-project-practice" title="Direct link to heading">​</a></h2><p>In this section, I will describe how to write your own GitHub Action with a specific example.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="problem">Problem<a class="hash-link" href="#problem" title="Direct link to heading">​</a></h5><p>Assuming that there are many issues to be processed in our GitHub repository, each pull request submitted by the user may be associated with an issue. If you have to manually close an issue after merging a pull request, it will be quite cumbersome.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="resolve">Resolve<a class="hash-link" href="#resolve" title="Direct link to heading">​</a></h5><p>Then workflow comes in handy. We can listen to the closed event of pull request and determine whether the closed event is closed by merged or non merged. If it is merged, the associated issue will be closed.</p><p>But there is still a problem here, how to obtain the associated issue? We can ask the user to add the issue that needs to be associated in the description part when submitting the pull request, such as <code>#345</code>, and then extract the issue number of <code>345</code>. How to realize this function? We can write GitHub Action by ourselves. In order to make the GitHub Action program more concise, here I use docker to start GitHub Action. First, prepare <code>action.yml</code>:</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)"># The name of Github Action </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"Auto_close_associate_issue"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># The description of action</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"Auto close an issue which associate with a PR."</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Define parameters to be input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">inputs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)"># The name of first param is prbody</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">prbody</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token comment" style="color:rgb(98, 114, 164)"># The definition of the param</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"The body of the PR to search for related issues"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token comment" style="color:rgb(98, 114, 164)"># Required param</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">required</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">outputs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)">#The name of output param</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">issurNumber</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"The issue number"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">runs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token comment" style="color:rgb(98, 114, 164)"># Using Docker Image</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">using</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"docker"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"Dockerfile"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The next step is to write script files, where I use <code>node.js</code>. The idea of this script is: first obtain the variable value from the environment, extract the issue number, and then output it to the environment. The corresponding script (named main.js) is as follows:</p><div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">// Get environment variables. All parameters passed to GitHub Action are capitalized and the prefix INPUT_ is required, which is specified by GitHub</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">let</span><span class="token plain"> body </span><span class="token operator">=</span><span class="token plain"> process</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token property-access">env</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token string" style="color:rgb(255, 121, 198)">'INPUT_PRBODY'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// Extract the number of issue by regular expression</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">let</span><span class="token plain"> pattern </span><span class="token operator">=</span><span class="token plain"> </span><span class="token regex regex-delimiter">/</span><span class="token regex regex-source language-regex">#\d+</span><span class="token regex regex-delimiter">/</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">let</span><span class="token plain"> issueNumber </span><span class="token operator">=</span><span class="token plain"> body</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token method function property-access" style="color:rgb(80, 250, 123)">match</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">pattern</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token number">0</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token method function property-access" style="color:rgb(80, 250, 123)">replace</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">'#'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">''</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// Output the issue number to the environment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token console class-name">console</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token method function property-access" style="color:rgb(80, 250, 123)">log</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token template-string template-punctuation string" style="color:rgb(255, 121, 198)">`</span><span class="token template-string string" style="color:rgb(255, 121, 198)">::set-output name=issueNumber::</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:rgb(248, 248, 242)">${</span><span class="token template-string interpolation">issueNumber</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token template-string template-punctuation string" style="color:rgb(255, 121, 198)">`</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Next is the image file of Docker (the file name is <code>Dockerfile</code>):</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">FROM node</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token number">10.15</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">COPY . .</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">CMD </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"node"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"/main.js"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Finally, <code>action.yml</code>, <code>Dockerfile</code> and <code>main.js</code> is under the directory <code>.github/actions/Auto_close_associate_issue</code>, and the writing of an action is over.</p><p>The last step is to write Workflow. The configuration of Workflow is described in detail in <a href="#3-start-writing-the-first-workflow">Start Writing the First Workflow</a>, so I won't repeat it here. The specific configuration is as follows：</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Auto close issue when PR is merged</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">pull_request_target</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">types</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token plain"> closed </span><span class="token punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">jobs</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">  </span><span class="token key atrule">close-issue</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">runs-on</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> ubuntu</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">latest</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    </span><span class="token key atrule">steps</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">uses</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> actions/checkout@v2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"Auto issue closer"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">uses</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> ./.github/actions/Auto_close_associate_issue/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">id</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Closer</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">with</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">prbody</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> github.event.pull_request.body </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Close Issue</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">uses</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> peter</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">evans/close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">issue@v2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">if</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> github.event.pull_request.merged </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">with</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">issue-number</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> steps.Closer.outputs.issueNumber </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">comment</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> The associated PR has been merged</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> this issue is automatically closed</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> you can reopend if necessary.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        </span><span class="token key atrule">env</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">Github_Token</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> secrets.GITHUB_TOKEN </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">          </span><span class="token key atrule">PRNUM</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> $</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"> github.event.pull_request.number </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>]]></content>
        <author>
            <name>BeaconTown</name>
            <uri>https://github.com/Beacontownfc/</uri>
        </author>
        <category label="github" term="github"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Apache Linkis Meet up]]></title>
        <id>/2022/06/09/meetup-content-review</id>
        <link href="https://linkis.apache.org/blog/2022/06/09/meetup-content-review"/>
        <updated>2022-06-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[|Data|Topic & Video|Scripts|]]></summary>
        <content type="html"><![CDATA[<table><thead><tr><th align="left"><strong>Data</strong></th><th align="left"><strong>Topic &amp; Video</strong></th><th align="left"><strong>Scripts</strong></th></tr></thead><tbody><tr><td align="left">8/27/2022</td><td align="left"><a href="https://space.bilibili.com/598542776/channel/collectiondetail?sid=681893" target="_blank" rel="noopener noreferrer">Meetup 04期：2022 一站式开源大数据平台WeDataSphere社区年中大会视频集合</a><br><a href="https://space.bilibili.com/598542776/channel/collectiondetail?sid=681893" target="_blank" rel="noopener noreferrer">Meetup 04：2022 Community mid-year conference video collection of WeDataSphere One-stop Open Source Big Data Platform</a></td><td align="left"><a href="https://pan.baidu.com/s/1_Ectkxf5WpRcaLQXWxu72g?pwd=eeik" target="_blank" rel="noopener noreferrer"> 演讲稿合集 A collection of speeches </a></td></tr><tr><td align="left">6/27/2022</td><td align="left"><a href="https://space.bilibili.com/598542776/channel/seriesdetail?sid=2649896" target="_blank" rel="noopener noreferrer"> Meetup 03期：Linkis-1.1.0新功能介绍、上海合合信息合数据工坊IDS</a><br><a href="https://space.bilibili.com/598542776/channel/seriesdetail?sid=2649896" target="_blank" rel="noopener noreferrer">Meetup 03: Linkis-1.1.0 New function introduction, Shanghai HEHE Information and Data Workshop IDS</a></td><td align="left"><a href="https://pan.baidu.com/s/1TpN4qJFdjA666PWmWyiw6A?pwd=na3h" target="_blank" rel="noopener noreferrer"> 演讲稿合集 A collection of speeches </a></td></tr><tr><td align="left">4/13/2022</td><td align="left"><a href="https://www.bilibili.com/video/BV1r5411U7Dx/" target="_blank" rel="noopener noreferrer">Meetup 02期：Qualitis 数据质量 0.9.0版本介绍</a><br><a href="https://www.bilibili.com/video/BV1r5411U7Dx/?spm_id_from=333.788.recommend_more_video.-1" target="_blank" rel="noopener noreferrer">Meetup 02：Introduction to Data Quality Platform Qualitis&nbsp;V0.9.0 </a></td><td align="left"><a href="https://uploader.shimo.im/f/bpeDQgadrMVFUiNL.pptx?fileGuid=m8AZV9z6xMsOevAb" target="_blank" rel="noopener noreferrer">Qualitis 数据质量0.9.0版本介绍.pptx</a></td></tr><tr><td align="left">4/13/2022</td><td align="left"><a href="https://www.bilibili.com/video/BV1WS4y127ma/" target="_blank" rel="noopener noreferrer">Meetup 02期：Prophecis 机器学习Studio版本更新介绍</a><br><a href="https://www.bilibili.com/video/BV1r5411U7Dx/?spm_id_from=333.788.recommend_more_video.-1" target="_blank" rel="noopener noreferrer">Meetup 02：Introduction to Mechine Learning Platform Prophecis Studio</a></td><td align="left"><a href="https://uploader.shimo.im/f/eL3HOVtYTgeCGOtr.pptx?fileGuid=m8AZV9z6xMsOevAb" target="_blank" rel="noopener noreferrer">Prophecis 机器学习Studio版本更新介绍(V0.3.0).pptx</a></td></tr><tr><td align="left">4/13/2022</td><td align="left"><a href="https://www.bilibili.com/video/BV1vY4y1H7j2/" target="_blank" rel="noopener noreferrer">Meetup 02期：调度系统 Schedulis 0.6.2 发布</a><br><a href="https://www.bilibili.com/video/BV1vY4y1H7j2" target="_blank" rel="noopener noreferrer">Meetup 02</a><a href="https://www.bilibili.com/video/BV1vY4y1H7j2" target="_blank" rel="noopener noreferrer">: The Scheduling System Schedulis is Release v0.6.2</a></td><td align="left"><a href="https://uploader.shimo.im/f/rD98D9SwNavhWga3.pptx?fileGuid=m8AZV9z6xMsOevAb" target="_blank" rel="noopener noreferrer">Schedulis 0.6.2 发布.pptx</a></td></tr><tr><td align="left">4/13/2022</td><td align="left"><a href="https://www.bilibili.com/video/BV1pF411G7AH/" target="_blank" rel="noopener noreferrer">Meetup 02期：DataSphereStudio 1.0 系统介绍</a><br><a href="https://www.bilibili.com/video/BV1pF411G7AH" target="_blank" rel="noopener noreferrer">Meetup 02:&nbsp;Introduciton to DataSphereStudio 1.0 System</a></td><td align="left"><a href="https://uploader.shimo.im/f/HluZrVJDRpEsSYy4.pptx?fileGuid=m8AZV9z6xMsOevAb" target="_blank" rel="noopener noreferrer">DSS 1.0.1 系统介绍-WeDataSphere meetup 202204(1).pptx</a></td></tr><tr><td align="left">2/24/2022</td><td align="left"><a href="https://www.bilibili.com/video/BV1La411h7Pf" target="_blank" rel="noopener noreferrer">Meetup 01:Linkis 1.0.3 新版本发布</a><br><a href="https://www.bilibili.com/video/BV1La411h7Pf" target="_blank" rel="noopener noreferrer">Meetup 01:Linkis 1.0.3 New Version Released </a></td><td align="left"><a href="https://uploader.shimo.im/f/qM7PpEBm8bUowyUW.pdf?fileGuid=m8AZV9z6xMsOevAb" target="_blank" rel="noopener noreferrer">基于Linkis的企业大数据平台改造之路_张延召.pdf</a><br><a href="https://uploader.shimo.im/f/GcYE1BwtDKHFfN8W.pdf?fileGuid=m8AZV9z6xMsOevAb" target="_blank" rel="noopener noreferrer">Apache Linkis V1.0.3 介绍-v0.2-邸帅.pdf</a></td></tr></tbody></table>]]></content>
        <category label="meetup" term="meetup"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Download Engine Plugins Not Included in the Installation Package By Default]]></title>
        <id>/2022/04/15/how-to-download-engineconn-plugin</id>
        <link href="https://linkis.apache.org/blog/2022/04/15/how-to-download-engineconn-plugin"/>
        <updated>2022-04-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This article mainly guides you how to download the non-default engine installation plug-in package corresponding to each version.]]></summary>
        <content type="html"><![CDATA[<blockquote><p><em>This article mainly guides you how to download the non-default engine installation plug-in package corresponding to each version. </em></p></blockquote><p>Considering the size of the release package and the use of plug-ins, the binary installation package released by linkis only contains some common engines /hive/spark/python/shell.
Very useful engine, there are corresponding modules <code>flink/io_file/pipeline/sqoop</code> in the project code (there may be differences between different versions),
In order to facilitate everyone's use, based on the release branch code of each version of linkis: <a href="https://github.com/apache/linkis" target="_blank" rel="noopener noreferrer">https://github.com/apache/linkis</a>, this part of the engine is compiled for everyone to choose and use.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="download-link">Download link<a class="hash-link" href="#download-link" title="Direct link to heading">​</a></h2><table><thead><tr><th align="left"><strong>linkis version</strong></th><th align="left"><strong>engines included</strong></th><th align="left"><strong>engine material package download link</strong></th></tr></thead><tbody><tr><td align="left">1.4.0</td><td align="left">jdbc<br>pipeline<br>io_file<br>flink<br>openlookeng<br>sqoop<br>presto<br>elasticsearch<br>trino<br>impala<br></td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.4.0-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.4.0-engineconn-plugin.tar</a></td></tr><tr><td align="left">1.3.2</td><td align="left">jdbc<br>pipeline<br>io_file<br>flink<br>openlookeng<br>sqoop<br>presto<br>elasticsearch<br>trino<br>seatunnel<br></td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.3.2-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.3.2-engineconn-plugin.tar</a></td></tr><tr><td align="left">1.3.1</td><td align="left">jdbc<br>pipeline<br>io_file<br>flink<br>openlookeng<br>sqoop<br>presto<br>elasticsearch<br>trino<br>seatunnel<br></td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.3.1-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.3.1-engineconn-plugin.tar</a></td></tr><tr><td align="left">1.3.0</td><td align="left">jdbc<br>pipeline<br>io_file<br>flink<br>openlookeng<br>sqoop<br>presto<br>elasticsearch<br></td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.3.0-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.3.0-engineconn-plugin.tar</a></td></tr><tr><td align="left">1.2.0</td><td align="left">jdbc<br>pipeline<br>flink<br>openlookeng<br>sqoop<br>presto<br>elasticsearch<br></td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.2.0-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.2.0-engineconn-plugin.tar</a></td></tr><tr><td align="left">1.1.3</td><td align="left">jdbc<br>pipeline<br>flink<br>openlookeng<br>sqoop</td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.1.3-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.1.3-engineconn-plugin.tar</a></td></tr><tr><td align="left">1.1.2</td><td align="left">jdbc<br>pipeline<br>flink<br>openlookeng<br>sqoop</td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.1.2-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.1.2-engineconn-plugin.tar</a></td></tr><tr><td align="left">1.1.1</td><td align="left">jdbc<br>pipeline<br>flink<br>openlookeng<br></td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.1.1-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.1.1-engineconn-plugin.tar</a></td></tr><tr><td align="left">1.1.0</td><td align="left">jdbc<br>pipeline<br>flink<br></td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.1.0-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.1.0-engineconn-plugin.tar</a></td></tr><tr><td align="left">1.0.3</td><td align="left">jdbc<br>pipeline<br>flink<br></td><td align="left"><a href="https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeDatasphere/Linkis/engineconn-plugin/1.0.3-engineconn-plugin.tar" target="_blank" rel="noopener noreferrer">1.0.3-engineconn-plugin.tar</a></td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="engine-type">engine type<a class="hash-link" href="#engine-type" title="Direct link to heading">​</a></h2><table><thead><tr><th align="left"><strong>Engine name</strong></th><th align="left"><strong>Support underlying component version<br>(default dependency version)</strong></th><th align="left"><strong>Linkis Version Requirements</strong></th><th align="left"><strong>Included in Release Package By Default</strong></th><th align="left"><strong>Description</strong></th></tr></thead><tbody><tr><td align="left">Spark</td><td align="left">Apache 2.0.0~2.4.7, <br>CDH &gt;= 5.4.0, <br>(default Apache Spark 2.4.3)</td><td align="left">&gt;<!-- -->=1.0.3</td><td align="left">Yes</td><td align="left">Spark EngineConn, supports SQL , Scala, Pyspark and R code</td></tr><tr><td align="left">Hive</td><td align="left">Apache &gt;= 1.0.0, <br>CDH &gt;= 5.4.0, <br>(default Apache Hive 2.3.3)</td><td align="left">&gt;<!-- -->=1.0.3</td><td align="left">Yes</td><td align="left">Hive EngineConn, supports HiveQL code</td></tr><tr><td align="left">Python</td><td align="left">Python &gt;= 2.6, <br>(default Python2*)</td><td align="left">&gt;<!-- -->=1.0.3</td><td align="left">Yes</td><td align="left">Python EngineConn, supports python code</td></tr><tr><td align="left">Shell</td><td align="left">Bash &gt;= 2.0</td><td align="left">&gt;<!-- -->=1.0.3</td><td align="left">Yes</td><td align="left">Shell EngineConn, supports Bash shell code</td></tr><tr><td align="left">JDBC</td><td align="left">MySQL &gt;= 5.0, Hive &gt;=1.2.1, <br>(default Hive-jdbc 2.3.4)</td><td align="left">&gt;<!-- -->=1.0.3</td><td align="left">No</td><td align="left">JDBC EngineConn, already supports Mysql,Oracle,KingBase,PostgreSQL,SqlServer,DB2,Greenplum,DM,Doris,ClickHouse,TiDB,Starrocks,GaussDB and OceanBase, can be extended quickly Support other engines with JDBC Driver package, such as SQLite</td></tr><tr><td align="left">Flink</td><td align="left">Flink &gt;= 1.12.2, <br>(default Apache Flink 1.12.2)</td><td align="left">&gt;<!-- -->=1.0.2</td><td align="left">No</td><td align="left">Flink EngineConn, supports FlinkSQL code, also supports starting a new Yarn in the form of Flink Jar Application</td></tr><tr><td align="left">Pipeline</td><td align="left">-</td><td align="left">&gt;<!-- -->=1.0.2</td><td align="left">No</td><td align="left">Pipeline EngineConn, supports file import and export</td></tr><tr><td align="left">openLooKeng</td><td align="left">openLooKeng &gt;= 1.5.0, <br>(default openLookEng 1.5.0)</td><td align="left">&gt;<!-- -->=1.1.1</td><td align="left">No</td><td align="left">openLooKeng EngineConn, supports querying data virtualization engine with Sql openLooKeng</td></tr><tr><td align="left">Sqoop</td><td align="left">Sqoop &gt;= 1.4.6, <br>(default Apache Sqoop 1.4.6)</td><td align="left">&gt;<!-- -->=1.1.2</td><td align="left">No</td><td align="left">Sqoop EngineConn, support data migration tool Sqoop engine</td></tr><tr><td align="left">Presto</td><td align="left">Presto &gt;= 0.180</td><td align="left">&gt;<!-- -->=1.2.0</td><td align="left">No</td><td align="left">Presto EngineConn, supports Presto SQL code</td></tr><tr><td align="left">ElasticSearch</td><td align="left">ElasticSearch &gt;=6.0</td><td align="left">&gt;<!-- -->=1.2.0</td><td align="left">No</td><td align="left">ElasticSearch EngineConn, supports SQL and DSL code</td></tr><tr><td align="left">Trino</td><td align="left">Trino &gt;=371</td><td align="left">&gt;=1.3.1</td><td align="left">No</td><td align="left">Trino EngineConn， supports Trino SQL code</td></tr><tr><td align="left">Seatunnel</td><td align="left">Seatunnel &gt;=2.1.2</td><td align="left">&gt;=1.3.1</td><td align="left">No</td><td align="left">Seatunnel EngineConn， supportt Seatunnel SQL code</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="install-engine-guide">Install engine guide<a class="hash-link" href="#install-engine-guide" title="Direct link to heading">​</a></h2><p>After downloading the material package of the engine, unzip the package</p><div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">tar -xvf 1.0.3-engineconn-plugin.tar</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">cd 1.0.3-engineconn-plugin</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Copy the engine material package to be used to the engine plug-in directory of linkis, and then refresh the engine material.</p><p>For the detailed process, refer to <a href="https://linkis.apache.org/zh-CN/docs/latest/deployment/install-engineconn" target="_blank" rel="noopener noreferrer">Installing the EngineConnPlugin Engine</a>.</p>]]></content>
        <author>
            <name>Casion</name>
            <uri>https://github.com/casionone/</uri>
        </author>
        <category label="engine" term="engine"/>
        <category label="guide" term="guide"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Implementation of OpenLookEng Engine]]></title>
        <id>/2022/03/20/openlookeng</id>
        <link href="https://linkis.apache.org/blog/2022/03/20/openlookeng"/>
        <updated>2022-03-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Overview]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overview">Overview<a class="hash-link" href="#overview" title="Direct link to heading">​</a></h2><p>openLooKeng is an "out of the box" engine that supports in-situ analysis of any data, anywhere, including geographically remote data sources. It provides a global view of all data through a SQL 2003 interface. openLooKeng features high availability, auto-scaling, built-in caching and indexing support, providing the reliability needed for enterprise workloads.</p><p>openLooKeng is used to support data exploration, ad hoc query and batch processing with near real-time latency of 100+ milliseconds to minutes without moving data. openLooKeng also supports hierarchical deployment, enabling geographically remote openLooKeng clusters to participate in the same query. With its cross-region query plan optimization capabilities, queries involving remote data can achieve near "local" performance.
Linkis implements the openLooKeng engine to enable Linkis to have the ability to virtualize data and support the submission of cross-source heterogeneous queries, cross-domain and cross-DC query tasks. As a computing middleware, Linkis can connect more low-level computing and storage components by using openLooKeng's connector based on the connectivity capability of Linkis' EngineConn.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="development-implementation">Development implementation<a class="hash-link" href="#development-implementation" title="Direct link to heading">​</a></h2><p>The implementation of openLooKeng ec is extended based on the EngineConn Plugin (ECP) of Linkis. Because the OpengLooKeng service supports multiple users to query through the Client, the implementation mode is the implementation mode of the multi-user concurrent engine.
That is, tasks submitted by multiple users can run in one EC process at the same time, which can greatly reuse EC resources and reduce resource waste. The specific class diagram is as follows:</p><p>【Missing picture】</p><p>The specific implementation is that openLooKengEngineConnExecutor inherits from ConcurrentComputationExecutor, supports multi-user multi-task concurrency, and supports docking to multiple different openLooKeng clusters.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="architecture">Architecture<a class="hash-link" href="#architecture" title="Direct link to heading">​</a></h2><p>Architecture diagram:
<img loading="lazy" src="https://user-images.githubusercontent.com/7869972/166736911-c0f50968-3996-40d0-afdf-52b35d4cd71c.png" alt="image" class="img_ev3q"></p><p>The task flow diagram is as follows:
<img loading="lazy" src="https://user-images.githubusercontent.com/7869972/166737177-57f8f84a-b16d-44bd-b7cf-a61fc2cc160c.png" alt="image" class="img_ev3q"></p><p>The capabilities based on Linkis and openLooKeng can provide the following capabilities:</p><ul><li><ol><li>The connection capability of the computing middleware layer based on Linkis allows upper-layer application tools to quickly connect to openLooKeng, submit tasks, and obtain logs, progress, and results.</li></ol></li><li><ol start="2"><li>Based on the public service capability of Linkis, it can complete custom variable substitution, UDF management, etc. for openLooKeng's sql</li></ol></li><li><ol start="3"><li>Based on the context capability of Linkis, the results of OpengLooKeng can be passed to downstream ECs such as Spark and Hive for query</li></ol></li><li><ol start="4"><li>Linkis-based resource management and multi-tenancy capabilities can isolate tasks from tenants and use openLooKeng resources</li></ol></li><li><ol start="5"><li>Based on OpengLooKeng's connector capability, the upper-layer application tool can complete the task of submitting cross-source heterogeneous query, cross-domain and cross-DC query type, and get a second-level return.</li></ol></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="follow-up-plans">Follow-up plans<a class="hash-link" href="#follow-up-plans" title="Direct link to heading">​</a></h2><p>In the future, the two communities will continue to cooperate and plan to launch the following functions:</p><ul><li>1.Linkis supports openLooKeng on Yarn mode</li><li><ol start="2"><li>Linkis has completed the resource management and control of openLooKeng, tasks can now be queued by Linkis, and submitted only when resources are sufficient</li></ol></li><li><ol start="3"><li>Based on the mixed computing ability of openLooKeng, the ability of Linkis Orchestrator is optimized to complete the mixed computing ability between ECs in the subsequent plan.</li></ol></li></ul>]]></content>
        <author>
            <name>Peacewong</name>
            <uri>https://github.com/peacewong/</uri>
        </author>
        <category label="engine" term="engine"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Linkis Deployment Troubleshooting]]></title>
        <id>/2022/02/21/linkis-deploy</id>
        <link href="https://linkis.apache.org/blog/2022/02/21/linkis-deploy"/>
        <updated>2022-02-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Linkis deployment instructions and precautions]]></summary>
        <content type="html"><![CDATA[<blockquote><p>Linkis deployment instructions and precautions</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-precautions-for-preparation">1. Precautions for preparation<a class="hash-link" href="#1-precautions-for-preparation" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="11-linux-server">1.1 linux server<a class="hash-link" href="#11-linux-server" title="Direct link to heading">​</a></h3><p><strong>Hardware requirements</strong><br>
<!-- -->Install nearly 10 linkis microservices. The default configuration of each microservice is to start the jvm-Xmx memory size of 512M (if the memory is not enough, you can try to reduce it to 256/128M, and you can also increase it if the memory is sufficient)</p><p><strong>Software Requirements</strong><br>
<!-- -->basic software environment
Use the following command to check whether the corresponding software has been installed, if not, please install it first</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">#java environment recommended &gt;=1.0.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">command</span><span class="token plain"> -v java</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#yum package management tool, mainly when the linkis web management console installation script is executed, the nginx/policycoreutils-python software will be installed through yum</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">command</span><span class="token plain"> -v yum</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#When the database of linkis is initialized, it will use the mysql client to connect to the database and execute the sql statement</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">command</span><span class="token plain"> -v mysql</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">command</span><span class="token plain"> -v telnet</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#Related installation packages for decompressing linkis</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">command</span><span class="token plain"> -v </span><span class="token function" style="color:rgb(80, 250, 123)">tar</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#The initial service configuration file linkis-*.properties is replaced by sed in the properties file according to the data configured by `deploy-config/*sh` when the installation script install.sh is executed</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">command</span><span class="token plain"> -v </span><span class="token function" style="color:rgb(80, 250, 123)">sed</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="12-add-deployment-user">1.2 Add deployment user<a class="hash-link" href="#12-add-deployment-user" title="Direct link to heading">​</a></h3><p>Deployment user: the startup user of the linkis core process, and this user will be granted administrator privileges by default, and the corresponding administrator login password will be generated during the deployment process, which is located in the conf/linkis-mg-gateway.properties file</p><p>linkis supports specifying the user who submits and executes. The main process service of linkis will switch to the corresponding execution user through sudo -u ${linkis-user}, and execute the corresponding engine startup command, so the process user of the engine process linkis-engine is the execution owner user belonging to the task</p><p>Take hadoop user as an example:</p><p>First check whether there is already a hadoop user in the system. If it already exists, you can directly authorize it; if not, create a user first, and then authorize.</p><p>Check if a hadoop user already exists</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token function" style="color:rgb(80, 250, 123)">id</span><span class="token plain"> hadoop</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">uid</span><span class="token operator">=</span><span class="token number">2001</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">hadoop</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">gid</span><span class="token operator">=</span><span class="token number">2001</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">hadoop</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">groups</span><span class="token operator">=</span><span class="token number">2001</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">hadoop</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If it does not exist, you need to create a hadoop user and join the hadoop user group</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token function" style="color:rgb(80, 250, 123)">sudo</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">useradd</span><span class="token plain"> hadoop -g hadoop</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token function" style="color:rgb(80, 250, 123)">vi</span><span class="token plain"> /etc/sudoers</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#Add configuration</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">hadoop </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ALL</span><span class="token operator">=</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">ALL</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> NOPASSWD: NOPASSWD: ALL</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Modify the environment variables of the installation user, <code>vim /home/hadoop/.bash_rc</code> configure the environment variables, the environment variables are as follows:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">JAVA_HOME</span><span class="token operator">=</span><span class="token plain">/opt/jdk1.8</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HADOOP_HOME</span><span class="token operator">=</span><span class="token plain">/opt/install/hadoop</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HADOOP_CONF_DIR</span><span class="token operator">=</span><span class="token plain">/etc/conf/hadoop</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HIVE_HOME</span><span class="token operator">=</span><span class="token plain">/opt/install/hive</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HIVE_CONF_DIR</span><span class="token operator">=</span><span class="token plain">/etc/conf/conf</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SPARK_HOME</span><span class="token operator">=</span><span class="token plain">/opt/install/spark</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SPARK_CONF_DIR</span><span class="token operator">=</span><span class="token plain">/etc/spark/conf</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">PYSPARK_ALLOW_INSECURE_GATEWAY</span><span class="token operator">=</span><span class="token number">1</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)"># If it is Pyspark, you must add a second parameter</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>refresh configuration</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">source</span><span class="token plain"> /home/hadoop/.bash_rc</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Check if it works</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token function" style="color:rgb(80, 250, 123)">sudo</span><span class="token plain"> -su hadoop</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">echo</span><span class="token plain"> </span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$JAVA_HOME</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">echo</span><span class="token plain"> </span><span class="token variable" style="color:rgb(189, 147, 249);font-style:italic">$HADOOP_HOME</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><font color="red">The following operations are performed under the hadoop user</font><h3 class="anchor anchorWithStickyNavbar_LWe7" id="13-installation-package-preparation">1.3 Installation package preparation<a class="hash-link" href="#13-installation-package-preparation" title="Direct link to heading">​</a></h3><p>linkis installation package, it is recommended to use version 1.X and above
The versions of 0.X and 1.X are quite different. Before 1.0.3, it was the package name of com.webank.wedatasphere.linkis, and linkis&gt;=1.0.3 was the package name of org.apache.linkis.</p><p><a href="https://linkis.apache.org/download/main/" target="_blank" rel="noopener noreferrer">Download address</a>: <a href="https://linkis.apache.org/download/main/" target="_blank" rel="noopener noreferrer">https://linkis.apache.org/download/main/</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="14-low-level-dependency-checking">1.4 Low-level dependency checking<a class="hash-link" href="#14-low-level-dependency-checking" title="Direct link to heading">​</a></h3><p>You can execute the corresponding command to see if it is supported</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">spark/hive/hdfs/python/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ spark-submit --version //spark tasks will be submitted to YARN </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">for</span><span class="token plain"> execution through this </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">command</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ python --version</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ hdfs version</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ hive --version</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="15-resource-dependencies">1.5 Resource dependencies<a class="hash-link" href="#15-resource-dependencies" title="Direct link to heading">​</a></h3><p>Accessible mysql database resources Database used to store business data of linkis itself<br>
<!-- -->Accessible yarn resource queues The execution of spark/hive/flink engines requires yarn queue resources<br>
<!-- -->Accessible hive matedata database resources (mysql as an example) Required for hive engine execution  </p><p>Note: If the version of hive spark is quite different from the default version, it is best to re-edit the relevant hive/spark version that linkis depends on for compilation</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="2-install">2. Install<a class="hash-link" href="#2-install" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="21-unzip-the-installation-package">2.1 Unzip the installation package<a class="hash-link" href="#21-unzip-the-installation-package" title="Direct link to heading">​</a></h3><p>After uploading the installation package <code>apache-linkis-1.0.3-incubating-bin.tar.gz</code>, decompress the installation package  </p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token function" style="color:rgb(80, 250, 123)">tar</span><span class="token plain"> -xvf apache-linkis-1.0.3-incubating-bin.tar.gz</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ </span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">pwd</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">/data/Install/1.0.3</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The unzipped directory structure is as follows</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-r--r-- </span><span class="token number">1</span><span class="token plain"> hadoop hadoop </span><span class="token number">531847342</span><span class="token plain"> Feb </span><span class="token number">21</span><span class="token plain"> </span><span class="token number">10</span><span class="token plain">:10 apache-linkis-1.0.3-incubating-bin.tar.gz</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">drwxrwxr-x </span><span class="token number">2</span><span class="token plain"> hadoop hadoop </span><span class="token number">4096</span><span class="token plain"> Feb </span><span class="token number">21</span><span class="token plain"> </span><span class="token number">10</span><span class="token plain">:13 bin //Script to perform environment check and </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">drwxrwxr-x </span><span class="token number">2</span><span class="token plain"> hadoop hadoop </span><span class="token number">4096</span><span class="token plain"> Feb </span><span class="token number">21</span><span class="token plain"> </span><span class="token number">10</span><span class="token plain">:13 deploy-config // Environment configuration information such as DB that depends on deployment</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-r--r-- </span><span class="token number">1</span><span class="token plain"> hadoop hadoop </span><span class="token number">1707</span><span class="token plain"> Jan </span><span class="token number">22</span><span class="token plain"> </span><span class="token number">2020</span><span class="token plain"> DISCLAIMER-WIP</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-r--r-- </span><span class="token number">1</span><span class="token plain"> hadoop hadoop </span><span class="token number">66058</span><span class="token plain"> Jan </span><span class="token number">22</span><span class="token plain"> </span><span class="token number">2020</span><span class="token plain"> LICENSE</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">drwxrwxr-x </span><span class="token number">2</span><span class="token plain"> hadoop hadoop </span><span class="token number">16384</span><span class="token plain"> Feb </span><span class="token number">21</span><span class="token plain"> </span><span class="token number">10</span><span class="token plain">:13 licenses</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">drwxrwxr-x </span><span class="token number">7</span><span class="token plain"> hadoop hadoop </span><span class="token number">4096</span><span class="token plain"> Feb </span><span class="token number">21</span><span class="token plain"> </span><span class="token number">10</span><span class="token plain">:13 linkis-package // The actual package, including lib/service startup script tool/db initialization script/microservice configuration file, etc.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-r--r-- </span><span class="token number">1</span><span class="token plain"> hadoop hadoop </span><span class="token number">83126</span><span class="token plain"> Jan </span><span class="token number">22</span><span class="token plain"> </span><span class="token number">2020</span><span class="token plain"> NOTICE</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-r--r-- </span><span class="token number">1</span><span class="token plain"> hadoop hadoop </span><span class="token number">7900</span><span class="token plain"> Jan </span><span class="token number">22</span><span class="token plain"> </span><span class="token number">2020</span><span class="token plain"> README_CN.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">-rw-r--r-- </span><span class="token number">1</span><span class="token plain"> hadoop hadoop </span><span class="token number">8184</span><span class="token plain"> Jan </span><span class="token number">22</span><span class="token plain"> </span><span class="token number">2020</span><span class="token plain"> README.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="22-configure-linkis-database-information">2.2 Configure linkis database information<a class="hash-link" href="#22-configure-linkis-database-information" title="Direct link to heading">​</a></h3><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">vim</span><span class="token plain"> deploy-config/db.sh</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Example:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">MYSQL_HOST</span><span class="token operator">=</span><span class="token plain">xx.xx.xx.xx</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">MYSQL_PORT</span><span class="token operator">=</span><span class="token number">3306</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">MYSQL_DB</span><span class="token operator">=</span><span class="token plain">linkis_test</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">MYSQL_USER</span><span class="token operator">=</span><span class="token plain">test</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">MYSQL_PASSWORD</span><span class="token operator">=</span><span class="token plain">xxxxx</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="23-configure-basic-environment-variables">2.3 Configure basic environment variables<a class="hash-link" href="#23-configure-basic-environment-variables" title="Direct link to heading">​</a></h3><p>The file is located at <code>deploy-config/linkis-env.sh</code></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="basic-directory-configuration">Basic directory configuration<a class="hash-link" href="#basic-directory-configuration" title="Direct link to heading">​</a></h4><blockquote><p>Please confirm that the deployment user deployUser has read and write permissions to these configuration directories</p></blockquote><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">deployUser</span><span class="token operator">=</span><span class="token plain">hadoop </span><span class="token comment" style="color:rgb(98, 114, 164)">#The user who executes the deployment, the previously created user hadoop</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">WORKSPACE_USER_ROOT_PATH</span><span class="token operator">=</span><span class="token plain">file:///tmp/linkis </span><span class="token comment" style="color:rgb(98, 114, 164)"># Specify the directory path used by the user, which is generally used to store the user's script files and log files, and is the user's workspace. The corresponding configuration file configuration item is wds.linkis.filesystem.root.path(linkis.properties)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">RESULT_SET_ROOT_PATH</span><span class="token operator">=</span><span class="token plain">file:///tmp/linkis </span><span class="token comment" style="color:rgb(98, 114, 164)"># Result set log and other file paths, used to store the Job result set file wds.linkis.resultSet.store.path(linkis-cg-entrance.properties) //If not configured, use Configuration of HDFS_USER_ROOT_PATH</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HDFS_USER_ROOT_PATH</span><span class="token operator">=</span><span class="token plain">hdfs:///tmp/linkis </span><span class="token comment" style="color:rgb(98, 114, 164)"># Result set log and other file paths, used to store Job result set files wds.linkis.filesystem.hdfs.root.path(linkis.properties)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">ENGINECONN_ROOT_PATH</span><span class="token operator">=</span><span class="token plain">/appcom/tmp </span><span class="token comment" style="color:rgb(98, 114, 164)">#Store the working path of the execution engine, a local directory with write permissions for the deployment user wds.linkis.engineconn.root.dir(linkis-cg-engineconnmanager.properties)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Note: Confirm whether the deployment user has read and write permissions for the corresponding file directory</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="meta-configuration-for-hive">META configuration for HIVE<a class="hash-link" href="#meta-configuration-for-hive" title="Direct link to heading">​</a></h4><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HIVE_META_URL</span><span class="token operator">=</span><span class="token plain">jdbc:mysql://127.0.0.1:3306/hive_meta_demo?useUnicode</span><span class="token operator">=</span><span class="token plain">true</span><span class="token operator">&amp;</span><span class="token plain">amp</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">characterEncoding</span><span class="token operator">=</span><span class="token plain">UTF-8 </span><span class="token comment" style="color:rgb(98, 114, 164)"># URL of HiveMeta meta database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HIVE_META_USER</span><span class="token operator">=</span><span class="token plain">demo </span><span class="token comment" style="color:rgb(98, 114, 164)"># User of HiveMeta Metabase</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HIVE_META_PASSWORD</span><span class="token operator">=</span><span class="token plain">demo123 </span><span class="token comment" style="color:rgb(98, 114, 164)"># HiveMeta metabase password</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="yarns-resourcemanager-address">Yarn's ResourceManager address<a class="hash-link" href="#yarns-resourcemanager-address" title="Direct link to heading">​</a></h4><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">#You can confirm whether it is normal by visiting http://xx.xx.xx.xx:8088/ws/v1/cluster/scheduler interface  </span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">YARN_RESTFUL_URL</span><span class="token operator">=</span><span class="token plain">http://xx.xx.xx.xx:8088  </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>When executing spark tasks, you need to use the ResourceManager of yarn. Linkis does not enable permission verification by default. If password permission verification is enabled for ResourceManager, please modify the <code>linkis_cg_engine_conn_plugin_bml_resources</code> table data after installation and deployment (or see (#todo))</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="ldap-login-authentication">LDAP login authentication<a class="hash-link" href="#ldap-login-authentication" title="Direct link to heading">​</a></h4><blockquote><p>Linkis uses static users and passwords by default. Static users are deployment users. Static passwords will randomly generate a password string during deployment and store them in {InstallPath}/conf/linkis-mg-gateway.properties (&gt;=1.0.3 version).</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">#LDAP configuration, Linkis only supports deployment user login by default, if you need to support multi-user login, you can use LDAP, you need to configure the following parameters</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">number:</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#LDAP_URL=ldap://localhost:1389/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#LDAP_BASEDN=dc=webank,dc=com</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></blockquote><h4 class="anchor anchorWithStickyNavbar_LWe7" id="basic-component-environment-information">Basic component environment information<a class="hash-link" href="#basic-component-environment-information" title="Direct link to heading">​</a></h4><blockquote><p>It is best to configure it through the user's system environment variables (step 1.2 Adding a deployment user has been explained), you can directly comment it out without configuring in the deploy-config/linkis-env.sh configuration file</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">###HADOOP CONF DIR</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#HADOOP_CONF_DIR=/appcom/config/hadoop-config</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">###HIVE CONF DIR</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#HIVE_CONF_DIR=/appcom/config/hive-config</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">###SPARK CONF DIR</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#SPARK_CONF_DIR=/appcom/config/spark-config</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></blockquote><h4 class="anchor anchorWithStickyNavbar_LWe7" id="engine-version-information">Engine version information<a class="hash-link" href="#engine-version-information" title="Direct link to heading">​</a></h4><div class="theme-admonition theme-admonition-caution alert alert--warning admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</div><div class="admonitionContent_S0QG"><p>If the official release package used does not need to be modified, if it is compiled by modifying the Spark/Hive engine version, it needs to be modified.</p></div></div><p>If spark is not version 2.4.3, you need to modify the parameters:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">## Engine version conf</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#SPARK_VERSION, If the installed Spark version is not 2.4.3, it needs to be modified to the corresponding version, such as 3.1.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SPARK_VERSION</span><span class="token operator">=</span><span class="token number">3.1</span><span class="token plain">.1</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If hive is not version 2.3.3, you need to modify the parameters:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">## Engine version conf</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">##HIVE_VERSION, If the installed Hive version is not 2.3.3, it needs to be modified to the corresponding version, such as 2.3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">HIVE_VERSION</span><span class="token operator">=</span><span class="token number">2.3</span><span class="token plain">.4</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If configured, it will actually be updated in the <code>{linkisInstallPath}/conf/linkis.properties</code> file after the installation and deployment are performed</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">#wds.linkis.spark.engine.version=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#wds.linkis.hive.engine.version=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#wds.linkis.python.engine.version=</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="jvm-memory-configuration">jvm memory configuration<a class="hash-link" href="#jvm-memory-configuration" title="Direct link to heading">​</a></h4><blockquote><p>The microservice starts the jvm memory configuration, which can be adjusted according to the actual situation of the machine. If the machine memory resources are few, you can try to adjust it to 256/128M</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">## java application default jvm memory</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(189, 147, 249)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">SERVER_HEAP_SIZE</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"512M"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></blockquote><h4 class="anchor anchorWithStickyNavbar_LWe7" id="installation-directory-configuration">Installation directory configuration<a class="hash-link" href="#installation-directory-configuration" title="Direct link to heading">​</a></h4><blockquote><p>linkis will eventually be installed in this directory, if not configured, the default is the same level directory as the current installation package</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">##The decompression directory and the installation directory need to be inconsistent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">LINKIS_HOME</span><span class="token operator">=</span><span class="token plain">/appcom/Install/LinkisInstall</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-deployment-process">3. Deployment process<a class="hash-link" href="#3-deployment-process" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="31-execute-the-deployment-script">3.1 Execute the deployment script<a class="hash-link" href="#31-execute-the-deployment-script" title="Direct link to heading">​</a></h3><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">sh</span><span class="token plain"> bin/install.sh</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>tip: If an error occurs and you are not sure what command to execute to report the error, you can add the -v parameter <code>sh -v bin/install.sh</code> to print the shell script execution process log, which is convenient for locating the problem.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="32-possible-problems">3.2 Possible problems<a class="hash-link" href="#32-possible-problems" title="Direct link to heading">​</a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="1permission-problem-mkdir-cannot-create-directory-xxxx-permission-denied">1.Permission problem mkdir: cannot create directory ‘xxxx’: Permission denied<a class="hash-link" href="#1permission-problem-mkdir-cannot-create-directory-xxxx-permission-denied" title="Direct link to heading">​</a></h4><p>The prompt for successful execution is as follows：<br>
<!-- -->Congratulations! You have installed Linkis 1.0.3 successfully, please use sh /data/Install/linkis/sbin/linkis-start-all.sh to start it!<br>
<!-- -->Your default account password is <!-- -->[<!-- -->hadoop/5e8e312b4]    </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="33-configuration-modification">3.3 Configuration modification<a class="hash-link" href="#33-configuration-modification" title="Direct link to heading">​</a></h3><p>After the installation is complete, if you need to modify the configuration, you can re-execute the installation, or modify the corresponding ${InstallPath}/conf/*properties file and restart the corresponding service</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="34-add-mysql-driver-103-version">3.4 Add mysql driver (&gt;=1.0.3) version<a class="hash-link" href="#34-add-mysql-driver-103-version" title="Direct link to heading">​</a></h3><p>Because of the license, mysql-connector-java is removed from the release package of linkis itself (the family bucket integrated by dss will be included, no need to manually add it), which needs to be added manually.<br>
<!-- -->For details, see <!-- -->[Add mysql driver package]<!-- -->(docs/1.0.3/deployment/quick-deploy#-44-Add mysql driver package)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="35-start-the-service">3.5 Start the service<a class="hash-link" href="#35-start-the-service" title="Direct link to heading">​</a></h3><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">sh</span><span class="token plain"> sbin/linkis-start-all.sh</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="36-check-whether-the-service-starts-normally">3.6 Check whether the service starts normally<a class="hash-link" href="#36-check-whether-the-service-starts-normally" title="Direct link to heading">​</a></h3><p>Visit the eureka service page (http://eurekaip:20303), version 1.0.x, the following services must be started normally</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">LINKIS-CG-ENGINECONNMANAGER</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">LINKIS-CG-ENGINEPLUGIN</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">LINKIS-CG-ENTRANCE</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">LINKIS-CG-LINKISMANAGER&nbsp;&nbsp;&nbsp;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">LINKIS-MG-EUREKA&nbsp;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">LINKIS-MG-GATEWAY</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">LINKIS-PS-CS</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">LINKIS-PS-PUBLICSERVICE</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If any services are not started, you can view detailed exception logs in the corresponding log/${service name}.log file.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-install-the-web-frontend">4. Install the web frontend<a class="hash-link" href="#4-install-the-web-frontend" title="Direct link to heading">​</a></h2><blockquote><p>Mainly perform YARN related configuration</p></blockquote><p>Download the front-end installation package and unzip it
tar -xvf apache-linkis-1.0.3-incubating-web-bin.tar.gz</p><p>Modify configuration config.sh</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">#Port for console access http://localhost:8088</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">linkis_port</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"8088"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#linkis-mg-gatewayService Address</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token assign-left variable" style="color:rgb(189, 147, 249);font-style:italic">linkis_url</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"http://localhost:9020"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Perform front-end deployment</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">sudo</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">sh</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">install</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>After installation, the nginx configuration file of linkis defaults to /etc/nginx/conf.d/linkis.conf
nginx log files are in /var/log/nginx/access.log and /var/log/nginx/error.log</p><div class="language-nginx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-nginx codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        server {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            listen 8188;# access port</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            server_name localhost;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            #charset koi8-r;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            #access_log /var/log/nginx/host.access.log main;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            location /linkis/visualis {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            root /appcom/Install/linkis-web/linkis/visualis; # static file directory</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            autoindex on;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            location / {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            root /appcom/Install/linkis-web/dist; # static file directory</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            index index.html index.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            location /ws {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_pass http://localhost:9020;#Address of backend Linkis</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_http_version 1.1;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header Upgrade $http_upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header Connection upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            location /api {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_pass http://localhost:9020; #Address of backend Linkis</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header Host $host;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header X-Real-IP $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header x_real_ipP $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header remote_addr $remote_addr;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_http_version 1.1;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_connect_timeout 4s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_read_timeout 600s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_send_timeout 12s;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header Upgrade $http_upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            proxy_set_header Connection upgrade;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            #error_page 404 /404.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            # redirect server error pages to the static page /50x.html</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            #</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            error_page 500 502 503 504 /50x.html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            location = /50x.html {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            root /usr/share/nginx/html;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">            }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If you need to modify the port or static resource directory, etc., please modify the /etc/nginx/conf.d/linkis.conf file and execute the <code>sudo nginx -s reload</code> command</p><p>Log in to the web terminal to view information
<a href="http://xx.xx.xx.xx:8188/#/login" target="_blank" rel="noopener noreferrer">http://xx.xx.xx.xx:8188/#/login</a>
Username/Password (check in {InstallPath}/conf/linkis-mg-gateway.properties)</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">#When not using LDAP configuration</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.admin.user</span><span class="token operator">=</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)">#User</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">wds.linkis.admin.password</span><span class="token operator">=</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)">#Password</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>After logging in, check whether the yarn queue resources can be displayed normally (if you want to use the spark/hive/flink engine)
Normally as shown below:<br>
<img loading="lazy" src="https://user-images.githubusercontent.com/7869972/159955494-2f305a38-a3d6-4798-83aa-58cde23bc436.png" alt="yarn-normal" class="img_ev3q"></p><p>If it cannot be displayed:  </p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-check-whether-the-yarn-address-is-configured-correctly">1 Check whether the yarn address is configured correctly<a class="hash-link" href="#1-check-whether-the-yarn-address-is-configured-correctly" title="Direct link to heading">​</a></h4><p>Database table linkis_cg_rm_external_resource_provider
Insert yarn data information</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">INSERT</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">INTO</span><span class="token plain"> </span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token identifier">linkis_cg_rm_external_resource_provider</span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token identifier">resource_type</span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token identifier">name</span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token identifier">labels</span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token identifier">config</span><span class="token identifier punctuation" style="color:rgb(248, 248, 242)">`</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">VALUES</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">'Yarn'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'default'</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token boolean">NULL</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token string" style="color:rgb(255, 121, 198)">'{\r\n"rmWebAddress": "http://xx.xx.xx.xx:8088",\r\n"hadoopVersion": "2.7.2",\r\n"authorEnable":false, \r\n"user":"hadoop",\r\n"pwd":"1234</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token string" style="color:rgb(255, 121, 198)">56"\r\n}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">config field properties</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token string" style="color:rgb(255, 121, 198)">"rmWebAddress"</span><span class="token plain">: </span><span class="token string" style="color:rgb(255, 121, 198)">"http://xx.xx.xx.xx:8088"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)">#need to bring http and port</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token string" style="color:rgb(255, 121, 198)">"hadoopVersion"</span><span class="token plain">: </span><span class="token string" style="color:rgb(255, 121, 198)">"2.7.2"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token string" style="color:rgb(255, 121, 198)">"authorEnable"</span><span class="token plain">:</span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token comment" style="color:rgb(98, 114, 164)">//Whether authentication is required You can verify the username and password by visiting http://xx.xx.xx.xx:8088 in the browser</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token string" style="color:rgb(255, 121, 198)">"user"</span><span class="token plain">:</span><span class="token string" style="color:rgb(255, 121, 198)">"user"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token comment" style="color:rgb(98, 114, 164)">//username</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token string" style="color:rgb(255, 121, 198)">"pwd"</span><span class="token plain">:</span><span class="token string" style="color:rgb(255, 121, 198)">"pwd"</span><span class="token comment" style="color:rgb(98, 114, 164)">//Password</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>After the update, because the cache is used in the program, if you want to take effect immediately, you need to restart the linkis-cg-linkismanager service</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token function" style="color:rgb(80, 250, 123)">sh</span><span class="token plain"> sbin/linkis-daemon.sh restart cg-linkismanager</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-check-whether-the-yarn-queue-is-correct">2 Check whether the yarn queue is correct<a class="hash-link" href="#2-check-whether-the-yarn-queue-is-correct" title="Direct link to heading">​</a></h4><p>Exception message: desc: queue ide is not exists in YARN.<br>
<!-- -->The configuration yarn queue does not exist and needs to be adjusted  </p><p>Modification method: linkis management console/parameter configuration &gt; global settings &gt; yarn queue name <!-- -->[wds.linkis.rm.yarnqueue]<!-- --> Modify a usable yarn queue<br>
<!-- -->Available yarn queues can be viewed at rmWebAddress:<a href="http://xx.xx.xx.xx:8088" target="_blank" rel="noopener noreferrer">http://xx.xx.xx.xx:8088</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-check-if-the-engine-material-resource-is-uploaded-successfully">5. Check if the engine material resource is uploaded successfully<a class="hash-link" href="#5-check-if-the-engine-material-resource-is-uploaded-successfully" title="Direct link to heading">​</a></h2><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token comment" style="color:rgb(98, 114, 164)">#Login to the linkis database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">select</span><span class="token plain"> </span><span class="token operator">*</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">from</span><span class="token plain"> linkis_cg_engine_conn_plugin_bml_resources</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>normal as follows<br>
<img loading="lazy" src="https://user-images.githubusercontent.com/29391030/156343249-9f6dca8f-4e0d-438b-995f-4f469270a22d.png" alt="bml" class="img_ev3q"></p><p>Check whether the material record of the engine exists (if there is an update, check whether the update time is correct).<br>
<!-- -->If it does not exist or is not updated, first try to manually refresh the material resource (for details, see <!-- -->[Engine Material Resource Refresh]<!-- -->(docs/latest/deployment/install-engineconn#23-Engine Refresh)). Check the <code>log/linkis-cg-engineplugin.log</code> log to check the specific reasons for the failure of the material. In many cases, it may be caused by the lack of permissions in the hdfs directory. Check whether the gateway address configuration is correct <code>conf/linkis.properties:wds.linkis.gateway.url</code></p><p>The material resources of the engine are uploaded to the hdfs directory by default as <code>/apps-data/${deployUser}/bml</code></p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">hdfs dfs -ls /apps-data/hadoop/bml</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">#If there is no such directory, please manually create the directory and grant ${deployUser} read and write permissions</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">hdfs dfs -mkdir /apps-data</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">hdfs dfs -chown hadoop:hadoop/apps-data</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>##Verify basic functions</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">#The version number of the engineType of the engine must match the actual one</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sh bin/linkis-cli -submitUser hadoop -engineType shell-1 -codeType shell -code "whoami"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sh bin/linkis-cli -submitUser hadoop -engineType hive-2.3.3 -codeType hql -code "show tables"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sh bin/linkis-cli -submitUser hadoop -engineType spark-2.4.3 -codeType sql -code "show tables"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sh bin/linkis-cli -submitUser hadoop -engineType python-python2 -codeType python -code 'print("hello, world!")'</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>View supported versions of each engine</p><p>Method 1: View the directory packaged by the engine</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">$ tree linkis-package/lib/linkis-engineconn-plugins/ -L 3</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">linkis-package/lib/linkis-engineconn-plugins/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── hive</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── dist</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ └── v2.3.3 #version is 2.3.3 engineType is hive-2.3.3</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── plugin</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── 2.3.3</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── python</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── dist</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ └── vpython2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── plugin</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── python2 #version is python2 engineType is python-python2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── shell</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── dist</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ │ └── v1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── plugin</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── 1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└── spark</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    ├── dist</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    │ └── v2.4.3</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">    └── plugin</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">        └── 2.4.3</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Method 2: View the database table of linkis
select * from linkis_cg_engine_conn_plugin_bml_resources</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-troubleshooting-installation-and-deployment-common-problems">6. Troubleshooting installation and deployment common problems<a class="hash-link" href="#6-troubleshooting-installation-and-deployment-common-problems" title="Direct link to heading">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="61-version-compatibility-issues">6.1 Version compatibility issues<a class="hash-link" href="#61-version-compatibility-issues" title="Direct link to heading">​</a></h3><p> The engine supported by linkis by default, for compatibility with dss, you can view this document <a href="https://github.com/apache/linkis/blob/master/README.md" target="_blank" rel="noopener noreferrer">https://github.com/apache/linkis/blob/master/README.md</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="62-how-to-locate-the-server-exception-log">6.2 How to locate the server exception log<a class="hash-link" href="#62-how-to-locate-the-server-exception-log" title="Direct link to heading">​</a></h3><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Linkis has many microservices. If you are unfamiliar with the system, sometimes you cannot locate the specific module that has an exception. You can search through the global log.  </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">tail -f log/* |grep -5n exception (or tail -f log/* |grep -5n ERROR)  </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">less log/* |grep -5n exception (or less log/* |grep -5n ERROR)  </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="63-execution-of-abnormal-troubleshooting-of-engine-tasks">6.3 Execution of abnormal troubleshooting of engine tasks<a class="hash-link" href="#63-execution-of-abnormal-troubleshooting-of-engine-tasks" title="Direct link to heading">​</a></h3><p>  step1: Find the startup deployment directory of the engine<br>
<!-- -->Method 1: If it is displayed in the execution log, you can view it on the management console as shown below:<br>
<img loading="lazy" src="https://user-images.githubusercontent.com/29391030/156343802-9d47fa98-dc70-4206-b07f-df439b291028.png" alt="engine-log" class="img_ev3q"><br>
<!-- -->Method 2: If it is not found in method 1, you can find the parameter of <code>wds.linkis.engineconn.root.dir</code> configured in <code>conf/linkis-cg-engineconnmanager.properties</code>, which is the directory where the engine is started and deployed. The user of the execution engine is isolated (taskId). If you do not know the taskid, you can select it after sorting by time. ll -rt /appcom/tmp/${executing user}/workDir</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">cd /appcom/tmp/${executing user}/workDir/${taskId}  </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># The directory is roughly as follows  </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">conf -&gt; /appcom/tmp/engineConnPublickDir/6a09d5fb-81dd-41af-a58b-9cb5d5d81b5a/v000002/conf #engine configuration file  </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">engineConnExec.sh #Generated engine startup script  </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">lib -&gt; /appcom/tmp/engineConnPublickDir/45bf0e6b-0fa5-47da-9532-c2a9f3ec764d/v000003/lib #Engine dependent packages  </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">logs #Engine startup and execution related logs  </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>  step2: View the log of the engine<br>
<!-- -->less logs/stdout</p><p>  step3: try to execute the script manually (if needed)<br>
<!-- -->Debugging can be done by trying to execute the script manually<br>
<!-- -->sh engineConnExec.sh  </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="64-notes-on-cdh-adaptation-version">6.4 Notes on CDH adaptation version<a class="hash-link" href="#64-notes-on-cdh-adaptation-version" title="Direct link to heading">​</a></h3><p>  CDH itself is not an official standard hive/spark package. When adapting, it is best to modify the hive/spark version dependencies in the source code of linkis to recompile and deploy.
For details, please refer to the CDH adaptation blog post<br>
<a href="https://mp.weixin.qq.com/s/__QxC1NoLQFwme1yljy-Nw" target="_blank" rel="noopener noreferrer">[Linkis1.0 - Installation and Stepping in the CDH5 Environment]</a><br>
<a href="https://mp.weixin.qq.com/s/9Pl9P0hizDWbbTBf1yzGJA" target="_blank" rel="noopener noreferrer">[DSS1.0.0+Linkis1.0.2——Trial record in CDH5 environment]</a><br>
<a href="https://mp.weixin.qq.com/s/vcFge4BNiEuW-7OC3P-yaw" target="_blank" rel="noopener noreferrer">[DSS1.0.0 and Linkis1.0.2——Summary of JDBC engine related issues]</a><br>
<a href="https://mp.weixin.qq.com/s/VxZ16IPMd1CvcrvHFuU4RQ" target="_blank" rel="noopener noreferrer">[DSS1.0.0 and Linkis1.0.2——Summary of Flink engine related issues]</a>  </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="66-debugging-of-http-interface">6.6 Debugging of Http interface<a class="hash-link" href="#66-debugging-of-http-interface" title="Direct link to heading">​</a></h3><p>  Method 1 can open the <!-- -->[Login-Free Mode Guide]<!-- --> (docs/latest/api/login-api#2 Login-Free Configuration)<br>
<!-- -->Method 2: Add a static Token to the http request header</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Token-User:hadoop</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Token-Code: BML-AUTH</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="67-troubleshooting-process-for-abnormal-problems">6.7 Troubleshooting process for abnormal problems<a class="hash-link" href="#67-troubleshooting-process-for-abnormal-problems" title="Direct link to heading">​</a></h3><p>  First, follow the above steps to check whether the service/environment, etc. are all started normally<br>
<!-- -->Troubleshoot basic problems according to some of the scenarios listed above<br>
<a href="https://docs.qq.com/doc/DSGZhdnpMV3lTUUxq" target="_blank" rel="noopener noreferrer">QA documentation</a> Find out if there is a solution, link: <a href="https://docs.qq.com/doc/DSGZhdnpMV3lTUUxq" target="_blank" rel="noopener noreferrer">https://docs.qq.com/doc/DSGZhdnpMV3lTUUxq</a><br>
<!-- -->See if you can find a solution by searching the content in the issue<br>
<img loading="lazy" src="https://user-images.githubusercontent.com/29391030/156343419-81cc25e0-aa94-4c06-871c-bb036eb6d4ff.png" alt="issues" class="img_ev3q"><br>
<!-- -->Through the official website document search, for some problems, you can search for keywords through the official website, such as searching for "deployment". (If 404 appears,   please refresh your browser)<br>
<img loading="lazy" src="https://user-images.githubusercontent.com/29391030/156343459-7911bd05-4d8d-4a7b-b9f8-35c152d52c41.png" alt="search" class="img_ev3q">     </p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="7-how-to-obtain-relevant-information">7. How to obtain relevant information<a class="hash-link" href="#7-how-to-obtain-relevant-information" title="Direct link to heading">​</a></h2><p>Linkis official website documents are constantly improving, you can view/keyword search related documents on this official website.</p><p>Related blog post links  </p><ul><li>Linkis technical blog collection <a href="https://github.com/apache/linkis/issues/1233" target="_blank" rel="noopener noreferrer">https://github.com/apache/linkis/issues/1233</a>  </li><li>Official account technical blog post <a href="https://mp.weixin.qq.com/mp/homepage?__biz=MzI4MDkxNzUxMg==&amp;hid=1&amp;sn=088cbf2bbed1c80d003c5865bc92ace8&amp;scene=18" target="_blank" rel="noopener noreferrer">https://mp.weixin.qq.com/mp/homepage?__biz=MzI4MDkxNzUxMg==&amp;hid=1&amp;sn=088cbf2bbed1c80d003c5865bc92ace8&amp;scene=18</a>  </li><li>Official website documentation <a href="https://linkis.apache.org/docs/latest/about/introduction/" target="_blank" rel="noopener noreferrer">https://linkis.apache.org/docs/latest/about/introduction/</a>  </li><li>bilibili technology sharing video <a href="https://space.bilibili.com/598542776?spm_id_from=333.788.b_765f7570696e666f.2" target="_blank" rel="noopener noreferrer">https://space.bilibili.com/598542776?spm_id_from=333.788.b_765f7570696e666f.2</a></li></ul>]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to Write a Blog]]></title>
        <id>/2022/02/08/how-to-user-blog</id>
        <link href="https://linkis.apache.org/blog/2022/02/08/how-to-user-blog"/>
        <updated>2022-02-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This article mainly guides you how to publish blog posts on the Linkis official website. You are welcome to submit blog post documents about Apache Linkis, including but not limited to Linkis installation/source code analysis/architecture/experience sharing.]]></summary>
        <content type="html"><![CDATA[<blockquote><p><em>This article mainly guides you how to publish blog posts on the Linkis official website. You are welcome to submit blog post documents about Apache Linkis, including but not limited to Linkis installation/source code analysis/architecture/experience sharing. </em></p></blockquote><p>This article mainly refers to Docusaurus' official <!-- -->[blog post specifications and examples]<!-- --> (<a href="https://docusaurus.io/zh-CN/blog" target="_blank" rel="noopener noreferrer">https://docusaurus.io/zh-CN/blog</a>). The guidelines and specifications may not be perfect. Any comments or suggestions are welcome.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="resource-path">Resource path<a class="hash-link" href="#resource-path" title="Direct link to heading">​</a></h2><ul><li>Chinese blog post warehouse path: <a href="https://github.com/apache/linkis-website/tree/dev/i18n/zh-CN/docusaurus-plugin-content-blog" target="_blank" rel="noopener noreferrer">https://github.com/apache/linkis-website/tree/dev/i18n/zh-CN/docusaurus-plugin-content-blog</a></li><li>English blog post warehouse path: <a href="https://github.com/apache/linkis-website/tree/dev/blog" target="_blank" rel="noopener noreferrer">https://github.com/apache/linkis-website/tree/dev/blog</a></li></ul><p>Each blog post needs to support both Chinese and English. Please do not omit the corresponding English documents when submitting.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="file-naming">File naming<a class="hash-link" href="#file-naming" title="Direct link to heading">​</a></h2><p>The framework will automatically parse the release date in YYYY-MM-DD format from the directory/file name</p><ul><li>eg: blog/2021-02-08-how-to-user-blog.md</li><li>The access path of http is: http://xxxxx/blog/2021/02/08/how-to-user-blog</li></ul><p>The blog post release log will automatically parse the corresponding date according to the file: 2021-02-08, so the default is to sort by date.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="graphic-blog-specification">Graphic blog specification<a class="hash-link" href="#graphic-blog-specification" title="Direct link to heading">​</a></h2><ul><li>⚠ If the blog post involves image resources and needs to load local image resources, please use the form of a folder, so that the resources such as images required by the blog can be conveniently put together with the Markdown document.</li><li>⚠ If it is a picture of the architecture/process, the original project file, such as .vsdx file, please upload it to the img directory for subsequent modification. Please ensure that no Chinese pictures appear in English blog posts.</li></ul><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token operator">|</span><span class="token plain">-- blog</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token operator">|</span><span class="token plain"> </span><span class="token operator">|</span><span class="token plain">--2021-02-08-how-to-user-blog</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token operator">|</span><span class="token plain"> </span><span class="token operator">|</span><span class="token plain"> </span><span class="token operator">|</span><span class="token plain">-- img //Store the image</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token operator">|</span><span class="token plain"> </span><span class="token operator">|</span><span class="token plain"> </span><span class="token operator">|</span><span class="token plain">-- index.md //Blog content</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Reference example:</p><ul><li>Source: <a href="https://github.com/facebook/docusaurus/tree/main/website/blog/2022-01-24-docusaurus-2021-recap" target="_blank" rel="noopener noreferrer">https://github.com/facebook/docusaurus/tree/main/website/blog/2022-01-24-docusaurus-2021-recap</a></li><li>Visual Effects: <a href="https://docusaurus.io/zh-CN/blog/2022/01/24/docusaurus-2021-recap" target="_blank" rel="noopener noreferrer">https://docusaurus.io/zh-CN/blog/2022/01/24/docusaurus-2021-recap</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="summary">Summary<a class="hash-link" href="#summary" title="Direct link to heading">​</a></h2><p>The blog's home page ( /blog by default) is the blog list page, which displays all blog posts.</p><p>Use <!-- --> in blog posts to mark article abstracts. <!-- --> The above content will become a summary and will be displayed on the blog homepage.
for example:</p><div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block punctuation" style="color:rgb(248, 248, 242)">---</span><span class="token front-matter-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule">title</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> Abstract example</span><span class="token front-matter-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block"></span><span class="token front-matter-block punctuation" style="color:rgb(248, 248, 242)">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">All these will be part of the blog post summary.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Even include this line.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">&lt;!--truncate--&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">But this line and the content below this line will not be truncated.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">This line will not.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Neither will this line.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-information">Metadata information<a class="hash-link" href="#metadata-information" title="Direct link to heading">​</a></h2><p>Markdown documents can use the following Markdown frontend metadata fields, enclosed by lines on either side of ---.</p><div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block punctuation" style="color:rgb(248, 248, 242)">---</span><span class="token front-matter-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule">title</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> Welcome Docusaurus v2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule">description</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> This is my first post on Docusaurus 2.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml">data</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml datetime number">2022-02-01</span><span class="token front-matter-block front-matter yaml language-yaml"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule">slug</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> welcome</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token front-matter-block front-matter yaml language-yaml">docusaurus</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token front-matter-block front-matter yaml language-yaml">v2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule">authors</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml">  </span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token front-matter-block front-matter yaml language-yaml"> </span><span class="token front-matter-block front-matter yaml language-yaml key atrule">name</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> Joel Marcey</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml">    </span><span class="token front-matter-block front-matter yaml language-yaml key atrule">title</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> Co</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token front-matter-block front-matter yaml language-yaml">creator of Docusaurus 1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml">    </span><span class="token front-matter-block front-matter yaml language-yaml key atrule">url</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> https</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml">//github.com/JoelMarcey</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml">    </span><span class="token front-matter-block front-matter yaml language-yaml key atrule">image_url</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> https</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml">//github.com/JoelMarcey.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml">  </span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token front-matter-block front-matter yaml language-yaml"> </span><span class="token front-matter-block front-matter yaml language-yaml key atrule">name</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> Sébastien Lorber</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml">    </span><span class="token front-matter-block front-matter yaml language-yaml key atrule">title</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> Docusaurus maintainer</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml">    </span><span class="token front-matter-block front-matter yaml language-yaml key atrule">url</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> https</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml">//sebastienlorber.com</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml">    </span><span class="token front-matter-block front-matter yaml language-yaml key atrule">image_url</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> https</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml">//github.com/slorber.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule">tags</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> </span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">[</span><span class="token front-matter-block front-matter yaml language-yaml">hello</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token front-matter-block front-matter yaml language-yaml"> docusaurus</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token front-matter-block front-matter yaml language-yaml">v2</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">]</span><span class="token front-matter-block front-matter yaml language-yaml"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule">image</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> https</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml">//i.imgur.com/mErPwqL.png</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block front-matter yaml language-yaml"></span><span class="token front-matter-block front-matter yaml language-yaml key atrule">hide_table_of_contents</span><span class="token front-matter-block front-matter yaml language-yaml punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token front-matter-block front-matter yaml language-yaml"> </span><span class="token front-matter-block front-matter yaml language-yaml boolean important">false</span><span class="token front-matter-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token front-matter-block"></span><span class="token front-matter-block punctuation" style="color:rgb(248, 248, 242)">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Welcome to this blog. This blog is built using </span><span class="token url">[</span><span class="token url content bold punctuation" style="color:rgb(248, 248, 242)">**</span><span class="token url content bold content">Docusaurus 2</span><span class="token url content bold punctuation" style="color:rgb(248, 248, 242)">**</span><span class="token url">](</span><span class="token url">https://docusaurus.io/</span><span class="token url">)</span><span class="token plain">.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">&lt;!--truncate--&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">This is my first blog post.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Below is a list of content.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Common parameters</p><table><thead><tr><th>Name</th><th>Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td><code>authors</code></td><td><code>Authors</code></td><td><code>undefined</code></td><td>List of blog post authors (or unique author).</td></tr><tr><td><code>authors.url</code></td><td><code>string</code></td><td><code>undefined</code></td><td>The URL that the author's name will be linked to. This could be a GitHub, Twitter, Facebook profile URL, etc.</td></tr><tr><td><code>authors.image_url</code></td><td><code>string</code></td><td><code>undefined</code></td><td>The URL to the author's thumbnail image.</td></tr><tr><td><code>authors.title</code></td><td><code>string</code></td><td><code>undefined</code></td><td>A description of the author.</td></tr><tr><td><code>title</code></td><td><code>string</code></td><td>Markdown title</td><td>The blog post title.</td></tr><tr><td><code>date</code></td><td><code>string</code></td><td>File name or file creation time</td><td>The blog post creation date. If not specified, this can be extracted from the file or folder name, eg, <code>2021-04-15-blog-post. mdx</code>, <code>2021-04-15-blog-post/index.mdx</code>, <code>2021/04/15/blog-post.mdx</code>. Otherwise, it is the Markdown file creation time.</td></tr><tr><td><code>tags</code></td><td><code>Tag[]</code></td><td><code>undefined</code></td><td>A list of strings or objects of two string fields <code>label</code> and <code>permalink</code> to tag to your post.</td></tr><tr><td><code>keywords</code></td><td><code>string[]</code></td><td><code>undefined</code></td><td>Keywords meta tag, which will become the <code>&lt;meta name="keywords" content="keyword1,keyword2,..."/&gt;</code> in <code>&lt;head&gt; </code>, used by search engines.</td></tr><tr><td><code>description</code></td><td><code>string</code></td><td>The first line of Markdown content</td><td>The description of your document, which will become the <code>&lt;meta name="description" content="..."/&gt;</code> and <code>&lt;meta property= "og:description" content="..."/&gt;</code> in <code>&lt;head&gt;</code>, used by search engines.</td></tr><tr><td><code>image</code></td><td><code>string</code></td><td><code>undefined</code></td><td>Cover or thumbnail image that will be used when displaying the link to your post.</td></tr><tr><td><code>slug</code></td><td><code>string</code></td><td>File path</td><td>Allows to customize the blog post url (<code>/&lt;routeBasePath&gt;/&lt;slug&gt;</code>). Support multiple patterns: <code>slug: my-blog-post</code>, <code>slug: / my/path/to/blog/post</code>, slug: <code>/</code>.</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="author-information">Author information<a class="hash-link" href="#author-information" title="Direct link to heading">​</a></h2><p>For the average blog post author, maintaining author information inline in each blog post can be tedious.
Can be globally in the config file declare these authors:
<code>blog/authors.yml</code></p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">Casion</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">   </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Casion</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">   </span><span class="token key atrule">title</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Development Engineer of WeBank</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">   </span><span class="token key atrule">url</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">//github.com/casionone/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">   </span><span class="token key atrule">image_url</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">//avatars.githubusercontent.com/u/7869972</span><span class="token punctuation" style="color:rgb(248, 248, 242)">?</span><span class="token plain">v=4</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>]]></content>
        <author>
            <name>Casion</name>
            <uri>https://github.com/casionone/</uri>
        </author>
        <category label="blog" term="blog"/>
        <category label="guide" term="guide"/>
    </entry>
</feed>