FLINK統合oozieシェル活動作業は、Kerberos認証に提出しました

FLINKが遭遇した多くの問題を提出したので最近、最新のcdh6.3.0上の新しいクラスタの移行で忙しくしています

幸いなことに、多くの高速化の問題を解決するために、オリジナルやコミュニティの助けを借り、面白い手動でパートナーClouderaのライセンスがあります

クラスタの特定の例、cdh6.3.0 + Flink1.8.1、すべてのコンポーネントが原因の認定にKerberosとLDAP上にある全データプラットフォームので、私たちは、統一タスクoozieを提出することを選択したジョブ投入方法

部門間のコンピューティングリソースの部門は今、我々は糸リソースキューを介してであるため、Kerberos認証ので、我々はまた、別のキータブ、洗練へのコントロールのアクセス許可を必要とperjob FLINKが必要

しかし、今FLINKのサポートは非​​常に良いではありません、構成ファイルでのみキータブを設定することができ、仕事は自分の内部を含むように、このすべてを引くこのキータブコピーに行き始めます

FLINK最初の提出が、それでもoozieでジョブを送信できるようにしたいです

全く自然oozieは、ジョブがサポートFLINKを提出提出していないがあるので、我々は唯一の方法oozieシェルのアクションを選択することができます

FLINKは良い未来を築くためにタスクを提出開始、oozieシェルによって提出

#!/ binに/ bashの

FLINK実行-m糸クラスタflinktest.jar

ドゥアンすぐ

FLINKコマンドが見つかりません

絶対パスを変更するには、コマンドの後に!またはドゥアン

org.apache.flink.client.deployment.ClusterDeploymentException:糸セッションクラスタをデプロイできませんでした

org.apache.flink.yarn.AbstractYarnClusterDescriptor.deploySessionClusterで(AbstractYarnClusterDescriptor.java:387)

org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:213)でorg.apache.flink.client.cli.CliFrontend.runProgram(CliFrontend.java:259)で

org.apache.flink.client.cli.CliFrontend.parseParametersで(CliFrontend.java:1050)

org.apache.flink.client.cli.CliFrontend.lambda $メインで$ 11の(CliFrontend.java:1126)

javax.security.auth.Subject.doAsでjava.security.AccessController.doPrivileged(ネイティブメソッド)(Subject.java:422)で

org.apache.hadoop.security.UserGroupInformation.doAsで(UserGroupInformation.java:1836)

org.apache.flink.runtime.security.HadoopSecurityContext.runSecuredで(HadoopSecurityContext.java:41)

oozieはHADOOP_CONF_DIRが上書きされるため、スケジュールは、糸はできません

シェルの中に手動でHADOOP_CONF_DIR = XXXXXをエクスポート

発見!

提出します

しかし!

時には、あなたは成功し、時には失敗しますか?黒疑問符

org.apache.flink.runtime.resourcemanager.exceptions.ResourceManagerException:// FLINKの@ xxxxxは:36166 /ユーザー/のResourceManagerのResourceManager akka.tcpを開始できませんでした

org.apache.flink.runtime.resourcemanager.ResourceManager.onStartで(ResourceManager.java:202)

org.apache.flink.runtime.rpc.akka.AkkaRpcActor $ StoppedState.startで(AkkaRpcActor.java:539)

org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleControlMessageで(AkkaRpcActor.java:164)

org.apache.flink.runtime.rpc.akka.AkkaRpcActor.onReceiveで(AkkaRpcActor.java:142)

org.apache.flink.runtime.rpc.akka.FencedAkkaRpcActor.onReceiveで(FencedAkkaRpcActor.java:40)

akka.actor.UntypedActor $$ anonfun $で$ 1.applyOrElseを受け取る(UntypedActor.scala:165)

でakka.actor.Actor $ class.aroundReceive(Actor.scala:502)

でakka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)

akka.actor.ActorCell.receiveMessageで(ActorCell.scala:526)

そしてakka.actor.ActorCell.invoke(ActorCell.scala:495)

akka.dispatch.Mailbox.processMailboxで(Mailbox.scala:257)

akka.dispatch.Mailbox.runで(Mailbox.scala:224)

akka.dispatch.Mailbox.execで(Mailbox.scala:234)

scala.concurrent.forkjoin.ForkJoinTask.doExecで(ForkJoinTask.java:260)

scala.concurrent.forkjoin.ForkJoinPool $ WorkQueue.runTaskで(ForkJoinPool.java:1339)

scala.concurrent.forkjoin.ForkJoinPool.runWorkerで(ForkJoinPool.java:1979)

org.apache.flink.runtime.resourcemanager.exceptions.ResourceManagerException:scala.concurrent.forkjoin.ForkJoinWorkerThread.runによって引き起こさ(ForkJoinWorkerThread.java:107)でリソース・マネージャ・クライアントを開始できませんでした。

org.apache.flink.yarn.YarnResourceManager.initializeで(YarnResourceManager.java:250)

org.apache.flink.runtime.resourcemanager.ResourceManager.startResourceManagerServicesで(ResourceManager.java:212)

org.apache.flink.runtime.resourcemanager.ResourceManager.onStartで(ResourceManager.java:200)

org.apache.hadoop.yarn.exceptions.InvalidApplicationMasterRequestException:... 16もっとによって引き起こさアプリケーションマスターはすでにレジストであります

ResourceManager登録アプリケーションマスターが登録されている場合は?その後、いくつかの異常がありました

しかし、時にはそれが正常に送信することができ、これは私は少し混乱してみましょう

oozieは、クラスタリード上の環境変数の多くをカバーしているため最終的に我々が見つかりました。

FLINKコマンドoozieスクリプトプラスのenv -i前の溶液

これは、すべての環境変数をクリアし、oozie着陸糸は、シェルを実行するために、ユーザーの環境変数を使用します

遂に

#!/ binに/ bashの

ENV -i / FLINKは-m糸クラスタflinktest.jarを実行します

シェルのアクションタスクが正常にFLINKを提出します

これは移動し、すべてのコンテナに対応するキータブをコピーするには、ファイルサーバー上のサブミットジョブFLINK-conf.yaml Kerberos認証を読み込みますようしかし、今、解決しなければ、まだケルベロス、すべてのタスクがに共通しています

この場合、各ジョブは、各ジョブは、その対応する認証Kerberosを使用して単一のキータブを使用して達成することができません

彼らは、我々は方法が奇妙で実装され、コミュニティグループバイケースで撮影していました

すべてのタスクは、各提出でFLINK-conf.yamlケルベロスイメージコンテナに指定された共通の認証便利CICDの変更を持っています

しかし、我々は~~同じではありません

我々はoozieは、タスクを送信しているので、そこに大きなうなずきですが、幸い、最終的に解決

FLINKはFLINK_CONF_DIRを行くことによってKerberos認証のデフォルトFLINK-conf.yamlファイルパスを読み込むために起こっているので

その後、我々は、手動でデフォルトのFLINKを上書きするFLINK_CONF_DIRを指定することで、当社独自の修正FLINK-conf.yamlファイルパスにoozieシェルスクリプトで指定する必要があります

ファイルのコピーのoozieランタイムは以下の実行中の相対パスに提出されますので、我々は、相対パスを記入し、パス

言い換えれば、我々は研究会/ FLINK-conf.yamlファイルを変更するために、Kerberosのオプションをアップロードしている私たちのkeytabファイルと全体のconfフォルダにoozieすることができます

security.kerberos.login.keytab =。 

security.kerberos.login.principal = XXX

ここでのkeytabパスを使用すると、キータブ過去のコピーをアップロードしますので./ oozie相対パスを記入します

最後に実行oozieシェルスクリプト

#!/ binに/ bashの

ENV -i FLINK_CONF_DIR =。/ confには/ -m糸クラスタ./flinktest.jarを実行FLINK

ジョブを実行するためにあなたの指定したkeytabユーザーの使用の成功

 

おすすめ

転載: www.cnblogs.com/ljygz/p/11727770.html
おすすめ