Tworzenie aplikacji platformy Apache Spark dla klastra usługi HDInsight przy użyciu zestawu narzędzi Azure Toolkit for Eclipse

Użyj narzędzi HDInsight Tools in Azure Toolkit for Eclipse , aby tworzyć aplikacje platformy Apache Spark napisane w języku Scala i przesyłać je do klastra Spark usługi Azure HDInsight bezpośrednio ze środowiska IDE środowiska Eclipse. Możesz użyć wtyczki HDInsight Tools na kilka różnych sposobów:

  • Aby utworzyć i przesłać aplikację Scala Spark w klastrze Spark usługi HDInsight.
  • Aby uzyskać dostęp do zasobów klastra Platformy Spark w usłudze Azure HDInsight.
  • Aby utworzyć i uruchomić lokalnie aplikację Scala Spark.

Wymagania wstępne

Instalowanie wymaganych wtyczek

Instalowanie zestawu Azure Toolkit for Eclipse

Aby uzyskać instrukcje dotyczące instalacji, zobacz Instalowanie zestawu narzędzi Azure Toolkit for Eclipse.

Instalowanie wtyczki Scala

Po otwarciu środowiska Eclipse narzędzia HDInsight Tools automatycznie wykrywają, czy zainstalowano wtyczkę Scala. Wybierz przycisk OK , aby kontynuować, a następnie postępuj zgodnie z instrukcjami, aby zainstalować wtyczkę z witryny Eclipse Marketplace. Uruchom ponownie środowisko IDE po zakończeniu instalacji.

Automatic installation of the Scala plug-in.

Potwierdzanie wtyczek

  1. Przejdź do pozycji Pomoc>w witrynie Eclipse Marketplace....

  2. Wybierz kartę Zainstalowano.

  3. Powinien zostać wyświetlony co najmniej:

    • Zestaw narzędzi Azure Toolkit for Eclipse <w wersji>.
    • Wersja> środowiska IDE <języka Scala.

Zaloguj się do Twojej subskrypcji platformy Azure.

  1. Uruchom środowisko ECLIPSE IDE.

  2. Przejdź do okna>Pokaż widok>inny...>Zaloguj się...

  3. W oknie dialogowym Pokaż widok przejdź do usługi Azure Azure>Explorer, a następnie wybierz pozycję Otwórz.

    Apache Spark Eclipse show view.

  4. W eksploratorze platformy Azure kliknij prawym przyciskiem myszy węzeł platformy Azure, a następnie wybierz pozycję Zaloguj.

  5. W oknie dialogowym Logowanie do platformy Azure wybierz metodę uwierzytelniania, wybierz pozycję Zaloguj i zakończ proces logowania.

    Apache Spark Eclipse Azure Sign.

  6. Po zalogowaniu okno dialogowe Subskrypcje zawiera listę wszystkich subskrypcji platformy Azure skojarzonych z poświadczeniami. Naciśnij przycisk Wybierz , aby zamknąć okno dialogowe.

    Select Subscriptions dialog box.

  7. W programie Azure Explorer przejdź do usługi Azure HDInsight, aby wyświetlić klastry Spark usługi>HDInsight w ramach subskrypcji.

    HDInsight Spark clusters in Azure Explorer3.

  8. Możesz dodatkowo rozwinąć węzeł nazwy klastra, aby wyświetlić zasoby (na przykład konta magazynu) skojarzone z klastrem.

    Expanding a cluster name to see resources.

Klaster normalny można połączyć przy użyciu zarządzanej nazwy użytkownika systemu Ambari. Podobnie w przypadku klastra usługi HDInsight przyłączonego do domeny można połączyć za pomocą domeny i nazwy użytkownika, takiej jak user1@contoso.com.

  1. W eksploratorze platformy Azure kliknij prawym przyciskiem myszy pozycję HDInsight, a następnie wybierz pozycję Połącz klaster.

    Azure Explorer link cluster menu.

  2. Wprowadź nazwę klastra, nazwę użytkownika i hasło, a następnie wybierz przycisk OK. Opcjonalnie wprowadź wartość Konto magazynu, Klucz magazynu, a następnie wybierz pozycję Kontener magazynu, aby eksplorator magazynu działał w widoku drzewa po lewej stronie

    Link New HDInsight cluster dialog.

    Uwaga

    Używamy połączonego klucza magazynu, nazwy użytkownika i hasła, jeśli klaster jest zarówno zalogowany w subskrypcji platformy Azure, jak i połączony klaster. Azure Explorer storage accounts.

    W przypadku tylko użytkownika klawiatury, gdy bieżący fokus znajduje się na kluczu magazynu, należy użyć klawisza Ctrl+TAB , aby skoncentrować się na następnym polu w oknie dialogowym.

  3. Połączony klaster można zobaczyć w usłudze HDInsight. Teraz możesz przesłać aplikację do tego połączonego klastra.

    Azure Explorer hdi linked cluster.

  4. Możesz również odłączyć klaster z poziomu eksploratora platformy Azure.

    Azure Explorer unlinked cluster.

Konfigurowanie projektu Spark Scala dla klastra SPARK w usłudze HDInsight

  1. W obszarze roboczym Eclipse IDE wybierz pozycję Plik>nowy>projekt....

  2. W kreatorze Nowy projekt wybierz pozycję HdInsight Project>Spark w usłudze HDInsight (Scala). Następnie kliknij przycisk Dalej.

    Selecting the Spark on HDInsight (Scala) project.

  3. W oknie dialogowym Nowy projekt scala usługi HDInsight podaj następujące wartości, a następnie wybierz pozycję Dalej:

    • Wprowadź nazwę dla projektu.
    • W obszarze ŚRODOWISKA JRE upewnij się, że ustawienie Użyj środowiska wykonawczego JRE ma wartość JavaSE-1.7 lub nowsza.
    • W obszarze Biblioteka platformy Spark możesz wybrać opcję Użyj narzędzia Maven, aby skonfigurować zestaw Spark SDK. Nasze narzędzie integruje odpowiednią wersję zestawu Spark SDK i zestawu Scala SDK. Możesz również ręcznie wybrać opcję Dodaj zestaw SDK platformy Spark, pobrać i dodać zestaw Spark SDK.

    New HDInsight Scala Project dialog box.

  4. W następnym oknie dialogowym przejrzyj szczegóły, a następnie wybierz pozycję Zakończ.

Tworzenie aplikacji Scala dla klastra Spark usługi HDInsight

  1. W Eksploratorze pakietów rozwiń utworzony wcześniej projekt. Kliknij prawym przyciskiem myszy pozycję src, wybierz pozycję Nowy>inny....

  2. W oknie dialogowym Wybieranie kreatora wybierz pozycję Scala Wizards Scala Object (Kreatorzy>scala). Następnie kliknij przycisk Dalej.

    Select a wizard Create a Scala Object.

  3. W oknie dialogowym Tworzenie nowego pliku wprowadź nazwę obiektu, a następnie wybierz pozycję Zakończ. Zostanie otwarty edytor tekstów.

    New File Wizard Create New File.

  4. W edytorze tekstów zastąp bieżącą zawartość poniższym kodem:

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    
    object MyClusterApp{
        def main (arg: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("MyClusterApp")
        val sc = new SparkContext(conf)
    
        val rdd = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
        //find the rows that have only one digit in the seventh column in the CSV
        val rdd1 =  rdd.filter(s => s.split(",")(6).length() == 1)
    
        rdd1.saveAsTextFile("wasbs:///HVACOut")
        }
    }
    
  5. Uruchom aplikację w klastrze spark usługi HDInsight:

    a. W Eksploratorze pakietów kliknij prawym przyciskiem myszy nazwę projektu, a następnie wybierz pozycję Prześlij aplikację Spark do usługi HDInsight.

    b. W oknie dialogowym Przesyłanie platformy Spark podaj następujące wartości, a następnie wybierz pozycję Prześlij:

    • W polu Nazwa klastra wybierz klaster SPARK usługi HDInsight, na którym chcesz uruchomić aplikację.

    • Wybierz artefakt z projektu Eclipse lub wybierz go z dysku twardego. Wartość domyślna zależy od elementu, który klikniesz prawym przyciskiem myszy w Eksploratorze pakietów.

    • Na liście rozwijanej Nazwa klasy Main kreator przesyłania wyświetla wszystkie nazwy obiektów z projektu. Wybierz lub wprowadź ten, który chcesz uruchomić. Jeśli wybrano artefakt z dysku twardego, musisz ręcznie wprowadzić nazwę klasy głównej.

    • Ponieważ kod aplikacji w tym przykładzie nie wymaga żadnych argumentów wiersza polecenia ani odwołaj się do żądań JAR lub plików, możesz pozostawić pozostałe pola tekstowe puste.

      Apache Spark Submission dialog box.

  6. Karta Przesyłanie platformy Spark powinna rozpocząć wyświetlanie postępu. Aplikację można zatrzymać, wybierając czerwony przycisk w oknie Przesyłanie platformy Spark. Możesz również wyświetlić dzienniki dla tej konkretnej aplikacji, wybierając ikonę globusa (oznaczona niebieskim polem na obrazie).

    Apache Spark Submission window.

Uzyskiwanie dostępu do klastrów Platformy Spark w usłudze HDInsight i zarządzanie nimi przy użyciu narzędzi HDInsight w zestawie narzędzi Azure Toolkit for Eclipse

Różne operacje można wykonywać przy użyciu narzędzi USŁUGI HDInsight, w tym uzyskiwania dostępu do danych wyjściowych zadania.

Uzyskiwanie dostępu do widoku zadania

  1. W programie Azure Explorer rozwiń węzeł HDInsight, a następnie nazwę klastra Spark, a następnie wybierz pozycję Zadania.

    Azure Explorer Eclipse job view node.

  2. Wybierz węzeł Zadania. Jeśli wersja języka Java jest niższa niż 1.8, narzędzia HDInsight Tools automatycznie przypominają o zainstalowaniu wtyczki E(fx)clipse . Wybierz przycisk OK , aby kontynuować, a następnie postępuj zgodnie z kreatorem, aby zainstalować go z witryny Eclipse Marketplace i ponownie uruchomić środowisko Eclipse.

    Install missing plugin E(fx)clipse.

  3. Otwórz widok zadania w węźle Zadania . W okienku po prawej stronie na karcie Widok zadania platformy Spark są wyświetlane wszystkie aplikacje, które zostały uruchomione w klastrze. Wybierz nazwę aplikacji, dla której chcesz wyświetlić więcej szczegółów.

    Apache Eclipse view job logs details.

    Następnie możesz wykonać dowolną z tych akcji:

    • Zatrzymaj wskaźnik myszy na grafie zadania. Wyświetla podstawowe informacje o uruchomionym zadaniu. Wybierz wykres zadania i zobaczysz etapy i informacje generowane przez każde zadanie.

      Apache Spark job graph stage info.

    • Wybierz kartę Dziennik , aby wyświetlić często używane dzienniki, w tym Driver Stderr, Driver Stdout i Directory Info.

      Apache Spark Eclipse job log info.

    • Otwórz interfejs użytkownika historii platformy Spark i interfejs użytkownika usługi Apache Hadoop YARN (na poziomie aplikacji), wybierając hiperlinki w górnej części okna.

Uzyskiwanie dostępu do kontenera magazynu dla klastra

  1. W programie Azure Explorer rozwiń węzeł główny usługi HDInsight , aby wyświetlić listę dostępnych klastrów spark usługi HDInsight.

  2. Rozwiń nazwę klastra, aby wyświetlić konto magazynu i domyślny kontener magazynu dla klastra.

    Storage account and default storage container.

  3. Wybierz nazwę kontenera magazynu skojarzona z klastrem. W okienku po prawej stronie kliknij dwukrotnie folder HVACOut . Otwórz jeden z plików części, aby wyświetlić dane wyjściowe aplikacji.

Uzyskiwanie dostępu do serwera historii platformy Spark

  1. W eksploratorze platformy Azure kliknij prawym przyciskiem myszy nazwę klastra Spark, a następnie wybierz pozycję Otwórz interfejs użytkownika historii platformy Spark. Po wyświetleniu monitu wprowadź poświadczenia administratora dla klastra. Określono je podczas aprowizacji klastra.

  2. Na pulpicie nawigacyjnym serwera historii platformy Spark użyjesz nazwy aplikacji, aby wyszukać właśnie uruchomioną aplikację. W poprzednim kodzie należy ustawić nazwę aplikacji przy użyciu polecenia val conf = new SparkConf().setAppName("MyClusterApp"). Dlatego nazwa aplikacji platformy Spark to MyClusterApp.

Uruchamianie portalu Apache Ambari

  1. W eksploratorze platformy Azure kliknij prawym przyciskiem myszy nazwę klastra Spark, a następnie wybierz polecenie Otwórz portal zarządzania klastrem (Ambari).

  2. Po wyświetleniu monitu wprowadź poświadczenia administratora dla klastra. Określono je podczas aprowizacji klastra.

Zarządzanie subskrypcjami platformy Azure

Domyślnie narzędzie HDInsight w zestawie narzędzi Azure Toolkit for Eclipse wyświetla listę klastrów Spark ze wszystkich subskrypcji platformy Azure. W razie potrzeby możesz określić subskrypcje, dla których chcesz uzyskać dostęp do klastra.

  1. W eksploratorze platformy Azure kliknij prawym przyciskiem myszy węzeł główny platformy Azure , a następnie wybierz pozycję Zarządzaj subskrypcjami.

  2. W oknie dialogowym wyczyść pola wyboru subskrypcji, do której nie chcesz uzyskać dostępu, a następnie wybierz pozycję Zamknij. Możesz również wybrać pozycję Wyloguj się , jeśli chcesz wylogować się z subskrypcji platformy Azure.

Lokalne uruchamianie aplikacji Spark Scala

Narzędzia HDInsight Tools w zestawie narzędzi Azure Toolkit for Eclipse umożliwiają uruchamianie aplikacji Spark Scala lokalnie na stacji roboczej. Zazwyczaj te aplikacje nie potrzebują dostępu do zasobów klastra, takich jak kontener magazynu, i można je uruchamiać i testować lokalnie.

Warunek wstępny

Podczas uruchamiania lokalnej aplikacji Spark Scala na komputerze z systemem Windows może wystąpić wyjątek, jak wyjaśniono w artykule SPARK-2356. Ten wyjątek występuje, ponieważ w systemie Windows brakuje WinUtils.exe .

Aby rozwiązać ten błąd, musisz Winutils.exe do lokalizacji, takiej jak C:\WinUtils\bin, a następnie dodać zmienną środowiskową HADOOP_HOME i ustawić wartość zmiennej na C\WinUtils.

Uruchamianie lokalnej aplikacji Spark Scala

  1. Uruchom środowisko Eclipse i utwórz projekt. W oknie dialogowym Nowy projekt wybierz następujące opcje, a następnie wybierz przycisk Dalej.

  2. W kreatorze Nowy projekt wybierz pozycję HdInsight Project>Spark on HDInsight Local Run Sample (Scala). Następnie kliknij przycisk Dalej.

    New project selects a wizard dialog.

  3. Aby podać szczegóły projektu, wykonaj kroki od 3 do 6 z wcześniejszej sekcji Konfigurowanie projektu Spark Scala dla klastra Spark w usłudze HDInsight.

  4. Szablon dodaje przykładowy kod (LogQuery) w folderze src , który można uruchomić lokalnie na komputerze.

    Location of LogQuery local scala application.

  5. Kliknij prawym przyciskiem myszy pozycję LogQuery.scala i wybierz polecenie Uruchom jako>1 aplikację scala. Dane wyjściowe podobne do tych są wyświetlane na karcie Konsola :

    Spark application local run result.

Rola tylko dla czytelnika

Gdy użytkownicy przesyłają zadanie do klastra z uprawnieniami roli tylko dla czytelnika, wymagane są poświadczenia systemu Ambari.

  1. Zaloguj się przy użyciu konta roli tylko dla czytelnika.

  2. W programie Azure Explorer rozwiń węzeł HDInsight, aby wyświetlić klastry usługi HDInsight , które znajdują się w twojej subskrypcji. Klastry oznaczone jako "Role:Reader" mają uprawnienia tylko do roli tylko czytelnika.

    HDInsight Spark clusters in Azure Explorer role reader.

  3. Kliknij prawym przyciskiem myszy klaster z uprawnieniem tylko do odczytu. Wybierz pozycję Połącz ten klaster z menu kontekstowego, aby połączyć klaster. Wprowadź nazwę użytkownika i hasło systemu Ambari.

    HDInsight Spark clusters in Azure Explorer link.

  4. Jeśli klaster zostanie pomyślnie połączony, usługa HDInsight zostanie odświeżona. Etap klastra zostanie połączony.

    HDInsight Spark clusters in Azure Explorer linked.

  1. Kliknij węzeł Zadania , zostanie wyświetlone okno Odmowa dostępu do zadań klastra .

  2. Kliknij pozycję Połącz ten klaster , aby połączyć klaster.

    HDInsight Spark clusters in Azure Explorer9.

  1. Utwórz projekt usługi HDInsight.

  2. Kliknij prawym przyciskiem myszy pakiet. Następnie wybierz pozycję Prześlij aplikację Spark do usługi HDInsight.

    HDInsight Spark clusters in Azure Explorer submit.

  3. Wybierz klaster z uprawnieniem tylko do odczytu dla nazwy klastra. Zostanie wyświetlony komunikat ostrzegawczy. Możesz kliknąć pozycję Połącz ten klaster, aby połączyć klaster .

    HDInsight Spark clusters in Azure Explorer link this.

Wyświetlanie kont magazynu

  • W przypadku klastrów z uprawnieniami tylko do odczytu kliknij węzeł Konta magazynu, zostanie wyświetlone okno Odmowa dostępu do magazynu.

    HDInsight Spark clusters in Azure Explorer storage.

    HDInsight Spark clusters in Azure Explorer denied.

  • W przypadku połączonych klastrów kliknij węzeł Konta magazynu, zostanie wyświetlone okno Odmowa dostępu do magazynu.

    HDInsight Spark clusters in Azure Explorer denied2.

Znane problemy

W przypadku korzystania z linku do klastra zalecamy podanie poświadczeń magazynu.

link cluster with storage credential eclipses.

Istnieją dwa tryby przesyłania zadań. Jeśli poświadczenie magazynu zostanie podane, tryb wsadowy będzie używany do przesyłania zadania. W przeciwnym razie zostanie użyty tryb interaktywny. Jeśli klaster jest zajęty, może zostać wyświetlony poniższy błąd.

eclipse get error when cluster busy.

eclipse get error when cluster busy yarn.

Zobacz też

Scenariusze

Tworzenie i uruchamianie aplikacji

Narzędzia i rozszerzenia

Zarządzanie zasobami