기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Apache Spark는 다양한 방식으로 구성할 수 있는 범용 컴퓨팅 플랫폼입니다. Amazon Keyspaces와 통합되도록 Spark 및 Spark Cassandra 커넥터를 구성하려면 다음 섹션에 설명된 최소 구성 설정으로 시작한 다음 나중에 워크로드에 맞게 크기를 늘리는 것이 좋습니다.
-
Spark 파티션 크기를 8MB보다 작게 생성합니다.
Spark에서 파티션은 병렬로 실행할 수 있는 원자 데이터 청크를 나타냅니다. Spark Cassandra 커넥터를 사용하여 Amazon Keyspaces에 데이터를 쓰는 경우 Spark 파티션이 작을수록 작업에서 기록할 레코드 양도 줄어듭니다. Spark 작업에서 오류가 여러 번 발생하는 경우 지정된 재시도 횟수를 모두 사용한 후에는 작업이 실패합니다. 큰 작업을 재생하고 많은 데이터를 재처리하지 않으려면 Spark 파티션의 크기를 작게 유지합니다.
-
재시도 횟수가 많고 실행자당 동시 쓰기 횟수를 적게 사용합니다.
Amazon Keyspaces는 작업 제한 시간이 초과되면 용량 부족 오류를 Cassandra 드라이버에 반환합니다. Spark Cassandra 커넥터가
MultipleRetryPolicy
를 사용하여 요청을 투명하게 재시도하기 때문에 구성된 제한 시간 기간을 변경하여 용량 부족으로 인한 시간 초과를 해결할 수 없습니다. 재시도 횟수가 드라이버의 연결 풀에 과부하를 주지 않도록 하려면 실행자당 동시 쓰기 횟수를 줄이고 재시도 횟수가 많아야 합니다. 다음 코드 조각은 이에 대한 예입니다.spark.cassandra.query.retry.count = 500 spark.cassandra.output.concurrent.writes = 3
-
총 처리량을 세분화하여 여러 Cassandra 세션에 분배합니다.
-
Cassandra Spark 커넥터는 각 Spark 실행기에 대해 하나의 세션을 생성합니다. 이 세션을 필요한 처리량과 필요한 연결 수를 결정하는 규모의 단위라고 생각하면 됩니다.
-
실행자당 코어 수와 작업당 코어 수를 정의할 때는 낮은 수준에서 시작하여 필요에 따라 늘립니다.
-
일시적 오류가 발생하는 경우에도 처리할 수 있도록 Spark 작업 실패를 설정합니다. 애플리케이션의 트래픽 특성 및 요구 사항을 숙지한 후에는
spark.task.maxFailures
를 제한된 값으로 설정하는 것이 좋습니다. -
예를 들어 다음 구성에서는 실행자당, 세션별로 두 개의 동시 작업을 처리할 수 있습니다.
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
-