Integrace Apache Spark a Apache Hive pomocí konektoru skladu s podregistru v Azure HDInsight

Konektor Apache Hive Warehouse (umožní) je knihovna, která umožňuje snadnější práci s Apache Spark a Apache Hive. Podporuje úlohy, jako je přesun dat mezi datovými rámečky Sparku a tabulkami podregistru. Také nasměrováním datových proudů Sparku do tabulek podregistru. Konektor datového skladu pro podregistr funguje jako most mezi Sparkem a podregistrem. Podporuje také Scala, Java a Python jako programovací jazyky pro vývoj.

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.

Apache Hive nabízí podporu pro databázové transakce, které jsou atomické, konzistentní, izolované a trvalé (KYSELé). Další informace o KYSELINě a transakcích v podregistru najdete v tématu transakce podregistru. 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.

Apache Spark má strukturované rozhraní API pro streamování, které poskytuje možnosti streamování, které nejsou dostupné v 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ě. Samostatné metaúložiště může zajistit obtížnou interoperabilitu. Konektor pro skladiště podregistru usnadňuje používání Sparku a úlů společně. Knihovna umožní načítá data z procesů LLAP démonů do paralelního vykonavatele. Díky tomuto procesu je efektivnější a přizpůsobitelnější než standardní připojení JDBC z Sparku do podregistru.

Architektura konektoru skladu podregistru

Mezi operace podporované konektorem skladu podregistru patří:

  • Popis tabulky
  • Vytvoření tabulky pro data ve formátu ORC
  • Výběr dat Hivu a načtení datového rámce
  • Zápis datového rámce do Hivu v dávce
  • Spuštění aktualizačního příkazu Hive
  • Čtení tabulkových dat z Hivu, jejich transformace ve Sparku a zápis do nové tabulky Hive
  • Zápis datového rámce nebo streamu Sparku do Hivu pomocí HiveStreamingu

Hive Warehouse Connector nastavení

Důležité

  • Instance HiveServer2 Interactive nainstalovaná na clusterech Spark 2.4 Balíček zabezpečení podniku není podporovaná pro použití s Hive Warehouse Connector. Místo toho musíte nakonfigurovat samostatný cluster HiveServer2 Interactive pro hostování interaktivních úloh HiveServer2. Konfigurace Hive Warehouse Connector, která využívá jeden cluster Spark 2.4, není podporovaná.
  • Hive Warehouse Connector (HWC) se nepodporuje pro použití s clustery Interactive Query, ve kterých je povolená funkce správy úloh (WLM).
    Pokud máte jenom úlohy Sparku a chcete použít knihovnu HWC, ujistěte se, že cluster Interactive Query nemá povolenou funkci správy úloh (konfigurace není nastavená v konfiguracích hive.server2.tez.interactive.queue Hive).
    V případě scénáře, kdy existují úlohy Sparku (HWC) i nativní úlohy LLAP, musíte vytvořit dva samostatné clustery Interactive Query se sdílenou databází metastoru. Jeden cluster pro nativní úlohy LLAP, kde je možné podle potřeby povolit funkci WLM, a druhý cluster jenom pro úlohy HWC, kde by neměla být nakonfigurovaná funkce WLM. Je důležité si uvědomit, že můžete zobrazit plány prostředků WLM z obou clusterů, i když jsou povolené pouze v jednom clusteru. V clusteru, kde je funkce WLM zakázaná, nedělejte žádné změny plánů prostředků, protože by to mohlo mít vliv na funkci WLM v jiném clusteru.

Hive Warehouse Connector samostatné clustery pro Spark a Interactive Query úlohy. Postupujte podle těchto kroků a nastavte tyto clustery v Azure HDInsight.

Vytváření clusterů

  1. Vytvořte cluster HDInsight Spark 4.0 s účtem úložiště a vlastní virtuální sítí Azure. 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ě.

  2. Vytvořte cluster HDInsight Interactive Query (LLAP) 4,0 se stejným účtem úložiště a Azure Virtual Network jako cluster Spark.

Konfigurace nastavení umožní

Shromáždit předběžné informace

  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ů.

  2. Přejděte na summary > HiveServer2 Interactive JDBC URL a poznamenejte si hodnotu. Hodnota může být podobná: jdbc:hive2://<zookeepername1>.rekufuk2y2ce.bx.internal.cloudapp.net:2181,<zookeepername2>.rekufuk2y2ce.bx.internal.cloudapp.net:2181,<zookeepername3>.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. Hodnota může být podobná: <zookeepername1>.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:2181,<zookeepername2>.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:2181,<zookeepername3>.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:2181 .

  4. Přejděte na Konfigurace > Upřesnit > Obecné > podregistru. metastore. URI a poznamenejte si hodnotu. Hodnota může být podobná: thrift://iqgiro.rekufuk2y2cezcbowjkbwfnyvd.bx.internal.cloudapp.net:9083,thrift://hn*.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. Hodnota může být podobná: @llap0 .

Konfigurace nastavení clusteru Spark

  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.

  2. Rozbalte vlastní spark2 – výchozí.

    Konfigurace Spark2 Apache Ambari

  3. Vyberte Přidat vlastnost... a přidejte následující konfigurace:

    Konfigurace Hodnota
    spark.datasource.hive.warehouse.load.staging.dir wasbs://STORAGE_CONTAINER_NAME@STORAGE_ACCOUNT_NAME.blob.core.windows.net/tmp.
    Nastavte vhodný přípravný adresář kompatibilní s HDFS. 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. Nahraďte názvem účtu úložiště, který cluster používá, a názvem STORAGE_ACCOUNT_NAME STORAGE_CONTAINER_NAME kontejneru úložiště.
    spark.sql.hive.hiveserver2.jdbc.url Hodnota, kterou jste získali dříve z adresy URL HiveServer2 Interactive JDBC
    spark.datasource.hive.warehouse.metastoreUri Hodnota, kterou jste získali dříve z hive.metastore.uris.
    spark.security.credentials.hiveserver2.enabled true pro režim clusteru YARN false a pro režim klienta YARN.
    spark.hadoop.hive.zookeeper.quorum Hodnota, kterou jste získali dříve z hive.zookeeper.quorum.
    spark.hadoop.hive.llap.daemon.service.hosts Hodnota, kterou jste získali dříve z hive.llap.daemon.service.hosts.
  4. Uložte změny a restartujte všechny ovlivněné součásti.

Konfigurace HWC pro Balíček zabezpečení podniku (ESP)

Rozhraní Balíček zabezpečení podniku (ESP) poskytuje možnosti na podnikové úrovni, jako je ověřování na základě služby Active Directory, podpora více uživatelů a řízení přístupu na základě role pro clustery Apache Hadoop v Azure HDInsight. Další informace o ESP najdete v tématu Použití Balíček zabezpečení podniku ve službě HDInsight.

Kromě konfigurací uvedených v předchozí části přidejte následující konfiguraci pro použití HWC na clusterech ESP.

  1. Ve webovém uživatelském rozhraní Ambari clusteru Spark přejděte na Spark2 > CONFIGS > Vlastní výchozí hodnoty Spark2.

  2. Aktualizujte následující vlastnost.

    Konfigurace Hodnota
    spark.sql.hive.hiveserver2.jdbc.url.principal hive/<llap-headnode>@<AAD-Domain>
    • Ve webovém prohlížeči přejděte na místo, kde CLUSTERNAME je název vašeho https://CLUSTERNAME.azurehdinsight.net/#/main/services/HIVE/summary Interactive Query clusteru. Klikněte na HiveServer2 Interactive. Zobrazí se plně kvalifikovaný název domény (FQDN) uzlu, na kterém běží LLAP, jak je znázorněno na snímku obrazovky. Nahraďte <llap-headnode> touto hodnotou.

      Hlavní uzel konektoru hive warehouse

    • Pomocí příkazu ssh se připojte ke svému Interactive Query clusteru. Vyhledejte default_realm v souboru parametr /etc/krb5.conf . Nahraďte <AAD-DOMAIN> touto hodnotou jako řetězec velkými písmeny, jinak se přihlašovací údaje nenaleznou.

      Doména AAD konektoru skladu v podregistru

    • Například hive/hn*.mjry42ikpruuxgs2qy2kpg4q5e.cx.internal.cloudapp.net@PKRSRVUQVMAE6J85.D2.INTERNAL.CLOUDAPP.NET .

  3. Podle potřeby uložte změny a restartujte součásti.

Využití konektoru skladu v podregistru

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. Mezi podporované metody patří následující nástroje:

Níže jsou uvedeny některé příklady, jak se připojit k umožní ze Sparku.

Spark – prostředí

  1. Pomocí příkazu SSH se připojte ke clusteru Apache Spark. Níže uvedený příkaz upravte tak, že ho nahradíte názvem clusteru a pak zadáte tento příkaz:

    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:

    ls /usr/hdp/current/hive_warehouse_connector
    
  3. Níže uvedený kód upravte s hive-warehouse-connector-assembly výše uvedenou verzí. Pak spusťte příkaz pro spuštění prostředí Spark:

    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ů:

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

Spark – odeslání

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. Nahraďte <VERSION> a <APP_JAR_PATH> skutečnými hodnotami.

  • Režim klienta YARN

    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 YARN

    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 také následující konfiguraci.

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

Spouštění dotazů v Balíček zabezpečení podniku (ESP)

Použijte kinit před spuštěním prostředí spark-shell nebo spark-submit. Nahraďte USERNAME názvem účtu domény oprávněními pro přístup ke clusteru a pak spusťte následující příkaz:

kinit USERNAME

Zabezpečení dat v clusterech Spark ESP

  1. Zadáním následujících demo příkazů vytvořte tabulku s ukázkovými daty:

    create table demo (name string);
    INSERT INTO demo VALUES ('HDinsight');
    INSERT INTO demo VALUES ('Microsoft');
    INSERT INTO demo VALUES ('InteractiveQuery');
    
  2. Obsah tabulky zobrazíte pomocí následujícího příkazu. Před použitím zásady se demo v tabulce zobrazí celý sloupec.

    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.

    1. Přejděte do uživatelského rozhraní správce Ranger na https://LLAPCLUSTERNAME.azurehdinsight.net/ranger/ adrese .

    2. V části Hive klikněte na službu Hive pro váš cluster. ranger service manager

    3. Klikněte na kartu Maskování a pak na Přidat novou zásadu.

      seznam zásad hive hive connectoru ranger

    4. Zadejte název požadované zásady. Vyberte databáze: Výchozí, Tabulka Hive: demo, Sloupec Hive: name, Uživatel: rsadmin2, Typy přístupu: select a Částečná maska: zobrazit poslední 4 z nabídky Vybrat možnost maskování. Klikněte na Přidat. vytvoření zásady

  4. Znovu zobrazte obsah tabulky. Po použití zásad Ranger uvidíme jenom poslední čtyři znaky sloupce.

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

Další kroky