Event Hubs에서 Azure Synapse Data Explorer로 데이터 수집
Azure Synapse Data Explorer는 로그 및 원격 분석 데이터를 위한 빠르고 확장성이 뛰어난 데이터 검색 서비스입니다. Azure Synapse Data Explorer는 Event Hubs, IoT Hubs 및 Blob 컨테이너에 기록된 Blob에서 수집(데이터 로딩)을 제공합니다.
Azure Synapse Data Explorer에서는 빅 데이터 스트리밍 플랫폼이자 이벤트 수집 서비스인 Event Hubs에서 수집(데이터 로딩) 기능을 제공합니다. Event Hubs에서는 초당 수백만 개의 이벤트를 거의 실시간으로 처리할 수 있습니다. 이 문서에서는 Event Hubs를 만들고, Azure Synapse 데이터 탐색기에서 연결하고, 시스템을 통한 데이터 흐름을 확인합니다.
필수 구성 요소
Azure 구독 평가판 Azure 계정을 만듭니다.
Synapse Studio 또는 Azure Portal을 사용하여 Data Explorer 풀 만들기
Data Explorer 데이터베이스를 만듭니다.
Synapse Studio의 왼쪽 창에서 데이터를 선택합니다.
+(새 리소스 추가) >Data Explorer 풀을 선택하고 다음 정보를 사용합니다.
설정 제안 값 설명 풀 이름 contosodataexplorer 사용할 Data Explorer 풀의 이름 이름 TestDatabase 데이터베이스 이름은 클러스터 내에서 고유해야 합니다. 기본 보존 기간 365 데이터를 쿼리에 사용할 수 있도록 보장되는 시간 범위(일)입니다. 시간 범위는 데이터가 수집된 시간부터 측정됩니다. 기본 캐시 기간 31 자주 쿼리되는 데이터를 장기 스토리지가 아닌 SSD 스토리지 또는 RAM에 보관할 수 있는 시간 범위(일)입니다. 만들기를 선택하여 데이터베이스를 만듭니다. 만들기에는 일반적으로 채 1분이 소요되지 않습니다.
Event Hubs에서 데이터를 보낼 대상 테이블 만들기
Synapse Studio의 왼쪽 창에서 개발을 선택합니다.
KQL 스크립트에서 +(새 리소스 추가) >KQL 스크립트를 선택합니다. 오른쪽 창에서 스크립트 이름을 지정할 수 있습니다.
연결 대상 메뉴에서 contosodataexplorer를 선택합니다.
데이터베이스 사용 메뉴에서 TestDatabase를 선택합니다.
다음 명령을 붙여넣고 실행을 선택하여 테이블을 만듭니다.
.create table TestTable (TimeStamp: datetime, Name: string, Metric: int, Source:string)
팁
테이블이 성공적으로 만들어졌는지 확인합니다. 왼쪽 창에서 데이터를 선택하고 contosodataexplorer 추가 메뉴를 선택한 다음, 새로 고침을 선택합니다. contosodataexplorer 아래에서 테이블을 확장하고 TestTable 테이블이 목록에 표시되는지 확인합니다.
다음 명령을 창에 복사하고, 실행을 선택하여 들어오는 JSON 데이터를 테이블(TestTable)의 열 이름과 데이터 형식에 매핑합니다.
.create table TestTable ingestion json mapping 'TestMapping' '[{"column":"TimeStamp", "Properties": {"Path": "$.timeStamp"}},{"column":"Name", "Properties": {"Path":"$.name"}} ,{"column":"Metric", "Properties": {"Path":"$.metric"}}, {"column":"Source", "Properties": {"Path":"$.source"}}]'
데이터 연결에 사용자가 할당한 관리 ID 또는 시스템이 할당한 관리 ID를 사용하는 것이 좋습니다(선택 사항).
데이터를 생성하고 이벤트 허브로 보내는 샘플 앱이 있어야 합니다. 샘플 앱을 시스템에 다운로드하세요.
샘플 앱을 실행하기 위한 Visual Studio 2019.
Azure Portal에 로그인
Azure Portal에 로그인합니다.
이벤트 허브 만들기
Azure Portal에서 Azure Resource Manager 템플릿을 사용하여 이벤트 허브를 만듭니다.
이벤트 허브를 만들려면 다음 단추를 사용하여 배포를 시작합니다. 마우스 오른쪽 단추로 클릭하고 새 창에서 열기를 선택하면 이 문서의 나머지 단계를 수행할 수 있습니다.
Azure에 배포 단추를 선택하면 Azure Portal로 이동합니다.
이벤트 허브를 만들려는 구독을 선택하고 이름이 test-hub-rg인 리소스 그룹을 만듭니다.
다음 정보로 양식을 작성합니다.
다음 표에 나와 있지 않은 모든 설정에는 기본값을 사용하세요.
설정 제안 값 필드 설명 Subscription 내 구독 Event Hubs에 사용할 Azure 구독을 선택합니다. Resource group test-hub-rg 새 리소스 그룹을 만듭니다. 위치 미국 서부 이 문서에서는 미국 서부를 선택합니다. 프로덕션 시스템의 경우 요구에 가장 적합한 지역을 선택합니다. 최상의 성능을 위해 Azure Synapse Data Explorer 클러스터와 동일한 위치에 Event Hubs 네임스페이스를 만듭니다(처리량이 높은 Event Hubs 네임스페이스에 가장 중요함). 네임스페이스 이름 고유한 네임스페이스 이름 네임스페이스를 식별하는 고유한 이름을 선택합니다. 예를 들어 mytestnamespace를 선택합니다. 입력한 이름에 도메인 이름 servicebus.windows.net이 추가됩니다. 이 이름에는 문자, 숫자 및 하이픈만 포함할 수 있습니다. 이름은 문자로 시작하고 문자나 숫자로 끝나야 합니다. 값의 길이는 6자에서 50자 사이여야 합니다. Event Hubs 이름 test-hub Event Hubs는 고유한 범위 지정 컨테이너를 제공하는 네임스페이스 아래에 있습니다. Event Hubs 이름은 네임스페이스 내에서 고유해야 합니다. 소비자 그룹 이름 test-group 소비자 그룹을 사용하면 각기 별도의 이벤트 스트림 보기가 표시되는 여러 애플리케이션을 사용할 수 있습니다. 검토 + 만들기를 선택합니다.
만들어진 리소스의 요약을 검토합니다. 만들기를 선택하면 구독에서 리소스 만들기를 승인하게 됩니다.
프로비전 프로세스를 모니터링하려면 도구 모음에서 알림을 선택합니다. 배포가 정상적으로 완료되려면 몇 분 정도 걸릴 수 있지만 이제 다음 단계를 진행해도 됩니다.
인증 고려 사항
ID 유형에 따라 Event Hubs로 인증하는 데 사용하는 경우 다른 구성이 필요할 수 있습니다.
사용자가 할당한 관리 ID를 사용하여 Event Hubs로 인증하는 경우 Event Hubs >네트워킹으로 이동한 다음 액세스 허용에서 모든 네트워크를 선택하고 변경 내용을 저장합니다.
시스템 할당 관리 ID를 사용하여 Event Hubs로 인증하는 경우 Event Hubs 네트워킹으로 이동한 다음, 모든 네트워크에서 액세스를 허용하거나 액세스 허용에서 선택한 네트워크를 선택하고 신뢰할 수 있는 Microsoft 서비스 허용을 선택하여 이 방화벽을 우회하고 변경 내용을 저장합니다.>
Event Hubs에 연결
이제 데이터 탐색기 풀에서 Event Hubs에 연결합니다. 이 연결이 있으면 Event Hubs로 흐르는 데이터가 이 문서의 앞부분에서 만든 테스트 테이블로 스트리밍됩니다.
도구 모음에서 알림을 선택하여 Event Hubs 배포가 성공했는지 확인합니다 .
사용자가 만든 Data Explorer 풀 아래에서 데이터베이스>TestDatabase를 선택합니다.
데이터 연결 및 데이터 연결 추가를 선택합니다.
데이터 연결 만들기(미리 보기)
다음 정보로 양식을 작성한 다음, 만들기를 선택합니다.
설정 | 제안 값 | 필드 설명 |
---|---|---|
데이터 연결 이름 | test-hub-connection | Azure Synapse Data Explorer에서 만들 연결의 이름입니다. |
Subscription | Event Hubs 리소스가 있는 구독 ID입니다. 이 필드는 자동으로 채워집니다. | |
Event Hubs 네임스페이스 | 고유한 네임스페이스 이름 | 앞에서 선택한 네임스페이스를 식별하는 이름입니다. |
Event Hubs | test-hub | 만든 Event Hubs입니다. |
소비자 그룹 | test-group | 만든 Event Hubs에 정의된 소비자 그룹입니다. |
이벤트 시스템 속성 | 관련 속성 선택 | Event Hubs 시스템 속성입니다. 이벤트 메시지마다 여러 레코드가 있는 경우 시스템 속성이 첫 번째 레코드에 추가됩니다. 시스템 속성을 추가할 때 선택한 속성을 포함하도록 테이블 스키마를 생성하거나 업데이트하고 매핑합니다. |
압축 | 없음 | Event Hubs 메시지 페이로드의 압축 유형입니다. 지원되는 압축 형식: ‘없음, Gzip’. |
관리 ID | 시스템 할당 | Event Hubs에서 읽기 위해 데이터 탐색기 클러스터에서 사용하는 관리 ID입니다. 참고: 데이터 연결이 생성될 때: - 시스템 할당 ID가 없으면 자동으로 만들어집니다. - 관리 ID는 Azure Event Hubs 데이터 수신기 역할이 자동으로 할당되며 Data Explorer 클러스터에 추가됩니다. 역할이 할당되었고 ID가 클러스터에 추가되었는지 확인하는 것이 좋습니다. |
대상 테이블
수집된 데이터를 라우팅하기 위한 옵션으로는 고정 라우팅과 동적 라우팅이라는 두 가지 옵션이 있습니다. 이 문서에서는 테이블 이름, 데이터 형식 및 매핑을 기본값으로 지정하는 고정 라우팅을 사용합니다. Event Hubs 메시지에 데이터 라우팅 정보가 포함된 경우 이 라우팅 정보는 기본 설정을 재정의합니다.
다음 라우팅 설정을 입력합니다.
설정 제안 값 필드 설명 테이블 이름 TestTable TestDatabase에 만든 테이블입니다. 데이터 형식 JSON 지원되는 형식은 Avro, CSV, JSON, MULTILINE JSON, ORC, PARQUET, PSV, SCSV, SOHSV, TSV, TXT, TSVE, APACHEAVRO 및 W3CLOG입니다. 매핑 TestMapping 들어오는 데이터를 TestTable의 열 이름 및 데이터 형식에 매핑하는 TestDatabase에서 만든 매핑입니다. JSON, MULTILINE JSON 및 AVRO에는 필수이고 다른 형식에는 선택 사항입니다. 참고 항목
- 모든 기본 라우팅 설정을 지정할 필요는 없습니다. 부분 설정도 허용됩니다.
- 데이터 연결을 만든 후에 큐에 넣은 이벤트만 수집됩니다.
만들기를 선택합니다.
이벤트 시스템 속성 매핑
참고 항목
- 시스템 속성은
json
및 테이블 형식(csv
,tsv
등)에 대해 지원되며 압축된 데이터에서는 지원되지 않습니다. 지원되지 않는 형식을 사용하는 경우 데이터는 계속 수집되지만, 속성은 무시됩니다. - 테이블 형식 데이터의 경우 시스템 속성은 단일 레코드 이벤트 메시지에 대해서만 지원됩니다.
- JSON 데이터의 경우 시스템 속성은 여러 레코드 이벤트 메시지에 대해서도 지원됩니다. 이러한 경우 시스템 속성은 이벤트 메시지의 첫 번째 레코드에만 추가됩니다.
csv
매핑의 경우 속성은 시스템 속성 테이블에 나열된 순서대로 레코드 시작 부분에 추가됩니다.json
매핑의 경우 속성은 시스템 속성 테이블의 속성 이름에 따라 추가됩니다.
테이블의 데이터 원본 섹션에서 이벤트 시스템 속성을 선택한 경우 테이블 스키마 및 매핑에 시스템 속성을 포함해야 합니다.
연결 문자열 복사
필수 구성 요소에 나열된 샘플 앱을 실행하는 경우 Event Hubs 네임스페이스에 대한 연결 문자열 필요합니다.
만든 Event Hubs 네임스페이스 아래에서 공유 액세스 정책을 선택한 다음 RootManageSharedAccessKey를 선택합니다.
연결 문자열 - 기본 키를 복사합니다. 다음 섹션에 붙여넣습니다.
샘플 데이터 생성
다운로드한 샘플 앱을 사용하여 데이터를 생성합니다.
Warning
이 샘플에서는 예제의 단순성을 위해 연결 문자열 인증을 사용하여 Event Hubs에 연결합니다. 그러나 스크립트에 연결 문자열 하드 코딩하려면 애플리케이션에 대한 신뢰 수준이 매우 높고 보안 위험이 수반됩니다.
장기적이고 안전한 솔루션의 경우 다음 옵션 중 하나를 사용합니다.
- 암호 없는 인증
- Azure Key Vault에 연결 문자열 저장하고 이 메서드를 사용하여 코드에서 검색합니다.
Visual Studio에서 샘플 앱 솔루션을 엽니다.
program.cs 파일에서 상수의 이름을 Event Hubs로 업데이트
eventHubName
하고 Event Hubs 네임스페이스에서 복사한 연결 문자열 상수로 업데이트connectionString
합니다.const string eventHubName = "test-hub"; // Copy the connection string ("Connection string-primary key") from your Event Hub namespace. const string connectionString = @"<YourConnectionString>";
앱을 빌드하고 실행합니다. 앱은 Event Hubs에 메시지를 보내고 10초마다 상태를 출력합니다.
앱에서 몇 가지 메시지를 보낸 후에는 Event Hubs 및 테스트 테이블로의 데이터 흐름을 검토하는 다음 단계로 이동합니다.
데이터 흐름 검토
이제 앱에서 데이터를 생성하면 Event Hubs에서 클러스터의 테이블로 해당 데이터의 흐름을 볼 수 있습니다.
Azure Portal의 Event Hubs 아래에서 앱이 실행되는 동안 활동이 급증합니다.
현재까지 데이터베이스로 전송된 메시지의 수를 확인하려면 테스트 데이터베이스에서 다음 쿼리를 실행합니다.
TestTable | count
메시지 내용을 확인하려면 다음 쿼리를 실행합니다.
TestTable
결과 집합은 다음 이미지와 같이 표시됩니다.
참고 항목
- Azure Synapse Data Explorer에는 데이터 수집을 위한 집계(일괄 처리) 정책이 있으며, 이는 수집 프로세스를 최적화하도록 설계되었습니다. 기본 일괄 처리 정책은 일괄 처리에 대해 최대 지연 시간 5분, 총 크기 1G 또는 1000개의 Blob 중 하나가 충족되면 일괄 처리를 봉인하도록 구성됩니다. 따라서 대기 시간이 발생할 수 있습니다. 자세한 내용은 일괄 처리 정책을 참조하세요.
- Event Hub 수집에는 10초 또는 1MB의 Event Hub 응답 시간이 포함됩니다.
- 응답 시간 지연을 줄이려면 스트리밍을 지원하도록 테이블을 구성합니다. 스트리밍 정책을 참조하세요.
리소스 정리
Event Hubs를 다시 사용하지 않으려면 비용이 발생하지 않도록 test-hub-rg를 정리합니다.
Azure Portal에서 맨 왼쪽에 있는 리소스 그룹을 선택한 다음, 만든 리소스 그룹을 선택합니다.
왼쪽 메뉴가 축소된 경우
을 선택하여 확장합니다.
test-resource-group 아래에서 리소스 그룹 삭제를 선택합니다.
새 창에서 삭제할 리소스 그룹의 이름(test-hub-rg)을 입력하고 삭제를 선택합니다.