Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dowiedz się, jak używać usługi Apache Livy, interfejsu API REST platformy Apache Spark, który służy do przesyłania zadań zdalnych do klastra Spark usługi Azure HDInsight. Aby uzyskać szczegółową dokumentację, zobacz Apache Livy.
Za pomocą usługi Livy można uruchamiać interaktywne powłoki Spark lub przesyłać zadania wsadowe do uruchamiania na platformie Spark. W tym artykule omówiono używanie usługi Livy do przesyłania zadań wsadowych. Fragmenty kodu w tym artykule używają biblioteki cURL do tworzenia wywołań interfejsu API REST do punktu końcowego usługi Livy Spark.
Wymagania wstępne
Klaster Apache Spark w usłudze HDInsight. Aby uzyskać instrukcje, zobacz Tworzenie klastra platformy Apache Spark w usłudze Azure HDInsight.
Prześlij zadanie wsadowe Apache Livy Spark
Przed przesłaniem zadania wsadowego należy przesłać plik JAR aplikacji do pamięci skojarzonej z klastrem. W tym celu możesz użyć narzędzia AzCopy, narzędzia wiersza polecenia. Istnieją różne inne klienci, których można użyć do przekazywania danych. Więcej informacji na ten temat można znaleźć w artykule Przekazywanie danych dla zadań platformy Apache Hadoop w usłudze HDInsight.
curl -k --user "admin:password" -v -H "Content-Type: application/json" -X POST -d '{ "file":"<path to application jar>", "className":"<classname in jar>" }' 'https://<spark_cluster_name>.azurehdinsight.net/livy/batches' -H "X-Requested-By: admin"
Przykłady
Jeśli plik jar znajduje się w przechowywaniu klastra (WASBS)
curl -k --user "admin:mypassword1!" -v -H "Content-Type: application/json" -X POST -d '{ "file":"wasbs://mycontainer@mystorageaccount.blob.core.windows.net/data/SparkSimpleTest.jar", "className":"com.microsoft.spark.test.SimpleFile" }' "https://mysparkcluster.azurehdinsight.net/livy/batches" -H "X-Requested-By: admin"
Jeśli chcesz przekazać nazwę pliku jar i nazwę klasy w ramach pliku wejściowego (w tym przykładzie input.txt)
curl -k --user "admin:mypassword1!" -v -H "Content-Type: application/json" -X POST --data @C:\Temp\input.txt "https://mysparkcluster.azurehdinsight.net/livy/batches" -H "X-Requested-By: admin"
Uzyskiwanie informacji na temat partii usługi Livy Spark uruchomionych w klastrze
Składnia:
curl -k --user "admin:password" -v -X GET "https://<spark_cluster_name>.azurehdinsight.net/livy/batches"
Przykłady
Jeśli chcesz pobrać wszystkie partie usługi Livy Spark uruchomione w klastrze:
curl -k --user "admin:mypassword1!" -v -X GET "https://mysparkcluster.azurehdinsight.net/livy/batches"
Jeśli chcesz pobrać określoną partię z danym identyfikatorem partii
curl -k --user "admin:mypassword1!" -v -X GET "https://mysparkcluster.azurehdinsight.net/livy/batches/{batchId}"
Usuń zadanie wsadowe usługi Livy Spark
curl -k --user "admin:mypassword1!" -v -X DELETE "https://<spark_cluster_name>.azurehdinsight.net/livy/batches/{batchId}"
Przykład
Usuwanie zadania wsadowego z identyfikatorem 5
wsadowym .
curl -k --user "admin:mypassword1!" -v -X DELETE "https://mysparkcluster.azurehdinsight.net/livy/batches/5"
Usługa Livy Spark i wysoka dostępność
Usługa Livy zapewnia wysoką dostępność zadań platformy Spark uruchomionych w klastrze. Oto kilka przykładów.
- Jeśli usługa Livy ulegnie awarii po przesłaniu zadania zdalnie do klastra Spark, zadanie będzie nadal działać w tle. Gdy Livy znowu działa, przywraca stan zadania i zgłasza go.
- Notatniki Jupyter dla HDInsight są obsługiwane przez Livy w tle. Jeśli notes uruchamia zadanie platformy Spark, a usługa Livy zostanie uruchomiona ponownie, notes będzie nadal uruchamiać komórki kodu.
Pokaż mi przykład
W tej sekcji przyjrzymy się przykładom użycia usługi Livy Spark do przesyłania zadania wsadowego, monitorowania postępu zadania, a następnie usuwania go. Aplikacja używana w tym przykładzie jest aplikacją opracowaną w artykule Create a standalone Scala application and to run on HDInsight Spark cluster (Tworzenie autonomicznej aplikacji Scala i uruchamiania w klastrze Spark usługi HDInsight). W poniższych krokach przyjęto założenie:
- Plik jar aplikacji został już skopiowany do konta magazynu skojarzonego z klastrem.
- Na komputerze, na którym próbujesz wykonać te kroki, zainstalowano bibliotekę CuRL.
Wykonaj następujące kroki:
Aby ułatwić korzystanie, ustaw zmienne środowiskowe. Ten przykład jest oparty na środowisku systemu Windows, popraw zmienne zgodnie z potrzebami dla danego środowiska. Zastąp
CLUSTERNAME
iPASSWORD
odpowiednimi wartościami.set clustername=CLUSTERNAME set password=PASSWORD
Sprawdź, czy platforma Livy Spark jest uruchomiona w klastrze. Możemy to zrobić, uzyskując listę uruchomionych partii. Jeśli uruchamiasz zadanie przy użyciu usługi Livy po raz pierwszy, wynik powinien zwrócić zero.
curl -k --user "admin:%password%" -v -X GET "https://%clustername%.azurehdinsight.net/livy/batches"
Powinny zostać wyświetlone dane wyjściowe podobne do następującego fragmentu kodu:
< HTTP/1.1 200 OK < Content-Type: application/json; charset=UTF-8 < Server: Microsoft-IIS/8.5 < X-Powered-By: ARR/2.5 < X-Powered-By: ASP.NET < Date: Fri, 20 Nov 2015 23:47:53 GMT < Content-Length: 34 < {"from":0,"total":0,"sessions":[]}* Connection #0 to host mysparkcluster.azurehdinsight.net left intact
Zwróć uwagę, że ostatni wiersz w danych wyjściowych wskazuje wartość total:0, co sugeruje brak uruchomionych partii.
Teraz prześlijmy zadanie wsadowe. Poniższy fragment kodu używa pliku wejściowego (input.txt) do przekazania nazwy pliku jar i nazwy klasy jako parametrów. Jeśli wykonujesz te kroki z komputera z systemem Windows, użycie pliku wejściowego jest zalecane.
curl -k --user "admin:%password%" -v -H "Content-Type: application/json" -X POST --data @C:\Temp\input.txt "https://%clustername%.azurehdinsight.net/livy/batches" -H "X-Requested-By: admin"
Parametry w pliku input.txt są definiowane w następujący sposób:
{ "file":"wasbs:///example/jars/SparkSimpleApp.jar", "className":"com.microsoft.spark.example.WasbIOTest" }
Powinny zostać wyświetlone dane wyjściowe podobne do następującego fragmentu kodu:
< HTTP/1.1 201 Created < Content-Type: application/json; charset=UTF-8 < Location: /0 < Server: Microsoft-IIS/8.5 < X-Powered-By: ARR/2.5 < X-Powered-By: ASP.NET < Date: Fri, 20 Nov 2015 23:51:30 GMT < Content-Length: 36 < {"id":0,"state":"starting","log":[]}* Connection #0 to host mysparkcluster.azurehdinsight.net left intact
Zwróć uwagę, jak ostatni wiersz danych wyjściowych mówi state:starting. Mówi również, id:0. Tutaj 0 to identyfikator partii.
Teraz możesz pobrać stan tej konkretnej partii przy użyciu identyfikatora partii.
curl -k --user "admin:%password%" -v -X GET "https://%clustername%.azurehdinsight.net/livy/batches/0"
Powinny zostać wyświetlone dane wyjściowe podobne do następującego fragmentu kodu:
< HTTP/1.1 200 OK < Content-Type: application/json; charset=UTF-8 < Server: Microsoft-IIS/8.5 < X-Powered-By: ARR/2.5 < X-Powered-By: ASP.NET < Date: Fri, 20 Nov 2015 23:54:42 GMT < Content-Length: 509 < {"id":0,"state":"success","log":["\t diagnostics: N/A","\t ApplicationMaster host: 10.0.0.4","\t ApplicationMaster RPC port: 0","\t queue: default","\t start time: 1448063505350","\t final status: SUCCEEDED","\t tracking URL: http://myspar.lpel.jx.internal.cloudapp.net:8088/proxy/application_1447984474852_0002/","\t user: root","15/11/20 23:52:47 INFO Utils: Shutdown hook called","15/11/20 23:52:47 INFO Utils: Deleting directory /tmp/spark-b72cd2bf-280b-4c57-8ceb-9e3e69ac7d0c"]}* Connection #0 to host mysparkcluster.azurehdinsight.net left intact
Dane wyjściowe pokazują teraz state:success, co sugeruje, że zadanie zostało ukończone pomyślnie.
Jeśli chcesz, możesz teraz usunąć partię.
curl -k --user "admin:%password%" -v -X DELETE "https://%clustername%.azurehdinsight.net/livy/batches/0"
Powinny zostać wyświetlone dane wyjściowe podobne do następującego fragmentu kodu:
< HTTP/1.1 200 OK < Content-Type: application/json; charset=UTF-8 < Server: Microsoft-IIS/8.5 < X-Powered-By: ARR/2.5 < X-Powered-By: ASP.NET < Date: Sat, 21 Nov 2015 18:51:54 GMT < Content-Length: 17 < {"msg":"deleted"}* Connection #0 to host mysparkcluster.azurehdinsight.net left intact
Ostatni wiersz danych wyjściowych pokazuje, że partia została pomyślnie usunięta. Usunięcie zadania, gdy jest ono uruchomione, powoduje również zatrzymanie zadania. Jeśli usuniesz zadanie, które zostało ukończone, pomyślnie lub w inny sposób, spowoduje całkowite usunięcie informacji o zadaniu.
Aktualizacje konfiguracji usługi Livy rozpoczynające się od wersji 3.5 usługi HDInsight
Klastry usługi HDInsight 3.5 i nowsze domyślnie wyłączają używanie lokalnych ścieżek plików w celu uzyskania dostępu do przykładowych plików danych lub plików jar. Zachęcamy do używania ścieżki wasbs://
zamiast tego do uzyskiwania dostępu do plików jar lub przykładowych plików danych z klastra.
Przesyłanie zadań usługi Livy dla klastra w sieci wirtualnej platformy Azure
Jeśli łączysz się z klastrem spark usługi HDInsight z poziomu sieci wirtualnej platformy Azure, możesz bezpośrednio nawiązać połączenie z usługą Livy w klastrze. W takim przypadku adres URL punktu końcowego usługi Livy to http://<IP address of the headnode>:8998/batches
. W tym miejscu 8998 jest portem, na którym usługa Livy działa w węźle głównym klastra. Aby uzyskać więcej informacji na temat uzyskiwania dostępu do usług na portach innych niż publiczne, zobacz Porty używane przez usługi Apache Hadoop w usłudze HDInsight.