Kyuubi 實踐 | 有了它!愛奇藝加速 Hive SQL 遷移 Spark

Hive 作為愛奇藝數(shù)倉的基礎(chǔ),Hive SQL 是愛奇藝大數(shù)據(jù)平臺目前主要的數(shù)據(jù)處理工具,各個業(yè)務(wù)積累大量的 Hive ETL 任務(wù)。Spark 相對于 MapReduce 有著更為靈活的的計算模型,這使得 Spark 相對于 Hive (on MapReduce) 有更好的性能。
經(jīng)過測試對比,我們發(fā)現(xiàn)遷移 Hive SQL 到 Spark 將會帶來很大的性能提升和資源節(jié)省。

Apache Kyuubi (Incubating) 項目提供一個分布式多租戶的 Spark Thrift Server,相對于 Spark 原生的 Spark Thrift Server 有更好的架構(gòu)優(yōu)勢和更多優(yōu)秀的特性,具體對比可參考:Kyuubi v.s. Spark Thrift JDBC/ODBC Server (STS)。
1.1 雙跑對比
select sum(cast(CRC32(concat(*)) as decimal(19,0))) as checksum, count(*) as count from mock_db.mock_table

Spark 刪除不存在分區(qū)報錯,而 Hive 中允許刪除不存在分區(qū)
Spark 執(zhí)行 set mapreduce.job.reduces=-1 報錯
數(shù)字類型與字符串比較,結(jié)果與 Hive 不一致
.....
為了加快遷移的進(jìn)度,減少用戶參與,我們需要兼容部分 Hive 語法。
在 Kyuubi 中提供 kyuubi-extension-spark 模塊,維護(hù)Spark SQL的 Extensions,用于優(yōu)化Spark SQL的執(zhí)行計劃,社區(qū)已經(jīng)提供了很多優(yōu)化,詳細(xì)文檔:Auxiliary SQL extension for Spark SQL。我們基于此模塊,為不兼容的語法修改其執(zhí)行計劃,使得與 Hive 保持一致的語義。

Adhoc:用于即席查詢平臺任務(wù),數(shù)據(jù)量小,要求快速響應(yīng)。配置 USER 共享級別的引擎,較大 Driver 內(nèi)存,以及 Spark 任務(wù)搶占策略等。 Batch:用于數(shù)據(jù)開發(fā)平臺任務(wù),定時調(diào)度運行,穩(wěn)定要求較高。配置 CONNECTION 級別獨立引 擎,使得任務(wù)完全資源隔離,并添加小文件、AQE 等優(yōu)化配置。 User/Business/Custom:允許定義用戶、業(yè)務(wù)或其他自定義標(biāo)簽,綁定特有的一些配置,如:隊列、資源、兼容性適配相關(guān)配置等,降低用戶使用門檻。
KyuubiServerInfoEvent:Kyuubi Server 啟動、停止事件信息 KyuubiSessionEvent:Session 開啟、關(guān)閉事件,以及連接相關(guān)信息 KyuubiOperationEvent:Kyuubi Operation 執(zhí)行事件,包括了 SQL 執(zhí)行相關(guān)信息

文中文檔可參考:
Kyuubi v.s. Spark Thrift JDBC/ODBC Server (STS) ——https://kyuubi.apache.org/docs/latest/overview/kyuubi_vs_thriftserver.html
Auxiliary SQL extension for Spark SQL—— https://kyuubi.apache.org/docs/latest/sql/rules.html#
DropIgnoreNonexistent——https://github.com/apache/incubator-kyuubi/blob/master/extensions/spark/kyuubi-extension-spark-3-1/src/main/scala/org/apache/kyuubi/sql/DropIgnoreNonexistent.scala
User Defaults—— https://kyuubi.apache.org/docs/latest/deployment/settings.html#user-defaults
END

Apache Kyuubi 推特賬號 現(xiàn)已開通
推特搜索 Apache Kyuubi 或 瀏覽器 打開下方鏈接
即可關(guān)注~
https://twitter.com/KyuubiApache
還可以加入 Apache Kyuubi Slack
https://join.slack.com/t/apachekyuubi/shared_invite/zt-1bhswm1n6-n~0wMbkvhsp0WZX0FZXvPA
和海外開發(fā)者交流互動哦~
最后
Kyuubi 在這里提醒大家
文明上網(wǎng) 科學(xué)上網(wǎng)
往期精彩
· 如何優(yōu)化 Spark 小文件,Kyuubi 一步搞定!
丨記得點關(guān)注



