blog

flink 1.11はzeppelinを統合し、シンプルなリアルタイム・コンピューティング・プラットフォームを実現する。

zeppelinの位置づけは、sqlやscalaなどの言語の一種の使用であり、クエリ分析ツールのインタラクティブな分析です。 だからzeppelinとflinkや他のインタプリタの統合は、このようなア...

Apr 20, 2020 · 4 min. read
シェア
  • 背景: zeppelinはジョブごとのモードを提供しません。
    • zeppelinジョブモードごとに提供しない
    • リアルタイムプラットフォーム用の長い開発サイクル
  • zeppelinをベースとしたシンプルなリアルタイムプラットフォームの開発
  • zeppelin インタープリタの開発
    • sqlタスクの投入
    • jarタスクの投入

背景

flink の隆盛に伴い、zeppelin コミュニティも flink と zeppelin の統合を精力的に推進しています。 zeppelin は、sql や scala などの言語を使用した対話型分析クエリ解析ツールとして位置づけられています。

Web-based notebook that enables data-driven,
interactive data analytics and collaborative documents with SQL, Scala and more.

そこで、zeppelinは、flinkや他のインタプリタとの統合は、このようなアーキテクチャの機能があるでしょう、私はデータを処理するサービスを起動する必要があり、関連するタスクは、これに提出され、flinkを取ると、ローカル、リモート、セッションモードクラスタなどのflinkクラスタを起動する必要があります。 いくつかのflink sqlの実行時に、このクラスタに実行するために提出されます。

zeppelinジョブモードごとに提供しない

しかし、本番環境では、一部のflinkストリーミング・タスクでは、主にタスク・リソースの分離のために、ジョブごとにタスクを投入するモードを使用します。現在zeppelinは、このモードをサポートしていません。だから、多くの企業がリアルタイムストリーミングタスクコンピューティングプラットフォームを開発する、あなたは、クラスタにタスクを提出するプラットフォームを介してsqlまたはjarの使用を実現することができますので、一部の人々は、いくつかの操作の根本的な複雑さを避けるために、唯一のsqlはまた、flinkタスクを開発することができます。

リアルタイムプラットフォームの長い開発サイクル

zeppelinをベースとしたシンプルなリアルタイムプラットフォームの開発

本日は、zeppelinを使ったシンプルなリアルタイムプラットフォームの実装方法についてお話します

FLINKタスクの提出でzeppelinは、クラスタが起動されているかどうかを判断し、FLINKクラスタを開始していない場合は、設定されたモードに応じて最初に非分離モードFLINKクラスタを起動し、クライアントは、サーバーとの接続を維持し、後続のユーザーがタスクを提出する、タスクは、クラスタが開始されたばかりに提出されます。私は、コードを勉強し、この上記のジョブごとにモードを追加すると、元のアーキテクチャを破壊する可能性があり、変更が比較的大きくなりますので、zepplinインタプリタを行うには、関数は、SQLまたはjarストリーミングタスクの方法を介してflinkの提出のために排他的に使用されることだと思います。

zeppelinインタープリタの開発

核となるコードは、抽象クラスInterpreterを継承し、そのメソッドをいくつか実装するというものです。

public abstract class Interpreter {
 
 /**
 * 初期化コール、あなたはこの中にいくつかのシステムの初期化作業を追加することができ、このメソッドは一度だけ呼び出される。
 * flinkのカスタム・ソースやカスタム・シンクを書いたことのある友人なら、知らない人はいないはずだ。
 */
 @ZeppelinApi
 public abstract void open() throws InterpreterException;
 /**
 * 
 * インタープリター・リソースの解放も一度しか呼び出されない。
 */
 @ZeppelinApi
 public abstract void close() throws InterpreterException;
 
 /**
 * 入力ボックス内のコードを非同期に実行し、結果を返す。.
 *
 * @param st ページ上のボックスに何を入力するかだ。
 */
 @ZeppelinApi
 public abstract InterpreterResult interpret(String st,
 InterpreterContext context)
 throws InterpreterException; 
 
}

上記のものの他にもいくつかありますが、ここではコードを列挙しませんので、興味のある方はご自分の目で確かめてください。

一番下で、私はタスクを提出するためにflinkアプリケーションモードを使用し、openの内部では、設定ファイルを構築し、yarnClientを開始するなど、flinkの初期化を提出するためにいくつかの作業を行います。interpretメソッドで内容を解析し、タスクを投入する作業を行います。

最終的に、jarパッケージとsqlによってyarnクラスタにタスクを投入できることがわかりました。

sqlタスクの投入

ジョブ名、並列度、チェックポイント間隔など、タスクのいくつかのパラメータを指定できます。ページはこのようになり、タスクを送信すると、yarnクラスタ内の関連タスクが表示されます。

jarタスクの投入

まず適切なjarをhdfs関連パスにアップロードし、タスクを投入します。jarのパス、jobname、parallelismなどを指定し、本体は何も書く必要はなく、このタスクをyarnクラスタに投入します。

現時点では一部のコア機能しか実装されておらず、その後に改良が必要な機能もあります。

Read next

アトラシアンは、新しい DevOps 体験を生み出す 12 の新機能を携えて戻ってきた!

ミッションは、コラボレーションツールとプラクティスの力によって、すべてのチームの潜在能力を引き出すことです。これは、特にDevOpsを実践しているチームに当てはまり、優れたツールを使用することで、開発、IT運用、ビジネスチーム間の効率的なコラボレーションを強化することができます。しかし、複数のチーム間のコラボレーションを強化することは、次のような可能性も秘めています。

Apr 19, 2020 · 7 min read