Bigtable에서 Dataflow로 읽기

Bigtable에서 Dataflow로 데이터를 읽으려면 Apache Beam Bigtable I/O 커넥터를 사용합니다.

동시 로드

동시 로드는 Bigtable 클러스터의 노드 수에 따라 제어됩니다. 부하 분산의 일부로 키 범위가 노드 간에 이동할 수 있지만, 각 노드는 하나 이상의 키 범위를 관리합니다. 자세한 내용은 Bigtable 문서의 읽기 및 성능을 참조하세요.

인스턴스 클러스터의 노드 수에 따라 비용이 청구됩니다. Bigtable 가격 책정을 참조하세요.

성능

다음 표에서는 Bigtable 읽기 작업의 성능 측정항목을 보여줍니다. 워크로드는 자바용 Apache Beam SDK 2.48.0을 사용해 하나의 e2-standard2 작업자에서 실행되었습니다. Runner v2를 사용하지 않았습니다.

레코드 1억 건 | 1KB | 열 1개 처리량(바이트) 처리량(요소)
Read 180MBps 초당 요소 170,000개

이러한 측정항목은 간단한 일괄 파이프라인을 기반으로 합니다. 이는 I/O 커넥터 간 성능을 비교하기 위한 것이며 실제 파이프라인을 나타내지는 않습니다. Dataflow 파이프라인 성능은 복잡하며 VM 유형, 처리 중인 데이터, 외부 소스 및 싱크의 성능, 사용자 코드와 상관관계가 있습니다. 측정항목은 Java SDK 실행을 기반으로 하며 다른 언어 SDK의 성능 특성을 나타내지 않습니다. 자세한 내용은 Beam IO 성능을 참조하세요.

권장사항

  • 새 파이프라인의 경우 CloudBigtableIO이 아닌 BigtableIO 커넥터를 사용하세요.

  • 파이프라인 유형마다 별도의 앱 프로필을 만듭니다. 앱 프로필을 사용하면 지원과 사용량 추적을 위해 파이프라인 간에 트래픽을 구분하는 데 더 효과적인 측정항목을 사용할 수 있습니다.

  • Bigtable 노드를 모니터링합니다. 성능 병목 현상이 발생하는 경우 Bigtable 내에서 CPU 사용률과 같은 리소스가 제한되어 있는지 확인하세요. 자세한 내용은 Monitoring을 참조하세요.

  • 일반적으로 기본 제한 시간은 대부분의 파이프라인에 조정됩니다. 스트리밍 파이프라인에서 Bigtable 읽기가 중단되면 withAttemptTimeout을 호출하여 시도 제한 시간을 조정합니다.

  • Bigtable 자동 확장을 사용 설정하거나 Dataflow 작업의 크기에 따라 확장되도록 Bigtable 클러스터의 크기를 조정합니다.

  • Bigtable 클러스터에서 부하를 제한하려면 Dataflow 작업에서 maxNumWorkers를 설정하는 것이 좋습니다.

  • 셔플 전에 Bigtable 요소에서 처리가 상당량 완료되면 Bigtable에 대한 호출 시간이 초과될 수 있습니다. 이 경우 withMaxBufferElementCount를 호출하여 요소를 버퍼링할 수 있습니다. 이 방법은 읽기 작업을 스트리밍에서 페이지로 나누기로 변환하므로 문제가 방지됩니다.

  • 스트리밍 및 일괄 파이프라인 모두에 단일 Bigtable 클러스터를 사용하고 있으며 Bigtable 측 성능이 저하되는 경우 클러스터에 복제를 설정하는 것이 좋습니다. 그런 후 여러 다른 복제본에서 읽도록 배치 및 스트리밍 파이프라인을 구분합니다. 자세한 내용은 복제 개요를 참조하세요.

다음 단계