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ユーザーの使用の成功