全部產品
Search
文件中心

E-MapReduce:Kyuubi計算引擎管理

更新時間:Jul 01, 2024

本文為您介紹Kyuubi支援的引擎及共用層級,並通過樣本為您介紹如何啟動計算引擎和向計算引擎提交任務。

支援引擎

EMR叢集安裝Kyuubi時會依賴安裝YARN和Spark3引擎。EMR Kyuubi支援Spark3 on YARN部署(暫未支援Flink、Trino以及Spark2引擎)。本文以Spark為例,一個Spark引擎對應一個YARN Spark Application,具體請參見樣本

共用層級

根據Kyuubi服務的配置頁面的kyuubi-defaults.conf頁簽中參數kyuubi.engine.share.level的配置,可以為引擎設定不同的共用層級。

共用層級

語義

適用情境

隔離程度

共用程度

CONNECTION

每個Session啟動一個引擎

  • 大規模ETL

  • Ad-hoc查詢

USER

每個使用者一個引擎

GROUP

每個資源群組一個引擎

SERVER

每個叢集一個引擎

管理員

高安全叢集程度最高,非高安全叢集程度最低

高安全叢集只允許管理員使用

樣本

以下情境以共用層級USER為例(即設定參數kyuubi.engine.share.level為USER),本樣本假設所有使用者都已通過LDAP或Kerberos認證。

  1. 根據需求動態啟動計算引擎。

    新使用者user1需要使用Spark計算引擎,通過kyuubi-beeline工具提交作業後,Kyuubi Server會啟動一個新的Spark引擎處理使用者作業。

    kyuubi-beeline -n user1 \
      -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \
      -f query1.sql

    如果新使用者user2需要指定Spark引擎使用的資源量,可以有以下兩種方式:

    • 方式一:在JDBC URL中設定Spark Application Executor等資源

      # Set User config via JDBC Connection URL
      
      kyuubi-beeline -n user2 \
        -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000?spark.dynamicAllocation.enabled=false;spark.executor.cores=2;spark.executor.memory=4g;spark.executor.instances=4" \
        -f query1.sql
    • 方式二:在kyuubi-defaults.conf設定檔中設定Spark引擎使用的資源量

      # Set User default config in kyuubi-defatuls.conf
      # ___user2___.spark.dynamicAllocation.enabled=false
      # ___user2___.spark.executor.memory=5g
      # ___user2___.spark.executor.cores=2
      # ___user2___.spark.executor.instances=10
      
      kyuubi-beeline -n user2 \
        -u "jdbc:hive2://master-1-1:10009/tpcds_parquet_1000" \
        -f query1.sql
  2. 向指定引擎提交任務。

    Kyuubi Server啟動的Spark引擎在使用者作業運行完成之後會繼續保留一段時間,新的計算任務可以複用該引擎,無需啟動新的YARN Application,提升作業或SQL查詢效能。如果長時間沒有新作業提交,引擎會自動結束。引擎保留時間由參數kyuubi.session.engine.idle.timeout控制,預設值為PT30M(即保留30分鐘),該參數可以在Kyuubi服務的配置頁面的kyuubi-defaults.conf頁簽中配置。

    Kyuubi支援在同一個共用層級下建立subdomain。例如新使用者user4需要針對不同業務情境使用不同的引擎資源,可以在JDBC URL中設定kyuubi.engine.share.level.subdomain參數,然後提交作業到不同的引擎上。

    kyuubi-beeline -n user4 \
      -u "jdbc:hive2://master-1-1:10009/biz1?kyuubi.engine.share.level.subdomain=biz1" \
      -f query1.sql
    
    kyuubi-beeline -n user4 \
      -u "jdbc:hive2://master-1-1:10009/biz2?kyuubi.engine.share.level.subdomain=biz2" \
      -f query2.sql
    
     kyuubi-beeline -n user4 \
      -u "jdbc:hive2://master-1-1:10009/biz3?kyuubi.engine.share.level.subdomain=biz3" \
      -f query3.sql
  3. 單個引擎支援多個Spark Session。

    Kyuubi支援多個Spark Session同時使用一個Spark引擎。例如使用者user1在兩個不同的終端同時提交作業,兩個作業會使用同一個Spark引擎進行運算,多個作業會根據Spark內部的預設調度機制完成Executor資源分派。

    # Console 1
    kyuubi-beeline -n user1 \
      -u "jdbc:hive2://master-1-1:10009/biz1" \
      -f query1.sql
    
    # Console 2
    kyuubi-beeline -n user1 \
      -u "jdbc:hive2://master-1-1:10009/biz2" \
      -f query2.sql

參考文檔