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

Spuštění poznámkového bloku Apache Zeppelin

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

  2. Vytvořte nový poznámkový blok. V podokně záhlaví přejděte do poznámkového bloku>Vytvořit novou poznámku.

    Create a new Zeppelin notebook.

    Zadejte název poznámkového bloku a pak vyberte Vytvořit poznámku.

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

    Zeppelin notebook status.

  4. Načtěte vzorová data do dočasné tabulky. Při vytváření clusteru Spark v HDInsight se ukázkový datový soubor hvac.csvzkopí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:

    Create a temporary table from raw data.

    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.

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

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

    Run a Spark SQL statement using the notebook1.

  7. 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, Tempse 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.

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

      Run a Spark SQL statement using the notebook2.

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.

  1. Otevřete nastavení interpreta. V pravém horním rohu vyberte přihlášené uživatelské jméno a pak vyberte Interpret.

    Launch interpreter.

  2. Přejděte na livy2 a vyberte upravit.

    Change interpreter settings1.

  3. Přejděte na klíč livy.spark.jars.packagesa nastavte jeho hodnotu ve formátu group:id:version. Pokud tedy chcete použít balíček spark-csv , musíte nastavit hodnotu klíče na com.databricks:spark-csv_2.10:1.4.0.

    Change interpreter settings2.

    Výběrem možnosti Uložit a pak OK restartujte interpret Livy.

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

    Use external packages with Jupyter Notebook.

    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.

Download notebook.

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:

  1. 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 = *
    
  2. 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ých roles[]čá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.

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

    Launch interpreter.

  2. Přejděte na livy2 a vyberte restartovat.

    Restart the Livy interpreter.

  3. 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, Shirosite.xml, log4j /usr/hdp/current/zeppelin-server/conf nebo /etc/zeppelin/conf
Adresář PID /var/run/zeppelin

Povolení protokolování ladění

  1. Přejděte na https://CLUSTERNAME.azurehdinsight.net/#/main/services/ZEPPELIN/summary místo, kde clusterNAME je název vašeho clusteru.

  2. Přejděte na configs>Advanced zeppelin-log4j-properties>log4j_properties_content.

  3. Změnit log4j.appender.dailyfile.Threshold = INFO na log4j.appender.dailyfile.Threshold = DEBUG.

  4. Přidat log4j.logger.org.apache.zeppelin.realm=DEBUG.

  5. Uložte změny a restartujte službu.

Další kroky