PolyBase 시작하기Get started with PolyBase

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터 시작)아니요Azure SQL 데이터베이스아니요Azure SQL 데이터 웨어하우스아니요병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

이 항목에서는 SQL Server 인스턴스에서 PolyBase 실행에 대한 기본 사항을 설명합니다.This topic contains the basics about running PolyBase on a SQL Server instance.

아래 단계를 실행하면 다음이 수행됩니다.After running the steps below, you will have:

  • 서버에 PolyBase 설치 및 실행 가능PolyBase installed and runnable on your server

  • PolyBase 개체를 만드는 문 예제Examples of statements that create PolyBase objects

  • SQL Server Management Studio(SSMS)에서 PolyBase 개체 관리 방법 이해An understanding of how to manage PolyBase objects in SQL Server Management Studio (SSMS)

  • PolyBase 개체를 사용하는 쿼리 예제Examples of queries using PolyBase objects

필수 구성 요소Prerequisites

다음이 포함된 SQL Server(64비트)의 인스턴스An instance of SQL Server (64-bit) with the following:

  • Microsoft .NET Framework 4.5Microsoft .NET Framework 4.5.

  • Oracle Java SE RunTime Environment(JRE) 버전 7.51 이상(64 비트)Oracle Java SE RunTime Environment (JRE) version 7.51 or higher (64-bit). (두 JRE 또는 Server JRE 작동).(Either JRE or Server JRE will work). Java SE 다운로드로 이동합니다.Go to Java SE downloads. JRE가 없으면 설치 관리자가 실패합니다.The installer will fail if JRE is not present.

  • 최소 메모리: 4GBMinimum memory: 4 GB

  • 최소 하드 디스크 공간: 2GBMinimum hard disk space: 2 GB

  • TCP/IP 연결을 사용할 수 있어야 합니다.TCP/IP connectivity must be enabled. 서버 네트워크 프로토콜 설정 또는 해제를 참조하세요. SQL Server Developer 및 Express Edition에서는 기본적으로 TCP/IP가 사용되지 않도록 설정되어 있습니다.(See Enable or Disable a Server Network Protocol.) SQL Server Developer and Express editions have TCP/IP disabled by default. PolyBase를 설치할 수 있지만 TCP/IP를 사용되도록 설정할 때까지 완전하게 시작되지 못합니다.PolyBase can be installed but will not fully start until TCP/IP is enabled. PolyBase 기능을 사용하려면 수동으로 TCP/IP를 사용되도록 설정해야 합니다.You must manually enable TCP/IP to have PolyBase functionality.

외부 데이터 원본은 다음 개체 중 하나입니다.An external data source, one of the following:

  • Hadoop 클러스터.Hadoop cluster. 지원되는 버전은 PolyBase 구성을 참조하세요.For supported versions see Configure PolyBase.

  • Azure BLOB 저장소Azure Blob storage

참고

Hadoop에 대해 계산 푸시 다운 기능을 사용하려면 대상 Hadoop 클러스터에 HDFS의 핵심 구성 요소가 있고 Jobhistory 서버에서 Yarn/MapReduce가 사용하도록 설정되어 있는지 확인해야 합니다.If you are going to use the computation pushdown functionality against Hadoop, you will need to ensure that the target Hadoop cluster has core components of HDFS, Yarn/MapReduce with Jobhistory server enabled. PolyBase는 MapReduce를 통해 푸시다운 쿼리를 제출하고 JobHistory 서버에서 상태를 가져옵니다.PolyBase submits the pushdown query via MapReduce and pulls status from the JobHistory Server. 두 구성 요소가 없으면 쿼리가 실패합니다.Without either component the query will fail.

PolyBase 설치Install PolyBase

PolyBase를 설치하지 않은 경우 PolyBase 설치를 참조하세요.If you haven't installed PolyBase, see PolyBase installation.

설치 확인 방법How to confirm installation

설치가 끝난 후 PolyBase가 제대로 설치되었는지 확인하려면 다음 명령을 실행합니다.After installation, run the following command to confirm that PolyBase has been successfully installed. PolyBase가 설치된 경우 1을 반환합니다. 그렇지 않으면 0이 반환됩니다.If PolyBase is installed, returns 1; otherwise, 0.

SELECT SERVERPROPERTY ('IsPolybaseInstalled') AS IsPolybaseInstalled;  

PolyBase 구성 Configure PolyBase

설치한 후 Hadoop 버전 또는 Azure Blob Storage를 사용하도록 SQL Server를 구성해야 합니다.After installing, you must configure SQL Server to use either your Hadoop version or Azure Blob Storage. PolyBase는 HDP(Hortonworks Data Platform) 및 CDH(Cloudera Distributed Hadoop)의 두 가지 Hadoop 공급자를 지원합니다.PolyBase supports two Hadoop providers, Hortonworks Data Platform (HDP) and Cloudera Distributed Hadoop (CDH). 지원되는 외부 데이터 원본은 다음과 같습니다.The supported external data sources include:

  • Linux/Windows Server에서 Hortonworks HDP 1.3Hortonworks HDP 1.3 on Linux/Windows Server

  • Linux에서 Hortonworks HDP 2.1 - 2.6Hortonworks HDP 2.1 – 2.6 on Linux

  • Windows Server에서 Hortonworks HDP 2.1 - 2.3Hortonworks HDP 2.1 - 2.3 on Windows Server

  • Linux에서 Cloudera CDH 4.3Cloudera CDH 4.3 on Linux

  • Linux에서 Cloudera CDH 5.1 – 5.5, 5.9 - 5.12Cloudera CDH 5.1 – 5.5, 5.9 - 5.12 on Linux

  • Azure BLOB 저장소Azure Blob Storage

Hadoop은 새 릴리스를 위해 “Major.Minor.Version” 패턴을 따릅니다.Hadoop follows the "Major.Minor.Version" pattern for its new releases. 지원되는 주/부 릴리스 내의 모든 버전이 지원됩니다.All versions within a supported Major and Minor release are supported.

참고

Azure Data Lake Store 연결은 Azure SQL Data Warehouse에서만 지원됩니다.Azure Data Lake Store connectivity is only supported in Azure SQL Data Warehouse.

외부 데이터 원본 구성External data source configuration

  1. sp_configure(Transact-SQL) 'hadoop connectivity'를 실행하고 적절한 값을 설정합니다.Run sp_configure (Transact-SQL) ‘hadoop connectivity’ and set an appropriate value. 기본적으로 hadoop 연결은 7로 설정됩니다.By Default, the hadoop connectivity is set to 7. 값을 찾으려면 PolyBase Connectivity Configuration(Transact-SQL)을 참조하세요.To find the value, see PolyBase Connectivity Configuration (Transact-SQL).

    -- Values map to various external data sources.  
    -- Example: value 7 stands for Azure blob storage and Hortonworks HDP 2.3 on Linux.  
    sp_configure @configname = 'hadoop connectivity', @configvalue = 7;   
    GO   
    
    RECONFIGURE   
    GO   
    
  2. services.msc를 사용하여 SQL Server를 다시 시작해야 합니다.You must restart SQL Server using services.msc. SQL Server를 다시 시작하면 다음 서비스도 다시 시작됩니다.Restarting SQL Server restarts these services:

    • SQL Server PolyBase 데이터 이동 서비스SQL Server PolyBase Data Movement Service

    • SQL Server PolyBase 엔진SQL Server PolyBase Engine

    services.msc에서 PolyBase 서비스 중지 및 시작stop and start PolyBase services in services.msc

푸시다운 구성Pushdown configuration

쿼리 성능을 향상하려면 Hadoop 클러스터에 대한 푸시다운 계산을 사용하도록 설정합니다.To improve query performance, enable pushdown computation to a Hadoop cluster:

  1. SQL Server 설치 경로에서 yarn-site.xml 파일을 찾습니다.Find the file yarn-site.xml in the installation path of SQL Server. 일반적인 경로는 다음과 같습니다.Typically, the path is:

    
    C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLBinnPolybaseHadoopconf  
    
  2. Hadoop 컴퓨터의 Hadoop 구성 디렉터리에서 동일한 파일을 찾습니다.On the Hadoop machine, find the analogous file in the Hadoop configuration directory. 이 파일에서 구성 키 yarn.application.classpath의 값을 찾아서 복사합니다.In the file, find and copy the value of the configuration key yarn.application.classpath.

  3. SQL Server 컴퓨터의 yarn.site.xml 파일 에서 yarn.application.classpath 속성을 찾은 다음On the SQL Server machine, in the yarn.site.xml file, find the yarn.application.classpath property. Hadoop 컴퓨터의 값을 value 요소에 붙여넣습니다.Paste the value from the Hadoop machine into the value element.

  4. 모든 CDH 5.X 버전에서 mapreduce.application.classpath 구성 매개 변수를 yarn.site.xml 파일의 끝이나 mapred-site.xml 파일에 추가해야 합니다.For all CDH 5.X versions, you will need to add the mapreduce.application.classpath configuration parameters either to the end of your yarn.site.xml file or into the mapred-site.xml file. HortonWorks는 yarn.application.classpath 구성 내에 이러한 구성을 포함하고 있습니다.HortonWorks includes these configurations within the yarn.application.classpath configurations. 예제는 PolyBase 구성을 참조하세요.See PolyBase configuration for examples.

PolyBase 확장Scale out PolyBase

PolyBase 그룹 기능을 사용하면 SQL Server 인스턴스 클러스터를 만들어 외부 데이터 원본에서 쿼리 성능을 향상하기 위해 스케일 아웃 방식으로 대규모 데이터를 처리할 수 있습니다.The PolyBase group feature allows you to create a cluster of SQL Server instances to process large data sets from external data sources in a scale-out fashion for better query performance.

  1. 여러 시스템에 PolyBase와 함께 SQL Server를 설치합니다.Install SQL Server with PolyBase on multiple machines.

  2. 헤드 노드로 하나의 SQL Server를 선택합니다.Select one SQL Server as head node.

  3. sp_polybase_join_group을 실행하여 다른 인스턴스를 계산 노드로 추가합니다.Add other instances as compute nodes by running sp_polybase_join_group.

    -- Enter head node details:   
    -- head node machine name, head node dms control channel port, head node sql server name  
    EXEC sp_polybase_join_group 'PQTH4A-CMP01', 16450, 'MSSQLSERVER';  
    
  4. 계산 노드에서 PolyBase 데이터 이동 서비스를 다시 시작합니다.Restart the PolyBase Data Movement Service on the compute nodes.

    자세한 내용은 PolyBase 확장 그룹을 참조하세요.For details, see PolyBase scale-out groups.

T-SQL 개체 만들기Create T-SQL objects

외부 데이터 원본, Hadoop 또는 Azure Storage에 따라 개체를 만듭니다.Create objects depending on the external data source, either Hadoop or Azure Storage.

HadoopHadoop

-- 1: Create a database scoped credential.  
-- Create a master key on the database. This is required to encrypt the credential secret.  

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo';  

-- 2: Create a database scoped credential  for Kerberos-secured Hadoop clusters.  
-- IDENTITY: the Kerberos user name.  
-- SECRET: the Kerberos password  

CREATE DATABASE SCOPED CREDENTIAL HadoopUser1   
WITH IDENTITY = '<hadoop_user_name>', Secret = '<hadoop_password>';  

-- 3:  Create an external data source.  
-- LOCATION (Required) : Hadoop Name Node IP address and port.  
-- RESOURCE MANAGER LOCATION (Optional): Hadoop Resource Manager location to enable pushdown computation.  
-- CREDENTIAL (Optional):  the database scoped credential, created above.  

CREATE EXTERNAL DATA SOURCE MyHadoopCluster WITH (  
        TYPE = HADOOP,   
        LOCATION ='hdfs://10.xxx.xx.xxx:xxxx',   
        RESOURCE_MANAGER_LOCATION = '10.xxx.xx.xxx:xxxx',   
        CREDENTIAL = HadoopUser1        
);  

-- 4: Create an external file format.  
-- FORMAT TYPE: Type of format in Hadoop (DELIMITEDTEXT,  RCFILE, ORC, PARQUET).    
CREATE EXTERNAL FILE FORMAT TextFileFormat WITH (  
        FORMAT_TYPE = DELIMITEDTEXT,   
        FORMAT_OPTIONS (FIELD_TERMINATOR ='|',   
                USE_TYPE_DEFAULT = TRUE)  

-- 5:  Create an external table pointing to data stored in Hadoop.  
-- LOCATION: path to file or directory that contains the data (relative to HDFS root).  

CREATE EXTERNAL TABLE [dbo].[CarSensor_Data] (  
        [SensorKey] int NOT NULL,   
        [CustomerKey] int NOT NULL,   
        [GeographyKey] int NULL,   
        [Speed] float NOT NULL,   
        [YearMeasured] int NOT NULL  
)  
WITH (LOCATION='/Demo/',   
        DATA_SOURCE = MyHadoopCluster,  
        FILE_FORMAT = TextFileFormat  
);  

-- 6:  Create statistics on an external table.   
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)  

Azure BLOB 저장소Azure Blob Storage

--1: Create a master key on the database.  
-- Required to encrypt the credential secret.  

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo';  

-- Create a database scoped credential  for Azure blob storage.  
-- IDENTITY: any string (this is not used for authentication to Azure storage).  
-- SECRET: your Azure storage account key.  

CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential   
WITH IDENTITY = 'user', Secret = '<azure_storage_account_key>';  

--2:  Create an external data source.  
-- LOCATION:  Azure account storage account name and blob container name.  
-- CREDENTIAL: The database scoped credential created above.  

CREATE EXTERNAL DATA SOURCE AzureStorage with (  
        TYPE = HADOOP,   
        LOCATION ='wasbs://<blob_container_name>@<azure_storage_account_name>.blob.core.windows.net',  
        CREDENTIAL = AzureStorageCredential  
);  

--3:  Create an external file format.  
-- FORMAT TYPE: Type of format in Hadoop (DELIMITEDTEXT,  RCFILE, ORC, PARQUET).  

CREATE EXTERNAL FILE FORMAT TextFileFormat
WITH (  
       FORMAT_TYPE = DELIMITEDTEXT,   
       FORMAT_OPTIONS (
         FIELD_TERMINATOR ='|',   
         USE_TYPE_DEFAULT = TRUE
       )
);


--4: Create an external table.  
-- The external table points to data stored in Azure storage.  
-- LOCATION: path to a file or directory that contains the data (relative to the blob container).  
-- To point to all files under the blob container, use LOCATION='/'   

CREATE EXTERNAL TABLE [dbo].[CarSensor_Data] (  
        [SensorKey] int NOT NULL,   
        [CustomerKey] int NOT NULL,   
        [GeographyKey] int NULL,   
        [Speed] float NOT NULL,   
        [YearMeasured] int NOT NULL  
)  
WITH (LOCATION='/Demo/',   
        DATA_SOURCE = AzureStorage,  
        FILE_FORMAT = TextFileFormat  
);  

--5: Create statistics on an external table.   
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)  

PolyBase 쿼리PolyBase queries

세 가지 함수가 PolyBase에 적합합니다.There are three functions that PolyBase is suited for:

  • 외부 테이블에 대한 임시 쿼리입니다.ad-hoc queries against external tables.

  • 데이터 가져오기importing data.

  • 데이터 내보내기exporting data.

쿼리 예제Query examples

  • 임시 쿼리Ad-hoc queries

    -- PolyBase Scenario 1: Ad-Hoc Query joining relational with Hadoop data   
    -- Select customers who drive faster than 35 mph: joining structured customer data stored   
    -- in SQL Server with car sensor data stored in Hadoop.  
    SELECT DISTINCT Insured_Customers.FirstName,Insured_Customers.LastName,   
            Insured_Customers. YearlyIncome, CarSensor_Data.Speed  
    FROM Insured_Customers, CarSensor_Data  
    WHERE Insured_Customers.CustomerKey = CarSensor_Data.CustomerKey and CarSensor_Data.Speed > 35   
    ORDER BY CarSensor_Data.Speed DESC  
    OPTION (FORCE EXTERNALPUSHDOWN);    -- or OPTION (DISABLE EXTERNALPUSHDOWN)  
    
  • 데이터 가져오기Importing data

    -- PolyBase Scenario 2: Import external data into SQL Server.  
    -- Import data for fast drivers into SQL Server to do more in-depth analysis and  
    -- leverage Columnstore technology.  
    
    SELECT DISTINCT   
            Insured_Customers.FirstName, Insured_Customers.LastName,   
            Insured_Customers.YearlyIncome, Insured_Customers.MaritalStatus  
    INTO Fast_Customers from Insured_Customers INNER JOIN   
    (  
            SELECT * FROM CarSensor_Data where Speed > 35   
    ) AS SensorD  
    ON Insured_Customers.CustomerKey = SensorD.CustomerKey  
    ORDER BY YearlyIncome  
    
    CREATE CLUSTERED COLUMNSTORE INDEX CCI_FastCustomers ON Fast_Customers;  
    
  • 데이터 내보내기Exporting data

    -- PolyBase Scenario 3: Export data from SQL Server to Hadoop.  
    
    -- Enable INSERT into external table  
    sp_configure ‘allow polybase export’, 1;  
    reconfigure  
    
    -- Create an external table.   
    CREATE EXTERNAL TABLE [dbo].[FastCustomers2009] (  
            [FirstName] char(25) NOT NULL,   
            [LastName] char(25) NOT NULL,   
            [YearlyIncome] float NULL,   
            [MaritalStatus] char(1) NOT NULL  
    )  
    WITH (  
            LOCATION='/old_data/2009/customerdata',  
            DATA_SOURCE = HadoopHDP2,  
            FILE_FORMAT = TextFileFormat,  
            REJECT_TYPE = VALUE,  
            REJECT_VALUE = 0  
    );  
    
    -- Export data: Move old data to Hadoop while keeping it query-able via an external table.  
    INSERT INTO dbo.FastCustomer2009  
    SELECT T.* FROM Insured_Customers T1 JOIN CarSensor_Data T2  
    ON (T1.CustomerKey = T2.CustomerKey)  
    WHERE T2.YearMeasured = 2009 and T2.Speed > 40;  
    

SSMS에서 PolyBase 개체 관리Managing PolyBase objects in SSMS

SSMS에서 외부 테이블은 별도 폴더인 외부 테이블에 표시됩니다.In SSMS, external tables are displayed in a separate folder External Tables. 외부 데이터 원본 및 외부 파일 형식은 외부 리소스의 하위 폴더에 있습니다.External data sources and external file formats are in subfolders under External Resources.

SSMS에서 PolyBase 개체PolyBase objects in SSMS

문제 해결Troubleshooting

DMV를 사용하여 성능 및 쿼리 문제를 해결합니다.Use DMVs to troubleshoot performance and queries. 자세한 내용은 PolyBase 문제 해결을 참조하세요.For details, see PolyBase troubleshooting.

SQL Server 2016 RC1에서 RC2 또는 RC3으로 업그레이드한 후 쿼리가 실패할 수 있습니다.After upgrading from SQL Server 2016 RC1 to RC2 or RC3, queries may fail. 자세한 내용 및 해결 방법은 SQL Server 2016 릴리스 정보 를 참조하고 "PolyBase"를 검색하세요.For details and a remedy, see SQL Server 2016 Release Notes and search for "PolyBase."

다음 단계Next steps

확장 기능을 이해하려면 PolyBase 확장 그룹을 참조하세요.To understand the scale-out feature, see PolyBase scale-out groups. PolyBase를 모니터링하려면 PolyBase 문제 해결을 참조하세요.To monitor PolyBase, see PolyBase troubleshooting. PolyBase 성능 문제를 해결하려면 PolyBase troubleshooting with dynamic management views을(를) 참조하십시오.To troubleshoot PolyBase performance, see PolyBase troubleshooting with dynamic management views.

관련 항목:See Also

PolyBase 가이드 PolyBase Guide
PolyBase 확장 그룹 PolyBase scale-out groups
PolyBase 저장 프로시저 PolyBase stored procedures
CREATE EXTERNAL DATA SOURCE(Transact-SQL) CREATE EXTERNAL DATA SOURCE (Transact-SQL)
CREATE EXTERNAL FILE FORMAT(Transact-SQL) CREATE EXTERNAL FILE FORMAT (Transact-SQL)
CREATE EXTERNAL TABLE(Transact-SQL)CREATE EXTERNAL TABLE (Transact-SQL)