드디어 이전 블로그 포스트 'Unified Data Platform - SQL 2019'를 이어받아 새로운 시리즈를 시작하게 되어 기쁩니다.
이 시리즈에서는 PolyBase®를 통해 데이터 가상화를 구현하는 방법을 깊이 있게 다룹니다. 이번 글에서는 전체적인 소개와 데모를 위한 사전 준비 사항을 살펴보고, 2부에서 실제 데모를 진행합니다.
복습
이전 포스트에서 다룬 핵심 내용을 간단히 되짚어 보겠습니다.
- SQL Server®가 DB 엔진에서 통합 데이터 플랫폼(Unified Data Platform)으로 발전한 과정
- SQL 2019가 제공하는 통합 데이터 플랫폼:
- OLTP를 위한 SQL DB 엔진
- PolyBase를 통한 데이터 가상화
- 컬럼 스토어(Columnar Store)를 통한 데이터 마트
- HDFS를 통한 데이터 레이크
- Apache Spark를 통한 빅데이터, 머신러닝, 스트리밍
- Azure® Data Studio(ADS)를 활용한 관리 및 모니터링
소개
데이터가 어디에나 존재하는 환경에서 우리는 데이터를 처리하기 위해 다른 위치로 이동시키거나 복사해야 하는 문제에 끊임없이 직면합니다. 소규모 데이터 세트라면 큰 어려움이 없지만, 데이터 크기가 계속 증가하면 상당한 부담이 될 수 있습니다. 또한 조직들이 데이터 마이닝을 점진적으로 확대함에 따라 데이터 리더들은 데이터를 한 곳에만 보관하는 것을 권장하지 않습니다. 구조화된 데이터, 비구조화된 데이터, 빅데이터 등 서로 다른 데이터 저장소에 흩어진 데이터를 가져오거나 활용하는 일 역시 번거로운 작업입니다.
데이터 가상화(Data Virtualization)가 바로 이 문제에 대한 해결책입니다.
데이터 가상화란 무엇인가?
데이터 가상화는 애플리케이션이 데이터의 형식이나 물리적 위치 같은 기술적인 세부 사항 없이도 데이터를 조회하고 조작할 수 있게 하는 데이터 관리 방식입니다. 이를 통해 전체 데이터에 대한 단일 고객 뷰(Single Customer View)를 제공할 수 있습니다.
현재 시장에는 다음과 같은 다양한 데이터 가상화 도구가 존재합니다.
- Microsoft® PolyBase®
- Actifio® Virtual Data Pipe(VDP)
- Informatica® PowerCenter
- IBM® Cloud Pak for Data
- RedHat® JBoss Data Virtualization
이 시리즈에서는 Microsoft가 SQL 2016에서 처음 선보이고 이후 버전마다 꾸준히 개선해 온 PolyBase에 초점을 맞춥니다.
PolyBase를 사용하면 SQL Server가 Azure® Blob, Hadoop®, Oracle®, MongoDB® 등 외부 데이터 소스에 대해 Transact-SQL 쿼리를 실행할 수 있습니다. 외부 데이터를 처리하는 데 쓰이는 동일한 Transact-SQL은 관계형 데이터베이스에서도 그대로 동작하므로, 외부 소스의 데이터를 데이터베이스의 관계형 데이터와 손쉽게 통합할 수 있습니다. 다음 이미지는 SQL PolyBase의 개념을 간단히 보여줍니다.

그림 1
PolyBase의 기본 개념을 이해했으니, 이제 SQL PolyBase를 사용해 Azure Blob 외부 소스에서 데이터를 가져오는 데모를 살펴보겠습니다. 이번 글에서는 데모 실행을 위한 사전 준비 사항을 다룹니다.
데모 사전 준비 사항
데모를 실행하기 전에 다음 준비 작업을 완료해야 합니다.
- PolyBase 기능을 포함하여 SQL 2016 이상 설치
- SQL Server에서 PolyBase 활성화
- Azure Storage 계정 생성
- Azure Blob 컨테이너 생성
- Blob 컨테이너에 데이터 파일 업로드
1. SQL PolyBase 설치
PolyBase는 한 대의 머신에 하나의 SQL 인스턴스에만 설치할 수 있습니다.
현재 제 로컬 머신에는 기본 SQL 2019 인스턴스가 실행 중이지만, 설치 당시 PolyBase를 선택하지 않았습니다. 다음 이미지는 SQL Server 구성 관리자 화면입니다.

그림 2
PolyBase를 설치하려면 SQL 설치 프로그램을 다시 실행하고, 기능 선택 창에서 다음 항목을 선택해야 합니다.
- 외부 데이터용 PolyBase 쿼리 서비스(PolyBase Query Service for External Data)
- HDFS 데이터 소스용 Java 커넥터(Java Connector for HDFS Data Sources)
SQL 설치 프로그램을 실행하고 아래 단계에 따라 PolyBase 기능을 설치하세요. 마지막 화면까지 다음(Next)을 클릭한 뒤, 진한 빨간색으로 표시된 항목을 선택하면서 설치 완료(Finish Installation) 탭을 클릭합니다.
- 사이드바에서 설치(Installation)를 클릭하고 새 SQL Server 독립 실행형 설치 또는 기존 설치에 기능 추가를 선택합니다.

그림 3
- 설치 유형(Installation Type) 창이 나타나면 기존 인스턴스에 기능 추가(Add features to an existing instance)를 선택하고, 드롭다운 메뉴에서 대상 인스턴스를 지정합니다.

그림 4
- 기능 선택(Feature Selection) 창에서 PolyBase 관련 기능을 선택합니다.

그림 5
- PolyBase 구성(Polybase Configuration) 창에서 이 SQL Server를 독립형 PolyBase 사용 인스턴스로 사용(Use this SQL Server as standalone Polybase-enabled instance)을 선택합니다.

그림 6
- 나머지 사이드바 옵션은 기본값을 유지한 채 설치(Install)를 클릭합니다. 설치가 완료되면 다음과 같은 창이 표시됩니다.

그림 7
이 시점에서 SQL 구성 관리자를 확인하면 두 가지 기능이 추가로 설치된 것을 볼 수 있습니다. 다만 PolyBase를 활성화하려는 시점에 여전히 'SSMS에 Polybase가 설치되어 있지 않습니다'라는 오류 메시지가 나타날 수 있습니다. 이 경우 PolyBase 설치 후 서버를 재시작하면 문제가 해결됩니다.

그림 8
2. SQL PolyBase 활성화
PolyBase를 활성화하려면 다음 단계를 순서대로 실행합니다.
SSMS에서 SQL Server에 연결한 뒤 아래 쿼리를 실행하여 PolyBase가 정상적으로 설치되었는지 확인합니다.
SELECT SERVERPROPERTY ('IsPolyBaseInstalled') AS IsSuccessfullyInstalled;다음 이미지는 설치가 성공했을 때의 출력 결과입니다.

그림 9
아래 쿼리를 실행하여 PolyBase를 활성화합니다.
EXEC sp_configure 'polybase enabled', 1; Go이어서 다음 쿼리를 실행합니다.
Reconfigure이 단계는 매우 중요합니다. 이 쿼리를 생략하면 이 시리즈 3부에서 다루는 외부 파일 형식 생성 단계에서 오류가 발생할 수 있습니다.

그림 10
3. Azure Storage 계정 생성
Azure Storage 계정을 생성하려면 다음 단계를 수행합니다.
- 자격 증명을 사용하여 Azure Portal에 로그인합니다.
- Azure Storage 계정 서비스를 검색한 후 아래 단계에 따라 스토리지 계정을 생성합니다. 마지막 화면까지 다음(Next)을 클릭한 뒤 검토 및 만들기(Review and Create)를 선택합니다. 진한 빨간색으로 표시된 항목을 참고하세요.
- Azure Portal 검색 창에서 Azure Storage 계정을 선택하고 + 추가(+ Add)를 클릭하여 새 스토리지 계정을 만듭니다.

그림 11
- 기본 사항(Basics) 탭에서 필요한 정보를 입력하고 다음: 네트워킹(Next: Networking)을 클릭합니다.

그림 12
- 네트워킹(Networking), 데이터 보호(Data Protection), 고급(Advanced), 태그(Tags) 화면은 기본 설정을 그대로 유지합니다.
- 검토+만들기(Review+Create)를 클릭하고, 유효성 검사가 통과되면 만들기(Create)를 눌러 스토리지 계정을 생성합니다. 아래 이미지를 참고하세요.

그림 13
- 배포가 완료되면 리소스로 이동(Go To Resource)을 클릭하여 생성된 스토리지 계정 페이지로 이동합니다.

그림 14
4. Azure 컨테이너 생성
Azure 컨테이너를 만들려면 생성된 스토리지 계정으로 이동한 뒤, 왼쪽 창에서 컨테이너(Containers)를 클릭하고 + 컨테이너(+ Container)를 클릭합니다.

그림 15
5. 컨테이너에 데이터 파일 업로드
이 단계에서는 텍스트 형식의 데이터 파일을 만들어 컨테이너에 업로드합니다.
- 다음 예시와 같은 텍스트 파일을 생성합니다.

그림 16
참고: CSV, Excel® 또는 기타 외부 데이터 소스를 사용할 수도 있습니다. 다만 데이터 소스 종류에 따라 몇 가지 추가 작업이 필요합니다. 예를 들어 CSV나 Excel 데이터 소스를 사용하려면 SQL Server에 적절한 드라이버를 설치하고, ODBC 데이터 원본 이름(DSN)에 연결 속성을 추가해야 합니다. Microsoft ODBC 데이터 원본 관리자를 사용하면 ODBC DSN을 손쉽게 만들고 구성할 수 있습니다.
- 앞서 생성한 컨테이너 polybasedemocontainer로 이동하여 업로드(Upload)를 클릭하고, 오른쪽의 폴더 아이콘을 누른 후 업로드할 파일을 선택합니다.

그림 17
다음 단계
지금까지 PolyBase 데모를 위한 사전 준비를 모두 완료했습니다. 2부에서 본격적인 데모를 소개합니다.
의견이나 질문이 있다면 피드백 탭을 활용해 주세요. 언제든지 저희와 대화를 나눌 수 있습니다.