A Brief Introduction of Kyuubi Architecture

Kyuubi Architecture

Kyuubi is an enhanced edition of the Apache Spark's primordial Thrift JDBC/ODBC Server. It is mainly designed for directly running SQL towards a cluster with all components including HDFS, YARN, Hive MetaStore, and itself secured. The main purpose of Kyuubi is to realize an architecture that can not only speed up SQL queries using Spark SQL Engine, and also be compatible with the HiveServer2's behavior as much as possible. Thus, Kyuubi use the same protocol of HiveServer2, which can be found at HiveServer2 Thrift API as the client-server communication mechanism, and a user session level SparkContext instantiating/registering/caching/recycling mechanism to implement multi-tenant functionality.

kyuubi_architecture

Unified Interface

Because Kyuubi use the same protocol of HiveServer2, it supports all kinds of JDBC/ODBC clients, and user applications written based on this Thrift API as shown in the picture above. Cat Tom can use various types of clients to create connections with the Kyuubi Server, and each connection is bound to a SparkSession instance which also contains a independent HiveMetaStoreClient to interact with Hive MetaStore Server. Tom can set session level configurations for each connection without affecting each other.

Runtime Resource Resiliency

Kyuubi does not occupy any resources from the Cluster Manager(Yarn) during startup, and will give all resources back to Yarn if there is not any active session interacting with a SparkContext. And also with the ability of Spark Dynamic Resource Allocation, it also allows us to dynamically allocating resources within a SparkContext a.k.a a Yarn Application.

Kyuubi Dynamic Resource Requesting

  • Session Level Resource Configurations
    Kyuubi supports all Spark/Hive/Hadoop configurations, such as spark.executor.cores/memory, to be set in the connection string which will be used to initialize SparkContext.
  • Example
    jdbc:hive2://<host>:<port>/;hive.server2.proxy.user=tom#spark.yarn.queue=theque;spark.executor.instances=3;spark.executor.cores=3;spark.executor.memory=10g
    

Kyuubi Dynamic SparkContext Cache

Kyuubi implements a SparkSessionCacheManager to control SparkSession/SparkContext for instantiating, registering, caching, reusing, and recycling. Different user has one and only one SparkContext instance in Kyuubi Server after it connects to the server for the first time, which will be cached in SparkSessionCacheManager for the whole connection life time and a while after all connections closed.

impersonation

All connections belong to the same user shares this SparkContext to generate their own SparkSessions

Spark Dynamic Resource Allocation

Spark provides a mechanism to dynamically adjust the resources your application occupies based on the workload. It means that your application may give resources back to the cluster if they are no longer used and request them again later when
there is demand. This feature is particularly useful if multiple applications share resources in your Spark cluster.

Please refer to Dynamic Resource Allocation to see more.

Please refer to Dynamic Allocation Configuration to learn how to configure.

With these features, Kyuubi allows us to use computing resources more efficiently.

Security

Authentication

Please refer to the Authentication/Security Guide in the online documentation for an overview on how to enable security for Kyuubi.

Authorization

Kyuubi can be integrated with Spark Authorizer to offer row/column level access control. Kyuubi does not explicitly support spark-authorizer plugin yet, here is an example you may refer to Spark Branch Authorized

authorization

High Availability

ha

Multiple Kyuubi Server instances can register themselves with ZooKeeper when spark.kyuubi.ha.enabled=true and then the clients can find a Kyuubi Server through ZooKeeper. When a client requests a server instance, ZooKeeper randomly returns a selected registered one. This feature offers:

  • High Availability
  • Load Balancing
  • Rolling Upgrade

HA Configurations

Name Default Description
spark.kyuubi.ha.enabled false Whether KyuubiServer supports dynamic service discovery for its clients. To support this, each instance of KyuubiServer currently uses ZooKeeper to register itself, when it is brought up. JDBC/ODBC clients should use the ZooKeeper ensemble: spark.kyuubi.ha.zk.quorum in their connection string.
spark.kyuubi.ha.zk.quorum none Comma separated list of ZooKeeper servers to talk to, when KyuubiServer supports service discovery via Zookeeper.
spark.kyuubi.ha.zk.namespace kyuubiserver The parent node in ZooKeeper used by KyuubiServer when supporting dynamic service discovery.

Kyuubi Internal

Kyuubi's internal is very simple to understand, which is shown as the picture below. We may take about it more detailly later.

kyuubi_internal
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,281评论 0 10
  • 近日,有杭州网友张女士发帖称:自己的女儿文文(化名),目前才8岁近视却高达600度,并且度数还在进一步加深。 经医...
    看萌宝贝阅读 316评论 0 1
  • 【读书10分钟】 工作生活更轻松 王通老师在《朋友圈调整》中分享了: 物以类聚,人以群分。想要改变自己,就需要改变...
    璇转阅读 76评论 0 0