翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Apache Spark は、さまざまな方法で設定できる汎用コンピューティングプラットフォームです。Spark と Spark Cassandra Connector を Amazon Keyspaces との統合を設定するには、以下のセクションで説明する最小設定から始め、後でワークロードに応じてそれらを拡張することをお勧めします。
-
8 MB 未満のサイズの Spark パーティションを作成します。
Spark では、パーティションは並列で実行可能なデータのアトミックチャンクを表します。Spark Cassandra コネクタで Amazon Keyspaces にデータを書き込むとき、Spark パーティションが小さいほど、タスクで書き込まれるレコードの量は少なくなります。Spark タスクで複数のエラーが発生した場合、指定された回数の再試行回数を過ぎると失敗します。大きなタスクのやり直しや、大量のデータの再処理を防ぐため、Spark パーティションのサイズは小さく設定してください。
-
実行者 1 人あたりの同時書き込み回数を少なく設定して、再試行回数を多く設定してください。
Amazon Keyspaces は、オペレーションがタイムアウトになると、キャパシティ不足のエラーを Cassandra ドライバーに返します。Spark Cassandra コネクタは
MultipleRetryPolicy
でリクエストの透過的な再試行を試みるため、設定されているタイムアウト時間を変更しても、キャパシティ不足によるタイムアウトには対処できません。再試行によるドライバーの接続プールの圧迫を防ぐには、エグゼキューターあたりの同時書き込み回数を少なく設定して、再試行回数を多く設定してください。以下のコードスニペットに、この例を示します。spark.cassandra.query.retry.count = 500 spark.cassandra.output.concurrent.writes = 3
-
総スループットを細分化し、複数の Cassandra セッションに分散させます。
-
Cassandra Spark コネクタは、Spark エクゼキューターごとに 1 つのセッションを作成します。このセッションは、必要なスループットと必要な接続数を決定するスケールの単位と考えてください。
-
エクゼキューター 1 人あたりのコア数とタスク 1 つあたりのコア数を定義するときは、最初は少ない数から始めて、必要に応じて増やしてください。
-
一時的なエラーが発生した場合に処理できるように Spark タスク障害を設定します。アプリケーションのトラフィック特性と要件が理解できたら、
spark.task.maxFailures
を境界値に設定することをおすすめします。 -
たとえば、以下の設定では、エクゼキューター、セッションごとに 2 つの同時タスクを処理できます。
spark.executor.instances = configurable -> number of executors for the session. spark.executor.cores = 2 -> Number of cores per executor. spark.task.cpus = 1 -> Number of cores per task. spark.task.maxFailures = -1
-
-
バッチ処理をオフにします。
-
ランダムアクセスのパターンを改善するために、バッチ処理をオフにすることをお勧めします。以下のコードスニペットに、この例を示します。
spark.cassandra.output.batch.size.rows = 1 (Default = None) spark.cassandra.output.batch.grouping.key = none (Default = Partition) spark.cassandra.output.batch.grouping.buffer.size = 100 (Default = 1000)
-
-
SPARK_LOCAL_DIRS
は、十分なキャパシティがある高速のローカルディスクに設定してください。-
デフォルトで、Spark はマップ出力ファイルと耐障害性のある分散データセット (RDD) を
/tmp
フォルダに保存します。 Spark ホストの設定によっては、デバイススタイルエラーのための空きキャパシティがなくなるおそれがあります。 -
SPARK_LOCAL_DIRS
環境変数を/example/spark-dir
というディレクトリーに設定するには、以下のコマンドを使用できます。export SPARK_LOCAL_DIRS=/example/spark-dir
-