Apache Linkisとはなんなのか?
今回はApache Linkisについて調べてみました。 今回も以下のツールを使って対象プロジェクトを決めました!
※ 本企画に関する記事の目的は、それぞれのプロジェクトを本格的に深ぼるのではなく、プロジェクト名⇆どんな内容かをパッと思い出せるようにすることを目指します!
※ とはいえ深ぼってみたいプロジェクトがあればどんどん複数連載になると思います。
Apache Linkisとは?
公式サイトによると、
Linkis builds a computation middleware layer to facilitate connection, governance and orchestration between the upper applications and the underlying data engines.
ということで、上位アプリケーションと基盤となるデータエンジン間の接続やガバナンス、オーケストレーションを容易にするための計算ミドルウェアレイヤーを構築するためのツールということです。
ドキュメントにはより詳しく書いてあるので少しふかぼってみます。Apache Linkisには以下のような機能があるようです。
- 多様な基盤計算ストレージエンジンをサポート: Spark, Hive, Python, Shell, Flink, JDBC, Pipeline, Sqoop, OpenLooKeng, Presto, ElasticSearch, Trino, SeaTunnelなど幅広いエンジンをサポート
- 様々な言語のサポート : SparkSQL, HiveSQL, Python, Shell, Pyspark, Scala, JSON and Java
- 強力なコンピューティングガバナンス機能 : タスクルーティングやロードバランシング、マルチテナント、トラフィック制御、リソース制御など、マルチレベルラベルに基づいた機能を提供
- フルスタックの計算/ストレージエンジン : オフラインバッチタスクを初めインタラクティブクエリタスク、リアルタイムストリーミングタスク、データレイクタスクなど、様々な計算エンジンおよびストレージエンジンのタスクとリクエストを対応
- 統合コンテキストサービス : ユーザーやシステム、コンピューティングエンジンを横断的にサポートし、ユーザーおよびシステムリソースファイル(JAR、ZIP、プロパティなど)、結果セット、パラメータ変数、関数、UDFなどを関連付けて管理
- 統合マテリアル : システムレベルおよびユーザーレベルのマテリアル管理を提供し、ユーザー間やシステム間でマテリアルを共有可能
- 統合データソース管理 : HiveやElasticSearch、Mysql、Kafka、MongoDBなどの様々なデータソースの情報の追加、削除、確認、変更、バージョン管理などが対応可能
- エラーコード機能 : タスクで発生する一般的なエラーに対するエラーコードと解決策を提供
なぜLinkisを導入すべきか
これは公式サイトに載っているBefore/Afterを見比べれば一目で良さがわかります。導入する前はコンピューティングツールとアプリケーションツールの繋ぎめがツールが増えるごとにどんどん増えていく、つまり全結合的に増えてしまいます。一方Linkisを導入するとLinkisがHubとして機能してくれるおかげで、統一的なAPIを通してお互いにアクセスができるようになるため、開発難易度が大きく下げることができます。

参照:https://linkis.apache.org/docs/latest/about/introduction/

参照:https://linkis.apache.org/docs/latest/about/introduction/
詳細な仕組み
こちらで詳細な内部構造が提示されています。それぞれの役割は以下のようです。
- パブリック拡張サービス: Linkis 0.Xで提供してきたマテリアルライブラリサービス、コンテキストサービス、データソースサービス、パブリックサービス
- マイクロサービスガバナンスサービス: Linkis 0.Xで既に提供されているSpring Cloud GatewayやEureka、Open Feignであり、Linkis 1.0ではNacosもサポート
- コンピューティングガバナンスサービス: Linkis 1.0の中核を成すサービスであり、申請や準備、実行という3つの段階を通してLinkisのユーザータスク制御能力を包括的に強化

参照:https://linkis.apache.org/docs/latest/about/introduction/
まとめ
今回はApache Linkisについて調べてみました。様々なコンピューティングライブラリを利用するような状況であったり大規模なアプリを開発する時のUnifiedなプラットフォームとしていつか採用してみようと思います。
Discussion