Integrace Apache Spark a Apache Hive pomocí konektoru skladu s podregistru v Azure HDInsightIntegrate Apache Spark and Apache Hive with Hive Warehouse Connector in Azure HDInsight

Konektor Apache Hive Warehouse (umožní) je knihovna, která umožňuje snadnější práci s Apache Spark a Apache Hive.The Apache Hive Warehouse Connector (HWC) is a library that allows you to work more easily with Apache Spark and Apache Hive. Podporuje úlohy, jako je přesun dat mezi datovými rámečky Sparku a tabulkami podregistru.It supports tasks such as moving data between Spark DataFrames and Hive tables. Také nasměrováním datových proudů Sparku do tabulek podregistru.Also, by directing Spark streaming data into Hive tables. Konektor datového skladu pro podregistr funguje jako most mezi Sparkem a podregistrem.Hive Warehouse Connector works like a bridge between Spark and Hive. Podporuje také Scala, Java a Python jako programovací jazyky pro vývoj.It also supports Scala, Java, and Python as programming languages for development.

Konektor skladiště pro podregistr umožňuje využívat jedinečné funkce podregistru a Sparku k vytváření výkonných aplikací pro velké objemy dat.The Hive Warehouse Connector allows you to take advantage of the unique features of Hive and Spark to build powerful big-data applications.

Apache Hive nabízí podporu pro databázové transakce, které jsou atomické, konzistentní, izolované a trvalé (KYSELé).Apache Hive offers support for database transactions that are Atomic, Consistent, Isolated, and Durable (ACID). Další informace o KYSELINě a transakcích v podregistru najdete v tématu transakce podregistru.For more information on ACID and transactions in Hive, see Hive Transactions. Podregistr také nabízí podrobné kontrolní mechanismy zabezpečení prostřednictvím Apache Ranger a LLAP (Analytical Processing Analytical Processing), které nejsou k dispozici v Apache Spark.Hive also offers detailed security controls through Apache Ranger and Low Latency Analytical Processing (LLAP) not available in Apache Spark.

Apache Spark má strukturované rozhraní API pro streamování, které poskytuje možnosti streamování, které nejsou dostupné v Apache Hive.Apache Spark, has a Structured Streaming API that gives streaming capabilities not available in Apache Hive. Počínaje HDInsight 4,0 Apache Spark 2.3.1 a Apache Hive 3.1.0 mít samostatné metaúložiště.Beginning with HDInsight 4.0, Apache Spark 2.3.1 and Apache Hive 3.1.0 have separate metastores. Samostatné metaúložiště může zajistit obtížnou interoperabilitu.The separate metastores can make interoperability difficult. Konektor pro skladiště podregistru usnadňuje používání Sparku a úlů společně.The Hive Warehouse Connector makes it easier to use Spark and Hive together. Knihovna umožní načítá data z procesů LLAP démonů do paralelního vykonavatele.The HWC library loads data from LLAP daemons to Spark executors in parallel. Díky tomuto procesu je efektivnější a přizpůsobitelnější než standardní připojení JDBC z Sparku do podregistru.This process makes it more efficient and adaptable than a standard JDBC connection from Spark to Hive.

Architektura konektoru skladu podregistru

Mezi operace podporované konektorem skladu podregistru patří:Some of the operations supported by the Hive Warehouse Connector are:

  • Popis tabulkyDescribing a table
  • Vytvoření tabulky pro data ve formátu ORCCreating a table for ORC-formatted data
  • Výběr dat podregistru a načítání datového rámceSelecting Hive data and retrieving a DataFrame
  • Zápis datového rámce do podregistru ve BatchWriting a DataFrame to Hive in batch
  • Spuštění příkazu aktualizace podregistruExecuting a Hive update statement
  • Čtení dat tabulky z podregistru, transformace v Sparku a její zápis do nové tabulky podregistruReading table data from Hive, transforming it in Spark, and writing it to a new Hive table
  • Zápis datového rámce nebo datového proudu Sparku do podregistru pomocí HiveStreamingWriting a DataFrame or Spark stream to Hive using HiveStreaming

Nastavení konektoru pro skladiště v podregistruHive Warehouse Connector setup

Důležité

HiveServer2 Interactive instance, která je nainstalovaná na Spark 2,4 Balíček zabezpečení podniku clustery, se nepodporuje pro použití s konektorem skladu pro podregistr.The HiveServer2 Interactive instance installed on Spark 2.4 Enterprise Security Package clusters is not supported for use with the Hive Warehouse Connector. Místo toho musíte nakonfigurovat samostatný HiveServer2 interaktivní cluster pro hostování HiveServer2 interaktivních úloh.Instead, you must configure a separate HiveServer2 Interactive cluster to host your HiveServer2 Interactive workloads. Konfigurace konektoru skladu podregistru, která využívá jeden cluster Spark 2,4, není podporována.A Hive Warehouse Connector configuration that utilizes a single Spark 2.4 cluster is not supported.

Konektor Warehouse pro podregistr potřebuje samostatné clustery pro úlohy Spark a interaktivní dotazy.Hive Warehouse Connector needs separate clusters for Spark and Interactive Query workloads. Pomocí těchto kroků nastavte tyto clustery ve službě Azure HDInsight.Follow these steps to set up these clusters in Azure HDInsight.

Vytváření clusterůCreate clusters

  1. Vytvořte cluster HDInsight Spark 4,0 s účtem úložiště a vlastní virtuální sítí Azure.Create an HDInsight Spark 4.0 cluster with a storage account and a custom Azure virtual network. Informace o vytvoření clusteru ve virtuální síti Azure najdete v tématu Přidání HDInsight do existující virtuální sítě.For information on creating a cluster in an Azure virtual network, see Add HDInsight to an existing virtual network.

  2. Vytvořte cluster HDInsight Interactive Query (LLAP) 4,0 se stejným účtem úložiště a Azure Virtual Network jako cluster Spark.Create an HDInsight Interactive Query (LLAP) 4.0 cluster with the same storage account and Azure virtual network as the Spark cluster.

Konfigurace nastavení umožníConfigure HWC settings

Shromáždit předběžné informaceGather preliminary information

  1. Ve webovém prohlížeči přejděte na místo, https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HIVE kde LLAPCLUSTERNAME je název vašeho clusteru interaktivních dotazů.From a web browser, navigate to https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HIVE where LLAPCLUSTERNAME is the name of your Interactive Query cluster.

  2. Přejděte na summary > HiveServer2 Interactive JDBC URL a poznamenejte si hodnotu.Navigate to Summary > HiveServer2 Interactive JDBC URL and note the value. Hodnota může být podobná: jdbc:hive2://zk0-iqgiro.rekufuk2y2ce.bx.internal.cloudapp.net:2181,zk1-iqgiro.rekufuk2y2ce.bx.internal.cloudapp.net:2181,zk4-iqgiro.rekufuk2y2ce.bx.internal.cloudapp.net:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2-interactive .The value may be similar to: jdbc:hive2://zk0-iqgiro.rekufuk2y2ce.bx.internal.cloudapp.net:2181,zk1-iqgiro.rekufuk2y2ce.bx.internal.cloudapp.net:2181,zk4-iqgiro.rekufuk2y2ce.bx.internal.cloudapp.net:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2-interactive.

  3. Přejděte do části Konfigurace > Upřesnit > Upřesnit podregistr podregistr-site > . Zookeeper. kvorum a poznamenejte si hodnotu.Navigate to Configs > Advanced > Advanced hive-site > hive.zookeeper.quorum and note the value. Hodnota může být podobná: zk0-iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:2181,zk1-iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:2181,zk4-iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:2181 .The value may be similar to: zk0-iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:2181,zk1-iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:2181,zk4-iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:2181.

  4. Přejděte na Konfigurace > Upřesnit > Obecné > podregistru. metastore. URI a poznamenejte si hodnotu.Navigate to Configs > Advanced > General > hive.metastore.uris and note the value. Hodnota může být podobná: thrift://iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:9083,thrift://hn1-iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:9083 .The value may be similar to: thrift://iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:9083,thrift://hn1-iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:9083.

  5. Přejděte na Konfigurace > Upřesnit > pokročilý podregistr-Interactive-site > podregistr. llap. démon. Service. Hosts a poznamenejte si hodnotu.Navigate to Configs > Advanced > Advanced hive-interactive-site > hive.llap.daemon.service.hosts and note the value. Hodnota může být podobná: @llap0 .The value may be similar to: @llap0.

Konfigurace nastavení clusteru SparkConfigure Spark cluster settings

  1. Ve webovém prohlížeči přejděte na místo, https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs kde název_clusteru je název vašeho clusteru Apache Spark.From a web browser, navigate to https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configs where CLUSTERNAME is the name of your Apache Spark cluster.

  2. Rozbalte vlastní spark2 – výchozí.Expand Custom spark2-defaults.

    Konfigurace Spark2 Apache Ambari

  3. Vyberte Přidat vlastnost... a přidejte následující konfigurace:Select Add Property... to add the following configurations:

    KonfiguraceConfiguration HodnotaValue
    spark.datasource.hive.warehouse.load.staging.dir wasbs://STORAGE_CONTAINER_NAME@STORAGE_ACCOUNT_NAME.blob.core.windows.net/tmp.wasbs://STORAGE_CONTAINER_NAME@STORAGE_ACCOUNT_NAME.blob.core.windows.net/tmp.
    Nastavte vhodný přípravný adresář kompatibilní s HDFS.Set to a suitable HDFS-compatible staging directory. Pokud máte dva různé clustery, pracovní adresář by měl být složka v pracovním adresáři účtu úložiště LLAP clusteru, aby k němu měl přístup HiveServer2.If you have two different clusters, the staging directory should be a folder in the staging directory of the LLAP cluster's storage account so that HiveServer2 has access to it. Nahraďte STORAGE_ACCOUNT_NAME názvem účtu úložiště použitým clusterem a STORAGE_CONTAINER_NAME názvem kontejneru úložiště.Replace STORAGE_ACCOUNT_NAME with the name of the storage account being used by the cluster, and STORAGE_CONTAINER_NAME with the name of the storage container.
    spark.sql.hive.hiveserver2.jdbc.url Hodnota, kterou jste získali dříve z HiveServer2 Interactive JDBC URLThe value you obtained earlier from HiveServer2 Interactive JDBC URL
    spark.datasource.hive.warehouse.metastoreUri Hodnota, kterou jste získali dříve z podregistru. metastore. URI.The value you obtained earlier from hive.metastore.uris.
    spark.security.credentials.hiveserver2.enabled true pro režim clusteru PŘÍZe a false pro režim přízového klienta.true for YARN cluster mode and false for YARN client mode.
    spark.hadoop.hive.zookeeper.quorum Hodnota, kterou jste získali dříve z podregistru. Zookeeper. kvora.The value you obtained earlier from hive.zookeeper.quorum.
    spark.hadoop.hive.llap.daemon.service.hosts Hodnota, kterou jste získali dříve z podregistru. llap. démon. Service. Hosts.The value you obtained earlier from hive.llap.daemon.service.hosts.
  4. Uložte změny a restartujte všechny ovlivněné součásti.Save changes and restart all affected components.

Konfigurace clusterů umožní for Balíček zabezpečení podniku (ESP)Configure HWC for Enterprise Security Package (ESP) clusters

Balíček zabezpečení podniku (ESP) poskytuje podnikové funkce, jako je ověřování založené na službě Active Directory, podpora více uživatelů a řízení přístupu na základě rolí pro Apache Hadoop clustery ve službě Azure HDInsight.The Enterprise Security Package (ESP) provides enterprise-grade capabilities like Active Directory-based authentication, multi-user support, and role-based access control for Apache Hadoop clusters in Azure HDInsight. Další informace o protokolu ESP najdete v tématu použití balíček zabezpečení podniku ve službě HDInsight.For more information on ESP, see Use Enterprise Security Package in HDInsight.

Kromě konfigurací uvedených v předchozí části přidejte následující konfiguraci pro použití umožní v clusterech ESP.Apart from the configurations mentioned in the previous section, add the following configuration to use HWC on the ESP clusters.

  1. V Ambari webovém uživatelském rozhraní clusteru Spark přejděte do Spark2 > Configurations > Custom Spark2-Defaults.From Ambari web UI of Spark cluster, navigate to Spark2 > CONFIGS > Custom spark2-defaults.

  2. Aktualizujte následující vlastnost.Update the following property.

    KonfiguraceConfiguration HodnotaValue
    spark.sql.hive.hiveserver2.jdbc.url.principal hive/<llap-headnode>@<AAD-Domain>
    • Ve webovém prohlížeči přejděte do https://CLUSTERNAME.azurehdinsight.net/#/main/services/HIVE/summary umístění název_clusteru, kde je název clusteru interaktivních dotazů.From a web browser, navigate to https://CLUSTERNAME.azurehdinsight.net/#/main/services/HIVE/summary where CLUSTERNAME is the name of your Interactive Query cluster. Klikněte na HiveServer2 Interactive (interaktivní).Click on HiveServer2 Interactive. Zobrazí se plně kvalifikovaný název domény (FQDN) hlavního uzlu, na kterém běží LLAP, jak je znázorněno na snímku obrazovky.You will see the Fully Qualified Domain Name (FQDN) of the head node on which LLAP is running as shown in the screenshot. Nahraďte <llap-headnode> touto hodnotou.Replace <llap-headnode> with this value.

      Hlavní uzel konektoru skladu podregistru

    • Pomocí příkazu SSH se připojte ke clusteru interaktivních dotazů.Use ssh command to connect to your Interactive Query cluster. Vyhledejte default_realm parametr v /etc/krb5.conf souboru.Look for default_realm parameter in the /etc/krb5.conf file. Nahraďte <AAD-DOMAIN> touto hodnotou jako řetězec velkými písmeny, jinak se přihlašovací údaje nenaleznou.Replace <AAD-DOMAIN> with this value as an uppercase string, otherwise the credential won't be found.

      Doména AAD konektoru skladu v podregistru

    • Například hive/hn0-ng36ll.mjry42ikpruuxgs2qy2kpg4q5e.cx.internal.cloudapp.net@PKRSRVUQVMAE6J85.D2.INTERNAL.CLOUDAPP.NET .For instance, hive/hn0-ng36ll.mjry42ikpruuxgs2qy2kpg4q5e.cx.internal.cloudapp.net@PKRSRVUQVMAE6J85.D2.INTERNAL.CLOUDAPP.NET.

  3. Podle potřeby uložte změny a restartujte součásti.Save changes and restart components as needed.

Využití konektoru skladu v podregistruHive Warehouse Connector usage

Můžete si vybrat mezi několika různými způsoby, jak se připojit ke clusteru interaktivních dotazů a provádět dotazy pomocí konektoru skladu z podregistru.You can choose between a few different methods to connect to your Interactive Query cluster and execute queries using the Hive Warehouse Connector. Mezi podporované metody patří následující nástroje:Supported methods include the following tools:

Níže jsou uvedeny některé příklady, jak se připojit k umožní ze Sparku.Below are some examples to connect to HWC from Spark.

Spark – prostředíSpark-shell

  1. Pomocí příkazu SSH se připojte ke clusteru Apache Spark.Use ssh command to connect to your Apache Spark cluster. Níže uvedený příkaz upravte tak, že ho nahradíte názvem clusteru a pak zadáte tento příkaz:Edit the command below by replacing CLUSTERNAME with the name of your cluster, and then enter the command:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Z relace SSH spusťte následující příkaz, abyste si poznamenali hive-warehouse-connector-assembly verzi:From your ssh session, execute the following command to note the hive-warehouse-connector-assembly version:

    ls /usr/hdp/current/hive_warehouse_connector
    
  3. Níže uvedený kód upravte s hive-warehouse-connector-assembly výše uvedenou verzí.Edit the code below with the hive-warehouse-connector-assembly version identified above. Pak spusťte příkaz pro spuštění prostředí Spark:Then execute the command to start the spark shell:

    spark-shell --master yarn \
    --jars /usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-<VERSION>.jar \
    --conf spark.security.credentials.hiveserver2.enabled=false
    
  4. Po spuštění prostředí Spark se dá instance konektoru skladu podregistru spustit pomocí následujících příkazů:After starting the spark shell, a Hive Warehouse Connector instance can be started using the following commands:

    import com.hortonworks.hwc.HiveWarehouseSession
    val hive = HiveWarehouseSession.session(spark).build()
    

Spark – odesláníSpark-submit

Po sestavení kódu Scala/Java společně se závislostmi na jar sestavení použijte následující příkaz ke spuštění aplikace Spark.Once you build the scala/java code along with the dependencies into an assembly jar, use the below command to launch a Spark application. Nahraďte <VERSION> a <APP_JAR_PATH> skutečnými hodnotami.Replace <VERSION>, and <APP_JAR_PATH> with the actual values.

  • Model PŘÍZového klientaYARN Client mode

    spark-submit \
    --class myHwcApp \
    --master yarn \
    --deploy-mode client \
    --jars /usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-<VERSION>.jar \
    --conf spark.security.credentials.hiveserver2.enabled=false
    /<APP_JAR_PATH>/myHwcAppProject.jar
    
  • Režim clusteru PŘÍZeYARN Cluster mode

    spark-submit \
    --class myHwcApp \
    --master yarn \
    --deploy-mode cluster \
    --jars /usr/hdp/current/hive_warehouse_connector/hive-warehouse-connector-assembly-<VERSION>.jar \
    --conf spark.security.credentials.hiveserver2.enabled=true
    /<APP_JAR_PATH>/myHwcAppProject.jar
    

Pro Python přidejte taky následující konfiguraci.For Python, add the following configuration as well.

--py-files /usr/hdp/current/hive_warehouse_connector/pyspark_hwc-<VERSION>.zip

Spouštění dotazů v clusterech Balíček zabezpečení podniku (ESP)Run queries on Enterprise Security Package (ESP) clusters

Použijte kinit před spuštěním Spark-Shell nebo Spark-Submit.Use kinit before starting the spark-shell or spark-submit. Nahraďte uživatelské jméno názvem účtu domény s oprávněním k přístupu ke clusteru a spusťte následující příkaz:Replace USERNAME with the name of a domain account with permissions to access the cluster, then execute the following command:

kinit USERNAME

Zabezpečení dat v clusterech Spark ESPSecuring data on Spark ESP clusters

  1. Vytvořte tabulku demo s ukázkovými daty zadáním následujících příkazů:Create a table demo with some sample data by entering the following commands:

    create table demo (name string);
    INSERT INTO demo VALUES ('HDinsight');
    INSERT INTO demo VALUES ('Microsoft');
    INSERT INTO demo VALUES ('InteractiveQuery');
    
  2. Zobrazte obsah tabulky pomocí následujícího příkazu.View the table's contents with the following command. Před použitím této zásady demo tabulka zobrazuje celý sloupec.Before applying the policy, the demo table shows the full column.

    hive.executeQuery("SELECT * FROM demo").show()
    

    Ukázková tabulka před použitím zásad Ranger

  3. Použijte zásadu maskování sloupců, která zobrazuje jenom poslední čtyři znaky sloupce.Apply a column masking policy that only shows the last four characters of the column.

    1. Přejít do uživatelského rozhraní správce Ranger na adrese https://LLAPCLUSTERNAME.azurehdinsight.net/ranger/ .Go to the Ranger Admin UI at https://LLAPCLUSTERNAME.azurehdinsight.net/ranger/.

    2. Klikněte na podregistr Service pro váš cluster v podregistru.Click on the Hive service for your cluster under Hive. Ranger Service Managerranger service manager

    3. Klikněte na kartu maskování a pak přidejte nové zásady .Click on the Masking tab and then Add New Policy

      seznam zásad podregistru Ranger konektoru skladu podregistru

    4. Zadejte požadovaný název zásad.Provide a desired policy name. Vyberte databázi: výchozí, tabulka podregistru: Ukázka, sloupec podregistru: název, uživatel: Rsadmin2, typy přístupu: Vybrata částečná maska: Zobrazit poslední 4 v nabídce možností výběru maskování .Select database: Default, Hive table: demo, Hive column: name, User: rsadmin2, Access Types: select, and Partial mask: show last 4 from the Select Masking Option menu. Klikněte na Přidat.Click Add. vytvořit zásaducreate policy

  4. Znovu zobrazte obsah tabulky.View the table's contents again. Po použití zásad Ranger uvidíme jenom poslední čtyři znaky sloupce.After applying the ranger policy, we can see only the last four characters of the column.

    Ukázková tabulka po použití zásad Ranger

Další krokyNext steps