4단계: cqlsh COPY FROM 설정 구성 - Amazon Keyspaces(Apache Cassandra용)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

4단계: cqlsh COPY FROM 설정 구성

이 섹션에서는 에 대한 cqlsh COPY FROM 매개변수 값을 결정하는 방법을 간략하게 설명합니다. cqlsh COPY FROM명령은 이전에 준비한 CSV 파일을 읽고 CQL을 사용하여 Amazon Keyspaces에 데이터를 삽입합니다. 이 명령은 행을 분할하고 작업자 집합 간에 INSERT 작업을 분배합니다. 각 워커는 Amazon Keyspaces와 연결을 설정하고 이 채널을 통해 INSERT 요청을 보냅니다.

cqlsh COPY명령에는 작업자 간에 작업을 균등하게 분배하기 위한 내부 로직이 없습니다. 그러나 작업이 균등하게 분배되도록 수동으로 구성할 수 있습니다. 먼저 다음과 같은 주요 충돌 파라미터를 검토하세요.

  • DELIMITER — 쉼표가 아닌 구분 기호를 사용한 경우 이 매개 변수를 설정할 수 있습니다. 기본값은 쉼표입니다.

  • INGESTRATE — 초당 처리를 cqlsh COPY FROM 시도하는 대상 행 수입니다. 설정하지 않은 경우 기본값은 100,000입니다.

  • NUMPROCESSIES — Clash에서 태스크에 대해 생성하는 하위 작업자 프로세스의 수입니다. COPY FROM 이 설정의 최대값은 16이며, 기본값은num_cores - 1, 여기서 num_cores 는 cqlsh를 실행하는 호스트의 처리 코어 수입니다.

  • MAXBATCHSIZE — 배치 크기는 단일 배치에서 대상 테이블에 삽입되는 최대 행 수를 결정합니다. 설정하지 않으면 calsh는 삽입된 20개 행의 배치를 사용합니다.

  • CHUNKSIZE — 하위 작업자에게 전달되는 작업 단위의 크기입니다. 기본적으로 5,000으로 설정됩니다.

  • 최대 시도 — 실패한 작업자 청크를 다시 시도하는 최대 횟수입니다. 최대 시도 횟수에 도달하면 실패한 레코드가 새 CSV 파일에 기록되며 나중에 오류를 조사한 후 다시 실행할 수 있습니다.

대상 테이블에 프로비저닝한 WCU 수를 INGESTRATE 기준으로 설정합니다. INGESTRATEcqlsh COPY FROM명령의 범위는 한계가 아니라 목표 평균입니다. 즉, 설정한 수치 이상으로 폭발할 수 있으며 종종 그렇습니다. 버스트를 허용하고 데이터 로드 요청을 처리하기에 충분한 용량이 확보되도록 INGESTRATE 하려면 테이블 쓰기 용량의 90% 로 설정하십시오.

INGESTRATE = WCUs * .90

그런 다음 NUMPROCESSES 파라미터를 시스템의 코어 수보다 1 적은 값으로 설정합니다. 다음 코드를 실행하여 시스템의 코어 수를 확인할 수 있습니다.

python -c "import multiprocessing; print(multiprocessing.cpu_count())"

이 자습서에서는 다음 값을 사용합니다.

NUMPROCESSES = 4

각 프로세스는 워커를 생성하고, 각 워커는 Amazon Keyspaces에 대한 연결을 설정합니다. Amazon Keyspaces 모든 연결에서 초당 최대 3,000개의 CQL 요청을 지원할 수 있습니다. 즉, 각 작업자가 초당 3,000개 미만의 요청을 처리하는지 확인해야 합니다.

INGESTRATE마찬가지로 작업자는 설정한 숫자 이상으로 급증하는 경우가 많으며 클럭 초의 제한을 받지 않습니다. 따라서 버스트를 고려하려면 각 작업자가 초당 2,500개의 요청을 처리하도록 Cqlsh 파라미터를 설정해야 합니다. 작업자에게 분배되는 작업량을 계산하려면 다음 지침을 사용하십시오.

  • INGESTRATE로 나눕니다NUMPROCESSES.

  • INGESTRATE/NUMPROCESSES> 2,500인 경우 값을 낮추면 이 공식이 참이 됩니다. INGESTRATE

INGESTRATE / NUMPROCESSES <= 2,500

샘플 데이터의 업로드를 최적화하도록 설정을 구성하기 전에 기본 설정을 살펴보고 cqlsh 기본 설정을 사용하는 것이 데이터 업로드 프로세스에 미치는 영향을 살펴보겠습니다. CHUNKSIZEcqlsh COPY FROM 사용하여 작업자에게 배포할 작업 청크 (INSERT명령문) 를 생성하기 때문에 작업이 자동으로 균등하게 분배되지 않습니다. 일부 작업자는 INGESTRATE 설정에 따라 가만히 앉아 있을 수 있습니다.

작업자 간에 작업을 균등하게 분배하고 각 작업자가 초당 2,500개의 최적 요청 속도로 유지하려면 입력 매개 변수를 INGESTRATE 변경하여 및 를 CHUNKSIZE 설정해야 합니다. MAXBATCHSIZE 데이터 로드 중에 네트워크 트래픽 사용률을 최적화하려면 최대값인 30에 가까운 값을 선택합니다. MAXBATCHSIZE 100과 CHUNKSIZE MAXBATCHSIZE 25로 변경하면 10,000개의 행이 네 명의 작업자 사이에 균등하게 분산됩니다 (10,000/ 2500 = 4).

다음 코드 예는 이 방법을 보여줍니다.

INGESTRATE = 10,000 NUMPROCESSES = 4 CHUNKSIZE = 100 MAXBATCHSIZE. = 25 Work Distribution: Connection 1 / Worker 1 : 2,500 Requests per second Connection 2 / Worker 2 : 2,500 Requests per second Connection 3 / Worker 3 : 2,500 Requests per second Connection 4 / Worker 4 : 2,500 Requests per second

요약하면 매개 변수를 설정할 cqlsh COPY FROM 때 다음 공식을 사용하십시오.

  • 통합 = 쓰기 용량_단위 * .90

  • 넘프로세스 = num_cores -1 (기본값)

  • INGESTRATE/ NUMPROCESSTES = 2,500 (이것은 정확한 진술이어야 합니다.)

  • 최대 배치 크기 = 30 (기본값은 20입니다. 아마존 Keyspaces 최대 30개까지 배치를 허용합니다.)

  • 청크 크기 = (인제스트레이트/프로세스 수)/최대 배치 크기

이제 NUMPROCESSES INGESTRATECHUNKSIZE, 및 계산을 마쳤으니 데이터를 로드할 준비가 되었습니다.