A master URL must be setin your configuration at org.apache.spark.SparkContext.<init>(SparkContext.scala:379) at com.here.platform.data.processing.driver.DriverRunner$class.com$here$platform$data$processing$driver$DriverRunner$$newSparkContext
...
解決策 : この問題の再現と切り分けは困難でした。 ただし、このエラーメッセージにもかかわらず、パイプラインバージョン ID の応答が失われても、コマンドは意図したとおりに動作します。 このエラーが表示された場合は、次の CLI コマンドを使用して、パイプラインバージョンが正常に作成されたことを確認し、パイプラインバージョン ID を取得できます。
pipeline.py pipeline-version list <pipeline-id>
質問 : パイプライン JAR ファイル に資格情報を含める方法を教えてください。
A : セキュリティ上の理由から、パイプライン JAR ファイル に資格情報を追加することはお勧めしません。 プラットフォームは、ユーザーに代わってパイプラインの資格情報を管理します。 グループおよび権限の設定についての詳細 は、『 ID およびアクセス管理ガイド』を参照してください。
質問 : パイプラインへのアクセスを制限する方法を教えてください。
A : これは「グループ」を介して達成できます。 パイプライン API では、パイプラインの作成中にグループを指定できます。 そのグループに属するユーザーはパイプラインにアクセスできますが、そのグループ外のユーザーはパイプラインにアクセスできません。 アカウントのグループ設定の詳細について は、『 ID およびアクセス管理ガイド』を参照してください。
質問 : パイプライン JAR ファイル の展開に失敗する理由
A : パイプラインの展開に失敗する最も一般的な理由は、次のとおりです。
パイプラインの展開に必要な「権限」または「資格情報」がありません。
パイプライン JAR ファイル のファイルサイズが 500MB を超えているため、展開するには大きすぎます。
ご利用のパイプライン JAR ファイル のファイル名は最大 200 文字を超えているため、処理できません。
ローカルに実行されたパイプラインの場合、ドライバーはドライバープロセスの一部として UI Web サーバーを起動します。 ドライバーの実行中 http://127.0.0.1:4040/jobsに、開発者はから Web サーバーにアクセスできます。 に PipelineRunner は、 --no-quit 開発者が Enter キーを押してから最終コミット後に終了するまで待機する便利なオプションがあります。
プラットフォームで実行されているバッチパイプラインの場合は、 CLI または Web ポータルを使用して、パイプラインジョブの詳細から Spark UI にアクセスできます。 プラットフォームポータルで Open Spark UI は、ジョブがデータの処理を開始するとリンクが表示されます。 実行中のジョブの Spark UI に移動します。
質問 : 「 JAR ファイル does not exist 」というメッセージが表示されてパイプラインに失敗しましたが、テンプレートは正常に作成されました。
A : このエラーメッセージは、 JAR ファイル に、制限のないメモリ使用量につながるエラーが含まれている場合に表示されます。 このメッセージは、内部 Flink エラーであり、上書きできないため、問題の根本原因を示していません。 ローカルの Flink インスタンスで JAR ファイル をテストしてください。
A : Flink には既知のバグ(FLINK-15068) があり、デフォルトの RocksDB ログが INFO に設定されていますが、ログの記録は制限されていません。 そのため、 RocksDB ログによって、 TaskManager に割り当てられているディスク領域がいっぱいになる可能性があります。 この問題は、この例外の形式で発生する可能性があります。
"Caused by: org.apache.flink.fs.shaded.hadoop3.org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find any valid local directory for s3ablock-0001-"
publicclassCustomOptionsFactoryimplementsOptionsFactory{@OverridepublicDBOptionscreateDBOptions(DBOptions dbOptions){// Refer to https://javadoc.io/static/org.rocksdb/rocksdbjni/5.7.5/org/rocksdb/Options.html// Minimal logging
dbOptions.setInfoLogLevel(InfoLogLevel.HEADER_LEVEL);// to stop dumping rocksdb.stats to LOG
dbOptions.setStatsDumpPeriodSec(0);return dbOptions;}@OverridepublicColumnFamilyOptionscreateColumnOptions(ColumnFamilyOptions columnFamilyOptions){return columnFamilyOptions;}}
RocksDBStateBackend メインクラス内での設定 :
StreamExecutionEnvironment streamExecutionEnvironment =StreamExecutionEnvironment.getExecutionEnvironment();ParameterTool systemParameters =ParameterTool.fromSystemProperties();// Use the Checkpoint URL provided by platform environmentString checkpointUrl = systemParameters.get("checkpointUrl");// Use the disk space provided by platform environment for RocksDB local filesString dbStoragePath = systemParameters.get("dbStoragePath");RocksDBStateBackend stateBackend =newRocksDBStateBackend(checkpointUrl,true);
stateBackend.setDbStoragePath(dbStoragePath);
stateBackend.setOptions(newCustomOptionsFactory());
streamExecutionEnvironment.setStateBackend(stateBackend);
質問 : JobManager またはストリーム パイプラインのタスク管理者の CPU 使用率を確認する方法を教えてください。
A : 次のクエリは、 taskmanager コンテナの基盤となるインフラストラクチャによって報告されたメトリクスを使用して、 CPU 使用率を示します。
sum(rate(container_cpu_usage_seconds_total{pod=~"job-$deploymentId-tm-.*", container="taskmanager"}[5m])) by (pod)/sum(container_spec_cpu_quota{pod=~"job-$deploymentId-tm-.*", container="taskmanager"}/ container_spec_cpu_period{pod=~"job-$deploymentId-tm-.*", container="taskmanager"}) by (pod)
注
$deploymentId は、展開されたジョブの UUID 値です。 CLI 、ポータル、およびパイプライン API では、ジョブ ID とも呼ばれます。
sum(rate(container_cpu_usage_seconds_total{pod=~"job-$deploymentId-jm-.*", container="jobmanager"}[5m])) by (pod)/sum(container_spec_cpu_quota{pod=~"job-$deploymentId-jm-.*", container="jobmanager"}/ container_spec_cpu_period{pod=~"job-$deploymentId-jm-.*", container="jobmanager"}) by (pod)
以下の Grafana ホームのスクリーンショットは、 taskmanager の CPU 使用量の例を示しています
A : Flink パイプラインバージョンの一時停止またはアップグレード操作では、セーブポイントが取得され、パイプラインバージョンが中断した場所から再起動されます。 まれに、タイムアウトのためにセーブポイントを取得するプロセスが失敗することがあります。 このような場合 Savepoint took too long は、エラーメッセージが表示されます。 上の図に示されている例は、 2 分または 120,000 ミリ秒でタイムアウトしました。
A : パイプライン バージョンのランタイム設定の一部として提供されているプロパティは、という名前のファイルのクラスパスで利用できます application.properties。 ストリーム ランタイムでは、Uber jar がapplication.properties を含んでいる場合、ランタイムによって提供された application.properties を超えるクラスパスで優先されます。 この問題は application.properties 、ローカル開発中にファイルが存在し、誤ってシェイディングされた jar に含まれている場合に発生する可能性があります。 解決 application.properties 策は、 uber jar にを含めることを除外することです。
<filter><artifact>*:*</artifact><excludes><!-- This is to make sure that shaded jar doesn't have an application.properties --><exclude>application.properties</exclude></excludes></filter>