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.
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íchhive.server2.tez.interactive.queueHive).
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ů
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ě.
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
Ve webovém prohlížeči přejděte na místo,
https://LLAPCLUSTERNAME.azurehdinsight.net/#/main/services/HIVEkde LLAPCLUSTERNAME je název vašeho clusteru interaktivních dotazů.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.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.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.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
Ve webovém prohlížeči přejděte na místo,
https://CLUSTERNAME.azurehdinsight.net/#/main/services/SPARK2/configskde název_clusteru je název vašeho clusteru Apache Spark.Rozbalte vlastní spark2 – výchozí.
Vyberte Přidat vlastnost... a přidejte následující konfigurace:
Konfigurace Hodnota spark.datasource.hive.warehouse.load.staging.dirwasbs://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ázvemSTORAGE_ACCOUNT_NAMESTORAGE_CONTAINER_NAMEkontejneru úložiště.spark.sql.hive.hiveserver2.jdbc.urlHodnota, kterou jste získali dříve z adresy URL HiveServer2 Interactive JDBC spark.datasource.hive.warehouse.metastoreUriHodnota, kterou jste získali dříve z hive.metastore.uris. spark.security.credentials.hiveserver2.enabledtruepro režim clusteru YARNfalsea pro režim klienta YARN.spark.hadoop.hive.zookeeper.quorumHodnota, kterou jste získali dříve z hive.zookeeper.quorum. spark.hadoop.hive.llap.daemon.service.hostsHodnota, kterou jste získali dříve z hive.llap.daemon.service.hosts. 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.
Ve webovém uživatelském rozhraní Ambari clusteru Spark přejděte na Spark2 > CONFIGS > Vlastní výchozí hodnoty Spark2.
Aktualizujte následující vlastnost.
Konfigurace Hodnota spark.sql.hive.hiveserver2.jdbc.url.principalhive/<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/summaryInteractive 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.
Pomocí příkazu ssh se připojte ke svému Interactive Query clusteru. Vyhledejte
default_realmv 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.
Například
hive/hn*.mjry42ikpruuxgs2qy2kpg4q5e.cx.internal.cloudapp.net@PKRSRVUQVMAE6J85.D2.INTERNAL.CLOUDAPP.NET.
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í
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.netZ relace SSH spusťte následující příkaz, abyste si poznamenali
hive-warehouse-connector-assemblyverzi:ls /usr/hdp/current/hive_warehouse_connectorNíže uvedený kód upravte s
hive-warehouse-connector-assemblyvýš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=falsePo 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.jarRež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
Zadáním následujících
demopří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');Obsah tabulky zobrazíte pomocí následujícího příkazu. Před použitím zásady se
demov tabulce zobrazí celý sloupec.hive.executeQuery("SELECT * FROM demo").show()
Použijte zásadu maskování sloupců, která zobrazuje jenom poslední čtyři znaky sloupce.
Přejděte do uživatelského rozhraní správce Ranger na
https://LLAPCLUSTERNAME.azurehdinsight.net/ranger/adrese .V části Hive klikněte na službu Hive pro váš cluster.
Klikněte na kartu Maskování a pak na Přidat novou zásadu.
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.
Znovu zobrazte obsah tabulky. Po použití zásad Ranger uvidíme jenom poslední čtyři znaky sloupce.