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

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

4단계: 구성cqlsh COPY FROM설정

이 단원에서는 의 파라미터 값을 결정하는 방법을 간략하게 설명합니다.cqlsh COPY FROM. 이cqlsh COPY FROM명령은 이전에 준비한 CSV 파일을 읽고 CQL을 사용하여 Amazon 키스페이스에 데이터를 삽입합니다. 이 명령은 행을 분할하고INSERT일련의 근로자 간의 작업. 각 작업자는 Amazon 키스페이스와 연결을 설정하고INSERT이 채널을 통한 요청.

cqlsh COPY명령에는 워커 간에 작업을 균등하게 분배하는 내부 로직이 없습니다. 그러나 작업이 균등하게 배포되도록 수동으로 구성할 수 있습니다. 먼저 다음과 같은 주요 cqlsh 매개 변수를 검토합니다.

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

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

  • NUM프로세스— cqlsh가 생성하는 하위 작업자 프로세스의 수COPY FROM작업. 이 설정의 최대값은 16이며 기본값은num_cores - 1, 여기서,num_corescqlsh를 실행하는 호스트의 프로세싱 코어 수입니다.

  • 최대 배치 크기— 배치 크기는 단일 배치에서 대상 테이블에 삽입되는 최대 행 수를 결정합니다. 설정되지 않은 경우 cqlsh는 삽입된 20개의 행을 일괄 처리합니다.

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

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

SetINGESTRATE대상 대상 테이블에 프로비저닝한 WCU의 수를 기반으로 합니다. 이INGESTRATEcqlsh COPY FROM명령은 한계가 아니라 목표 평균입니다. 즉, 설정한 숫자 이상으로 버스트될 수 있으며 종종 발생합니다. 버스트를 허용하고 데이터 로드 요청을 처리할 수 있는 충분한 용량이 있는지 확인하려면INGESTRATE테이블 쓰기 용량의 90% 까지

INGESTRATE = WCUs * .90

다음으로NUMPROCESSES매개 변수가 시스템의 코어 수보다 하나 작아야 합니다. 시스템의 코어 수를 확인하려면 다음 코드를 실행할 수 있습니다.

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

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

NUMPROCESSES = 4

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

와 마찬가지로INGESTRATE작업자는 종종 설정 한 숫자 이상으로 버스트되며 시계 초로 제한되지 않습니다. 따라서 버스트를 고려하려면 각 워커를 대상으로 초당 2,500개의 요청을 처리하도록 cqlsh 파라미터를 설정합니다. 작업자에게 분배된 작업량을 계산하려면 다음 지침을 따르십시오.

  • DivideINGESTRATE에 의해NUMPROCESSES.

  • 다음의 경우,INGESTRATE/NUMPROCESSES 2,500개 이상,INGESTRATE이 공식을 사실로 만들기 위해서입니다.

INGESTRATE / NUMPROCESSES <= 2,500

샘플 데이터의 업로드를 최적화하기 위한 설정을 구성하기 전에cqlsh기본 설정을 사용하여 데이터 업로드 프로세스에 미치는 영향을 확인합니다. 왜냐하면cqlsh COPY FROM을 사용합니다.CHUNKSIZE작업 청크를 만들 수 있습니다 (INSERT진술) 을 근로자에게 배포하면 작업이 자동으로 균등하게 분배되지 않습니다. 일부 작업자는 다음에 따라 유휴 상태일 수 있습니다.INGESTRATE설정.

작업자 간에 작업을 균등하게 분배하고 각 작업자에게 최적의 초당 2,500개 요청 속도를 유지하려면 다음을 설정해야 합니다.CHUNKSIZE,MAXBATCHSIZE, 및INGESTRATE입력 파라미터를 변경하여 데이터 로드 중에 네트워크 트래픽 사용률을 최적화하려면 다음 값을 선택합니다.MAXBATCHSIZE이는 최대값인 30에 가깝습니다. 를 로 변경CHUNKSIZE100~100MAXBATCHSIZE25로 설정하면 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프로세스= num_cores -1 (기본값)

  • 통합/NUM프로세스= 2,500 (실제 설명이어야 합니다.)

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

  • 청크 사이즈= (수집률/프로세스 수) /최대 배치 크기

이제 계산을 마쳤으니NUMPROCESSES,INGESTRATE, 및CHUNKSIZE를 선택하면 데이터를 로드할 준비가 됩니다.