Použití poznámkových bloků Apache Zeppelin s clusterem Apache Spark ve službě Azure HDInsight
Clustery HDInsight Spark zahrnují poznámkové bloky Apache Zeppelin . Pomocí poznámkových bloků můžete spouštět úlohy Apache Sparku. V tomto článku se dozvíte, jak používat poznámkový blok Zeppelin v clusteru HDInsight.
Požadavky
- Cluster Apache Spark ve službě HDInsight. Pokyny najdete v tématu Vytváření clusterů Apache Spark ve službě Azure HDInsight.
- Schéma identifikátoru URI pro primární úložiště clusterů. Schéma by bylo
wasb://
pro Azure Blob Storage,abfs://
pro Azure Data Lake Storage Gen2 neboadl://
Pro Azure Data Lake Storage Gen1. Pokud je pro Blob Storage povolený zabezpečený přenos, identifikátor URI by bylwasbs://
. Další informace najdete v tématu Vyžadování zabezpečeného přenosu ve službě Azure Storage .
Spuštění poznámkového bloku Apache Zeppelin
V přehledu clusteru Spark vyberte poznámkový blok Zeppelin z řídicích panelů clusteru. Zadejte přihlašovací údaje správce clusteru.
Poznámka:
K poznámkovému bloku Zeppelin pro váš cluster se také můžete dostat tak, že v prohlížeči otevřete následující adresu URL. Nahraďte CLUSTERNAME názvem clusteru:
https://CLUSTERNAME.azurehdinsight.net/zeppelin
Vytvořte nový poznámkový blok. V podokně záhlaví přejděte do poznámkového bloku>Vytvořit novou poznámku.
Zadejte název poznámkového bloku a pak vyberte Vytvořit poznámku.
Ujistěte se, že záhlaví poznámkového bloku zobrazuje stav připojení. Označuje se zelenou tečkou v pravém horním rohu.
Načtěte vzorová data do dočasné tabulky. Při vytváření clusteru Spark v HDInsight se ukázkový datový soubor
hvac.csv
zkopíruje do přidruženého účtu úložiště v části\HdiSamples\SensorSampleData\hvac
.Do prázdného odstavce vytvořeného ve výchozím nastavení v novém poznámkovém bloku vložte následující fragment kódu.
%livy2.spark //The above magic instructs Zeppelin to use the Livy Scala interpreter // Create an RDD using the default Spark context, sc val hvacText = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv") // Define a schema case class Hvac(date: String, time: String, targettemp: Integer, actualtemp: Integer, buildingID: String) // Map the values in the .csv file to the schema val hvac = hvacText.map(s => s.split(",")).filter(s => s(0) != "Date").map( s => Hvac(s(0), s(1), s(2).toInt, s(3).toInt, s(6) ) ).toDF() // Register as a temporary table called "hvac" hvac.registerTempTable("hvac")
Stiskněte SHIFT+ENTER nebo vyberte tlačítko Přehrát pro odstavec a spusťte fragment kódu. Stav v pravém rohu odstavce by měl pocházet od READY, PENDING, RUNNING to FINISHED. Výstup se zobrazí v dolní části stejného odstavce. Snímek obrazovky vypadá jako na následujícím obrázku:
Můžete také zadat název každého odstavce. V pravém rohu odstavce vyberte ikonu Nastavení (ozubené kolo) a pak vyberte Zobrazit název.
Poznámka:
Interpret %spark2 není podporován v poznámkových blocích Zeppelin ve všech verzích HDInsight a překladač %sh nebude podporován z HDInsight 4.0 dál.
V tabulce teď můžete spouštět příkazy
hvac
Spark SQL. Do nového odstavce vložte následující dotaz. Dotaz načte ID budovy. Rozdíl mezi cílovým a skutečnými teplotami pro každou budovu v daném datu. Stiskněte SHIFT+ENTER.%sql select buildingID, (targettemp - actualtemp) as temp_diff, date from hvac where date = "6/1/13"
Příkaz %sql na začátku říká poznámkovému bloku, aby používal interpret Livy Scala.
Výběrem ikony pruhového grafu změňte zobrazení. po výběru pruhového grafu se zobrazí nastavení, které vám umožní zvolit klíče a hodnoty. Následující snímek obrazovky ukazuje výstup.
Příkazy Spark SQL můžete také spouštět pomocí proměnných v dotazu. Další fragment kódu ukazuje, jak definovat proměnnou , v dotazu s možnými hodnotami,
Temp
se kterými se chcete dotazovat. Při prvním spuštění dotazu se automaticky vyplní rozevírací seznam hodnotami, které jste zadali pro proměnnou.%sql select buildingID, date, targettemp, (targettemp - actualtemp) as temp_diff from hvac where targettemp > "${Temp = 65,65|75|85}"
Vložte tento fragment kódu do nového odstavce a stiskněte SHIFT+ENTER. V rozevíracím seznamu Temp vyberte hodnotu 65.
Výběrem ikony pruhového grafu změňte zobrazení. Pak vyberte nastavení a proveďte následující změny:
Skupiny: Přidejte targettemp.
Hodnoty: 1. Odebrat datum. 2. Přidejte temp_diff. 3. Změňte agregátor ze sumy na AVG.
Následující snímek obrazovky ukazuje výstup.
Návody používat externí balíčky s poznámkovým blokem?
Poznámkový blok Zeppelin v clusteru Apache Spark ve službě HDInsight může používat externí balíčky, které nejsou součástí clusteru. V úložišti Maven vyhledejte úplný seznam dostupných balíčků. Můžete také získat seznam dostupných balíčků z jiných zdrojů. Úplný seznam balíčků, které přispěli komunitou, je například k dispozici ve Spark Packages.
V tomto článku se dozvíte, jak používat balíček spark-csv s poznámkovým blokem Jupyter.
Otevřete nastavení interpreta. V pravém horním rohu vyberte přihlášené uživatelské jméno a pak vyberte Interpret.
Přejděte na livy2 a vyberte upravit.
Přejděte na klíč
livy.spark.jars.packages
a nastavte jeho hodnotu ve formátugroup:id:version
. Pokud tedy chcete použít balíček spark-csv , musíte nastavit hodnotu klíče nacom.databricks:spark-csv_2.10:1.4.0
.Výběrem možnosti Uložit a pak OK restartujte interpret Livy.
Pokud chcete pochopit, jak získat hodnotu klíče zadaného výše, tady je postup.
a. Vyhledejte balíček v úložišti Maven. V tomto článku jsme použili spark-csv.
b. Z úložiště shromážděte hodnoty GroupId, ArtifactId a Version.
c. Zřetězení tří hodnot oddělených dvojtečkam (:).
com.databricks:spark-csv_2.10:1.4.0
Kde jsou uložené poznámkové bloky Zeppelin?
Poznámkové bloky Zeppelin se ukládají do hlavních uzlů clusteru. Pokud tedy cluster odstraníte, poznámkové bloky se odstraní i. Pokud chcete zachovat poznámkové bloky pro pozdější použití v jiných clusterech, musíte je po dokončení spuštění úloh exportovat. Pokud chcete exportovat poznámkový blok, vyberte ikonu Exportovat , jak je znázorněno na následujícím obrázku.
Tato akce uloží poznámkový blok jako soubor JSON do umístění pro stažení.
Poznámka:
V HDI 4.0 je cesta k adresáři poznámkového bloku zeppelin
/usr/hdp/<version>/zeppelin/notebook/<notebook_session_id>/
Např. /usr/hdp/4.1.17.10/zeppelin/2JMC9BZ8X/
Kde se liší jako v HDI 5.0 a nad touto cestou
/usr/hdp/<version>/zeppelin/notebook/<Kernel_name>/
Např. /usr/hdp/5.1.4.5/zeppelin/notebook/Scala/
Uložený název souboru se liší v HDI 5.0. Uloží se jako
<notebook_name>_<sessionid>.zpln
Např. testzeppelin_2JJK53XQA.zpln
V HDI 4.0 je název souboru pouze note.json uložen v adresáři session_id.
Např. /2JMC9BZ8X/note.json
HDI Zeppelin vždy ukládá poznámkový blok do cesty
/usr/hdp/<version>/zeppelin/notebook/
na místním disku hn0.Pokud chcete, aby byl poznámkový blok dostupný i po odstranění clusteru, můžete zkusit použít úložiště souborů Azure (pomocí protokolu SMB) a propojit ho s místní cestou. Další podrobnosti najdete v tématu Připojení sdílené složky Azure SMB v Linuxu.
Po jeho připojení můžete upravit konfiguraci zeppelin zeppelin.notebook.dir na připojenou cestu v uživatelském rozhraní ambari.
- Sdílené složky SMB jako úložiště GitNotebookRepo se nedoporučuje pro zeppelin verze 0.10.1.
Konfigurace Shiro
přístupu k interpretům Zeppelin v clusterech ENTERPRISE Security Package (ESP)
Jak je uvedeno výše, %sh
interpret není podporován ve službě HDInsight 4.0 dále. Vzhledem k tomu, že %sh
interpret zavádí potenciální problémy se zabezpečením, jako jsou například přístupové klávesové zkratky pomocí příkazů prostředí, byl odebrán také z clusterů ESP SLUŽBY HDInsight 3.6. Znamená to, že %sh
interpret není ve výchozím nastavení dostupný při kliknutí na Vytvořit novou poznámku nebo v uživatelském rozhraní interpreta.
Uživatelé privilegované domény můžou soubor použít Shiro.ini
k řízení přístupu k uživatelskému rozhraní interpreta. Pouze tito uživatelé mohou vytvářet nové %sh
interprety a nastavovat oprávnění pro každý nový %sh
interpret. Pokud chcete řídit přístup pomocí shiro.ini
souboru, postupujte takto:
Definujte novou roli pomocí existujícího názvu skupiny domén. V následujícím příkladu
adminGroupName
je skupina privilegovaných uživatelů v AAD. V názvu skupiny nepoužívejte speciální znaky ani prázdné znaky. Znaky po=
udělení oprávnění pro tuto roli.*
znamená, že skupina má úplná oprávnění.[roles] adminGroupName = *
Přidejte novou roli pro přístup k interpretům Zeppelinu. V následujícím příkladu mají všichni uživatelé
adminGroupName
přístup k interpretům Zeppelin a mohou vytvářet nové interprety. Mezi hranaté závorky můžete umístit několik rolí oddělenýchroles[]
čárkami. Uživatelé, kteří mají potřebná oprávnění, pak mají přístup k interpretům Zeppelinu.[urls] /api/interpreter/** = authc, roles[adminGroupName]
Příklad shiro.ini pro více skupin domén:
[main]
anyofrolesuser = org.apache.zeppelin.utils.AnyOfRolesUserAuthorizationFilter
[roles]
group1 = *
group2 = *
group3 = *
[urls]
/api/interpreter/** = authc, anyofrolesuser[group1, group2, group3]
Správa relací Livy
První odstavec kódu v poznámkovém bloku Zeppelin vytvoří novou relaci Livy ve vašem clusteru. Tato relace se sdílí ve všech poznámkových blocích Zeppelin, které vytvoříte později. Pokud se relace Livy z nějakého důvodu ukončí, úlohy se nespustí z poznámkového bloku Zeppelin.
V takovém případě musíte před spuštěním úloh z poznámkového bloku Zeppelin provést následující kroky.
Restartujte interpret Livy z poznámkového bloku Zeppelin. Uděláte to tak, že v pravém horním rohu vyberete přihlášené uživatelské jméno a pak vyberete Interpret.
Přejděte na livy2 a vyberte restartovat.
Spusťte buňku kódu z existujícího poznámkového bloku Zeppelin. Tento kód vytvoří novou relaci Livy v clusteru HDInsight.
Obecné informace
Ověření služby
Pokud chcete ověřit službu z Ambari, přejděte na https://CLUSTERNAME.azurehdinsight.net/#/main/services/ZEPPELIN/summary
místo, kde clusterNAME je název vašeho clusteru.
Pokud chcete službu ověřit z příkazového řádku, připojte se přes SSH k hlavnímu uzlu. Přepněte uživatele na zeppelin pomocí příkazu sudo su zeppelin
. Příkazy stavu:
Příkaz | Popis |
---|---|
/usr/hdp/current/zeppelin-server/bin/zeppelin-daemon.sh status |
Stav služby. |
/usr/hdp/current/zeppelin-server/bin/zeppelin-daemon.sh --version |
Verze služby. |
ps -aux | grep zeppelin |
Identifikace PID |
Umístění protokolu
Služba | Cesta |
---|---|
zeppelin-server | /usr/hdp/current/zeppelin-server/ |
Protokoly serveru | /var/log/zeppelin |
Interpret konfigurace, Shiro site.xml, log4j |
/usr/hdp/current/zeppelin-server/conf nebo /etc/zeppelin/conf |
Adresář PID | /var/run/zeppelin |
Povolení protokolování ladění
Přejděte na
https://CLUSTERNAME.azurehdinsight.net/#/main/services/ZEPPELIN/summary
místo, kde clusterNAME je název vašeho clusteru.Přejděte na configs>Advanced zeppelin-log4j-properties>log4j_properties_content.
Změnit
log4j.appender.dailyfile.Threshold = INFO
nalog4j.appender.dailyfile.Threshold = DEBUG
.Přidat
log4j.logger.org.apache.zeppelin.realm=DEBUG
.Uložte změny a restartujte službu.