Konfigurace PolyBase pro přístup k externím datům v Hadoopu

Platí pro:SQL Server v systému Windows Azure SQL Managed Instance

Tento článek vysvětluje, jak použít PolyBase na instanci SQL Server k dotazování externích dat v Hadoopu.

Poznámka

Od verze SQL Server 2022 (16.x) se v PolyBase už Hadoop nepodporuje.

Požadavky

  • PolyBase podporuje dva poskytovatele Hadoopu, Hortonworks Data Platform (HDP) a Cloudera Distributed Hadoop (CDH). Hadoop následuje vzorec "Major.Minor.Version" pro své nové vydání a všechny verze v rámci podporovaného hlavního a vedlejšího vydání jsou podporovány. Pro informace o podporovaných verzích Hortonworks Data Platform (HDP) a Cloudera Distributed Hadoop (CDH) viz konfigurace konektivity PolyBase.

Poznámka

PolyBase podporuje zóny šifrování Hadoop počínaje SQL Serverem 2016 SP1 CU7 a SQL Serverem 2017 CU3. Pokud používáte skupiny horizontálního škálování PolyBase, všechny výpočetní uzly musí také používat verzi, která zahrnuje podporu pro šifrovací zóny Hadoopu.

Konfigurace připojení Hadoopu

Nejprve nakonfigurujte SQL Server PolyBase tak, aby používal konkrétního poskytovatele Hadoop.

  1. Spusť sp_configure a hadoop connectivity nastav hodnotu pro svého poskytovatele. Pro zjištění hodnoty pro vašeho poskytovatele viz konfigurace konektivity PolyBase.

    -- Values map to various external data sources.
    -- Example: value 7 stands for Hortonworks HDP 2.1 to 2.6 on Linux,
    -- 2.1 to 2.3 on Windows Server, and Azure Blob Storage
    EXECUTE sp_configure
        @configname = 'hadoop connectivity',
        @configvalue = 7;
    GO
    
    RECONFIGURE;
    GO
    
  2. Restartujte SQL Server pomocí services.msc. Restartování SQL Server také restartuje tyto služby:

    • Služba pro přesun dat SQL Server PolyBase
    • SQL Server PolyBase Engine

    Snímek obrazovky ukazující, jak zastavit a spustit služby PolyBase v nástroji services.msc.

Povolit počítání pushdown

Pokud chcete zvýšit výkon dotazů, povolte výpočetní propadání do clusteru Hadoop.

  1. Vyhledejte soubor yarn-site.xml v instalační cestě SQL Serveru. Cesta je obvykle následující:

    C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf\
    
  2. Na počítači Hadoop najděte analogický soubor v konfiguračním adresáři Hadoop. V souboru vyhledejte a zkopírujte hodnotu konfiguračního klíče yarn.application.classpath.

  3. Na počítači s SQL Serverem v souboru yarn-site.xml vyhledejte vlastnost yarn.application.classpath. Vložte hodnotu z počítače Hadoop do prvku value.

  4. Pro všechny verze CDH 5.x přidejte mapreduce.application.classpath konfigurační parametry buď na konec souboru yarn-site.xml , nebo přímo do souboru mapred-site.xml . HortonWorks zahrnuje tyto konfigurace v yarn.application.classpath rámci konfigurací. Příklady viz PolyBase konfigurace a bezpečnost pro Hadoop.

Důležitý

Aby bylo možné s Hadoopem použít funkci nabízení výpočtů, musí mít cílový cluster Hadoop základní komponenty HDFS, YARN a MapReduce s povoleným serverem historie úloh. PolyBase odešle dotaz pushdownu prostřednictvím MapReduce a načítá stav ze serveru historie úloh. Bez obou komponent dotaz selže.

Konfigurace externí tabulky

Pokud chcete dotazovat data ve zdroji dat Hadoop, musíte definovat externí tabulku, která se má použít v Transact-SQL dotazech. Následující kroky popisují, jak nakonfigurovat externí tabulku.

  1. Vytvořte hlavní klíč v databázi, pokud ještě neexistuje. Tento klíč potřebuješ k zašifrování tajemství přihlašovacích údajů.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
    
    • PASSWORD = <password>

      Heslo, které se používá k šifrování hlavního klíče v databázi. Heslo musí splňovat požadavky politiky hesel Windows počítače, který hostí instanci SQL Server.

  2. Vytvořte přihlašovací údaje s vymezeným oborem databáze pro clustery Hadoop zabezpečené protokolem Kerberos.

    CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
    WITH
        IDENTITY = '<kerberos_user_name>',
        SECRET = '<kerberos_password>';
    
  3. Vytvořte externí zdroj dat pomocí CREATE EXTERNAL DATA SOURCEpříkazu .

    • LOCATION (Povinné): IP adresa a port uzlu NameNode systému Hadoop.
    • RESOURCE_MANAGER_LOCATION (Volitelné): Umístění správce prostředků Hadoop pro povolení výpočtů pushdown.
    • CREDENTIAL (Volitelné): Databázové přihlašovací údaje, vytvořené dříve.
    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. Vytvořte formát externího souboru pomocí CREATE EXTERNAL FILE FORMATpříkazu .

    • FORMAT_TYPE: Typ formátu v Hadoopu (DELIMITEDTEXT, RCFILE, , ORCnebo PARQUET).
    CREATE EXTERNAL FILE FORMAT TextFileFormat
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS (FIELD_TERMINATOR = '|', USE_TYPE_DEFAULT = TRUE)
    );
    
  5. Vytvořte externí tabulku odkazující na data uložená v Hadoopu pomocí CREATE EXTERNAL TABLE. V tomto příkladu externí data obsahují data snímačů automobilů.

    • LOCATION: Cesta k souboru nebo adresáři, který obsahuje data (vzhledem ke kořeni HDFS).
    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 (
        DATA_SOURCE = MyHadoopCluster,
        LOCATION = '/Demo/',
        FILE_FORMAT = TextFileFormat
    );
    
  6. Vytvoření statistiky pro externí tabulku

    CREATE STATISTICS StatsForSensors
    ON CarSensor_Data(CustomerKey, Speed);
    

Dotazy PolyBase

PolyBase je vhodný pro následující scénáře:

  • Ad hoc dotazy na externí tabulky
  • Importování dat.
  • Export dat.

Následující dotazy poskytují příklad s fiktivními daty z automobilových senzorů.

Ad hoc dotazy

Následující ad hoc dotaz spojuje relační data s Hadoop daty. Vybere zákazníky, kteří jezdí rychleji než 35 mph a připojují strukturovaná zákaznická data uložená na SQL Serveru s daty snímačů aut uloženými v Hadoopu.

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)

Importovat data

Následující dotaz naimportuje externí data do SQL Serveru. Tento příklad importuje data pro rychlé řidiče do SQL Serveru, aby bylo možné provést podrobnější analýzu. Pro zvýšení výkonu se v ukázce používá index columnstore.

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;

Exportovat data

Následující dotaz exportuje data z SQL Serveru do Hadoopu. Nejprve povolte export přes PolyBase. Potom před exportem dat do cíle vytvořte externí tabulku pro cíl.

-- Enable INSERT into external table
EXECUTE 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 (
    DATA_SOURCE = HadoopHDP2,
    LOCATION = '/old_data/2009/customerdata',
    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 AS T1
     INNER JOIN CarSensor_Data AS T2
         ON (T1.CustomerKey = T2.CustomerKey)
WHERE T2.YearMeasured = 2009
      AND T2.Speed > 40;

Zobrazení objektů PolyBase v SSMS

V nástroji SSMS se externí tabulky zobrazují v samostatné složce externí tabulky. Externí zdroje dat a formáty externích souborů jsou v podsložkách v části Externí zdroje.

Snímek obrazovky s objekty PolyBase v SSMS