# Kyuubi Containerization Guide This document gives you a brief description about how Kyuubi submits itself. Kyuubi supports "client" mode by default, which means that Kyuubi launches a server process on the local machine node and serves client side JDBC/ODBC connections. We need to setup all environments and other preparations for each node for launching Kyuubi server. This is very discommodious to deploy Kyuubi server, especially in [HA](https://yaooqinn.github.io/kyuubi/docs/high_availability_guide.html) mode, and even worse when running on different releases of Linux. Kyuubi containerization is a much more easy for Kyuubi deployment, which makes Kyuubi server instance a containerized, server-less service serving in YARN Container.

Service Model

The above picture shows the whole architecture for Kyuubi containerization. The key concept is simple and obvious, which runs Kyuubi server as YARN container and serve the JDBC/ODBC client remotely. In such an deployment mode, we do not need to configure or even make some customizations for some complicated situations. We can use the `Client` to fire a number ofr Kyuubi servers that meet our needs. The containerized Kyuubi server will be maintained in the YARN cluster as a long running service.

Glossary

Name|Description ---|--- Client| Kyuubi YARN Client, with all information we need to [deploy](https://yaooqinn.github.io/kyuubi/docs/deploy.html) Kyuubi ResourceManager | YARN ResourceManager NodeManager | YARN NodeManager Kyuubi Server | Kyuubi server instance wrapped as KyuubiAppMaster launched by YARN as an ApplicationMaster container Spark AM | Spark's ApplicationMaster, here as the role of ExecutorLauncher Spark Executor | A process launched on a NodeManager, that runs tasks and keeps data in memory or disk storage across them. Each SparkContext has its own executors. Zookeeper Service Discovery | [ZooKeeper Dynamic Service Discovery](https://yaooqinn.github.io/kyuubi/docs/architecture.html#1.4), which is useful in Kyuubi containerization because the port of KyuubiServer frontend service is random picked. JDBC/ODBC/Thrift Client | Various kinds of clients talk to Kyuubi Server

Configurations

The table below contains the server side configurations used by the Kyuubi container itself for launching and sizing itself. Name|Default|Description ---|---|--- --deploy-mode | client | when "cluster" is set, Kyuubi containerization will be enabled spark.driver.memory| 1024m | Kyuubi server container heap size spark.yarn.driver.memoryOverhead| spark.drive.memory * 0.1 | Overhead memory for Kyuubi server container spark.driver.cores| DEFAULT_RM_SCHEDULER_MAXIMUM_ALLOCATION_VCORES| Kyuubi server container cores spark.yarn.am.extraJavaOptions| (none) | Extra jvm options for Kyuubi container

Launching Kyuubi on Yarn

Firstly, please refer to the [Kyuubi Deployment Guide](https://yaooqinn.github.io/kyuubi/docs/deploy.html) on line documentation to learn how to configure the Kyuubi client. Then, the only thing we need to do is to launch Kyuubi with `bin/start-kyuubi.sh` and specify the deploy mode to "cluster". For example: ```bash $ bin/start-kyuubi.sh \ --master yarn \ --deploy-mode cluster ``` At last, a KYUUBI type YARN application named KYUUBI SERVER[version] will be created on the YARN cluster. If we go to the ResourceManager UI, we may see somme thing as follow,
And also, the server log is available to look up through the ApplicationMaster page.
## Additional Documentations [Building Kyuubi](https://yaooqinn.github.io/kyuubi/docs/building.html) [Kyuubi Deployment Guide](https://yaooqinn.github.io/kyuubi/docs/deploy.html) [High Availability Guide](https://yaooqinn.github.io/kyuubi/docs/high_availability_guide.html) [Configuration Guide](https://yaooqinn.github.io/kyuubi/docs/configurations.html) [Authentication/Security Guide](https://yaooqinn.github.io/kyuubi/docs/authentication.html) [Kyuubi ACL Management Guide](https://yaooqinn.github.io/kyuubi/docs/authorization.html) [Kyuubi Architecture](https://yaooqinn.github.io/kyuubi/docs/architecture.html) [Home Page](https://yaooqinn.github.io/kyuubi/)