Jupyter Notebook adalah alat pengembangan interaktif yang andal. Anda dapat menggunakannya untuk menulis dan menjalankan kode melalui antarmuka web serta melihat hasilnya secara real time tanpa perlu mengompilasi terlebih dahulu atau menjalankan skrip secara terpisah. Topik ini menjelaskan cara membangun lingkungan pengembangan untuk berinteraksi secara efisien dengan E-MapReduce (EMR) Serverless Spark.
Informasi latar belakang
Apache Livy berinteraksi dengan Spark melalui RESTful API, sehingga menyederhanakan komunikasi antara Spark dan server aplikasi. Untuk informasi lebih lanjut mengenai API Livy, lihat REST API.
Saat menggunakan Jupyter Notebook untuk pengembangan, Anda dapat memilih salah satu metode dalam tabel berikut untuk berinteraksi dengan EMR Serverless Spark sesuai kebutuhan bisnis Anda.
Metode | Skenario |
Metode 1: Gunakan citra Docker untuk membangun dan memulai lingkungan dengan cepat | Pilih metode ini jika Anda ingin membangun lingkungan pengembangan mandiri dengan cepat atau perlu mereproduksi pengaturan yang sama di mesin berbeda. |
Metode 2: Gunakan Plugin sparkmagic untuk membangun dan memulai lingkungan | Plugin sparkmagic pada Jupyter Notebook berinteraksi dengan Spark melalui RESTful API dan mendukung protokol Livy, Livy Lighter, serta Ilum. Anda dapat mengonfigurasi plugin sparkmagic dan memanggil API Livy dari Serverless Spark untuk membangun lingkungan pengembangan guna berinteraksi dengan kluster Spark jarak jauh. |
Prasyarat
Pastikan persyaratan berikut telah dipenuhi sesuai metode yang dipilih.
Metode 1: Gunakan citra Docker untuk membangun dan memulai lingkungan dengan cepat: Docker telah diinstal. Untuk informasi selengkapnya, lihat Dokumentasi resmi Docker.
Metode 2: Gunakan Plugin sparkmagic untuk membangun dan memulai lingkungan: Jupyter Notebook telah diinstal dan dijalankan. Untuk informasi selengkapnya, lihat Project Jupyter | Installing Jupyter.
Contoh ini menggunakan Jupyter Notebook dan Python 3.8.
Ruang kerja telah dibuat. Untuk informasi selengkapnya, lihat Buat ruang kerja.
Metode 1: Gunakan citra Docker untuk membangun dan memulai lingkungan dengan cepat
Langkah 1: Buat gerbang dan token
Buat dan mulai gerbang.
Buka halaman Gerbang.
Masuk ke Konsol EMR.
Pada bilah navigasi kiri, pilih .
Pada halaman Spark, klik nama ruang kerja yang dituju.
Pada halaman EMR Serverless Spark, klik di panel navigasi sebelah kiri.
Klik tab Livy Gateway.
Pada halaman Livy Gateway, klik Create Livy Gateway.
Pada halaman Create Gateway, masukkan Name (misalnya, Livy-gateway) dan klik Create.
Anda dapat mengonfigurasi parameter lain sesuai kebutuhan bisnis. Untuk informasi selengkapnya mengenai parameter tersebut, lihat Manajemen gerbang.
Pada halaman Livy Gateway, temukan gerbang yang telah dibuat dan klik Start pada kolom Tindakan.
Buat token.
Pada halaman Gateway, temukan Livy-gateway dan klik Token Management pada kolom Tindakan.
Klik Create Token.
Pada kotak dialog Create Token, masukkan Name (misalnya, Livy-token) dan klik OK.
Salin token tersebut.
PentingSetelah token dibuat, Anda harus segera menyalinnya. Token tidak dapat dilihat lagi setelah Anda meninggalkan halaman tersebut. Jika token kedaluwarsa atau hilang, atur ulang token atau buat token baru.
Langkah 2: Gunakan Docker untuk menarik dan menjalankan citra
Jalankan perintah berikut untuk menarik citra.
docker pull emr-registry-registry.cn-hangzhou.cr.aliyuncs.com/serverless-spark-public/emr-spark-jupyter:latestJalankan perintah berikut untuk menjalankan citra.
docker run -p <host_port>:8888 emr-registry-registry.cn-hangzhou.cr.aliyuncs.com/serverless-spark-public/emr-spark-jupyter:latest <endpoint> <token>Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
<host_port>Port host.
<endpoint>Titik akhir gerbang Livy.
Anda dapat melakukan langkah-langkah berikut untuk melihat titik akhir gerbang Livy: Pada halaman Livy Gateway, klik nama gerbang Livy yang telah dibuat. Titik akhir akan ditampilkan pada tab Overview.
<token>Token yang telah Anda salin pada Langkah 1.
Setelah citra dijalankan, informasi berikut dikembalikan:
[I 2024-09-23 05:38:14.429 ServerApp] jupyter_lsp | extension was successfully linked. [I 2024-09-23 05:38:14.432 ServerApp] jupyter_server_terminals | extension was successfully linked. [I 2024-09-23 05:38:14.436 ServerApp] jupyterlab | extension was successfully linked. [I 2024-09-23 05:38:14.439 ServerApp] notebook | extension was successfully linked. [I 2024-09-23 05:38:14.439 ServerApp] Writing Jupyter server cookie secret to /root/.local/share/jupyter/runtime/jupyter_cookie_secret [I 2024-09-23 05:38:14.596 ServerApp] notebook_shim | extension was successfully linked. [I 2024-09-23 05:38:14.624 ServerApp] notebook_shim | extension was successfully loaded. [I 2024-09-23 05:38:14.625 ServerApp] jupyter_lsp | extension was successfully loaded. [I 2024-09-23 05:38:14.626 ServerApp] jupyter_server_terminals | extension was successfully loaded. [I 2024-09-23 05:38:14.627 LabApp] JupyterLab extension loaded from /root/miniforge3/envs/livy/lib/python3.8/site-packages/jupyterlab [I 2024-09-23 05:38:14.627 LabApp] JupyterLab application directory is /root/miniforge3/envs/livy/share/jupyter/lab [I 2024-09-23 05:38:14.628 LabApp] Extension Manager is 'pypi'. [I 2024-09-23 05:38:14.637 ServerApp] jupyterlab | extension was successfully loaded. [I 2024-09-23 05:38:14.640 ServerApp] notebook | extension was successfully loaded. [I 2024-09-23 05:38:14.640 ServerApp] Serving notebooks from local directory: /root [I 2024-09-23 05:38:14.640 ServerApp] Jupyter Server 2.14.2 is running at: [I 2024-09-23 05:38:14.640 ServerApp] http://6eca53b95ca2:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b****** [I 2024-09-23 05:38:14.640 ServerApp] http://127.0.0.1:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b******Akses UI Jupyter.
Salin
http://127.0.0.1:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b******dari informasi yang dikembalikan ke bilah alamat browser untuk terhubung ke EMR Serverless Spark menggunakan Jupyter.CatatanJika Anda menghubungkan EMR Serverless Spark dari server jarak jauh, ganti
127.0.0.1dengan alamat IP aktual server tersebut.Jika
host_portbukan8888, ganti nomor port dengan nomor port aktual.
Langkah 3: Uji konektivitas
Pada halaman JupyterLab, klik PySpark di bagian Notebook.

Jalankan perintah berikut untuk mengkueri semua database yang dapat diakses:
spark.sql("show databases").show()Output seperti pada gambar berikut dikembalikan.

Metode 2: Gunakan Plugin sparkmagic untuk membangun dan memulai lingkungan
Langkah 1: Buat gerbang dan token
Buat dan mulai gerbang.
Buka halaman Gerbang.
Masuk ke Konsol EMR.
Pada bilah navigasi kiri, pilih .
Pada halaman Spark, klik nama ruang kerja yang dituju.
Pada halaman EMR Serverless Spark, klik di panel navigasi sebelah kiri.
Klik tab Livy Gateway.
Pada halaman Livy Gateway, klik Create Livy Gateway.
Pada halaman Create Gateway, masukkan Name (misalnya, Livy-gateway) dan klik Create.
Anda dapat mengonfigurasi parameter lain sesuai kebutuhan bisnis. Untuk informasi selengkapnya mengenai parameter tersebut, lihat Manajemen gerbang.
Pada halaman Livy Gateway, temukan gerbang yang telah dibuat dan klik Start pada kolom Tindakan.
Buat token.
Pada halaman Gateway, temukan Livy-gateway dan klik Token Management pada kolom Tindakan.
Klik Create Token.
Pada kotak dialog Create Token, masukkan Name (misalnya, Livy-token) dan klik OK.
Salin token tersebut.
PentingSetelah token dibuat, Anda harus segera menyalinnya. Token tidak dapat dilihat lagi setelah Anda meninggalkan halaman tersebut. Jika token kedaluwarsa atau hilang, atur ulang token atau buat token baru.
Langkah 2: Instal dan aktifkan Plugin sparkmagic
Jalankan perintah berikut untuk menginstal Plugin sparkmagic:
pip install sparkmagicAktifkan Plugin sparkmagic berdasarkan lingkungan Jupyter yang Anda gunakan.
Jika Anda menggunakan Jupyter Notebook, jalankan perintah berikut:
jupyter nbextension enable --py --sys-prefix widgetsnbextensionJika Anda menggunakan JupyterLab, jalankan perintah berikut:
jupyter labextension install "@jupyter-widgets/jupyterlab-manager"
Untuk informasi selengkapnya mengenai Plugin sparkmagic, lihat sparkmagic.
Langkah 3: Konfigurasikan dan mulai sesi Spark
Akses UI Jupyter. Untuk informasi selengkapnya, lihat JupyterLab.
Impor Plugin sparkmagic.
%load_ext sparkmagic.magicsUbah konfigurasi startup sesi.
Perpanjang periode timeout startup untuk mencegah kegagalan akibat penundaan penjadwalan sumber daya.
import sparkmagic.utils.configuration as conf conf.override("livy_session_startup_timeout_seconds", 1000)(Opsional) Sesuaikan konfigurasi sumber daya Spark.
Anda dapat menambahkan parameter seperti ttl dan conf. Untuk informasi selengkapnya, lihat Livy Docs - REST API.
Contoh konfigurasi berikut menunjukkan cara mengubah konfigurasi sumber daya driver.
%% spark config { "conf": { "spark.driver.cores": "1", "spark.driver.memory": "7g" } }
Buat sesi.
Buat sesi Spark di Jupyter Notebook menggunakan Python atau Scala sesuai kebutuhan bisnis Anda.
%spark add -s <session_name> -l python -u https://<endpoint> -a username -p <token>%spark add -s <session_name> -l scala -u https://<endpoint> -a username -p <token>Anda dapat mengganti informasi berikut sesuai situasi aktual Anda.
Parameter
Deskripsi
<session_name>Nama sesi Spark. Anda dapat menentukan nama kustom.
<endpoint>Public Endpoint atau Internal Endpoint yang Anda peroleh pada tab Overview.
Jika Anda menggunakan titik akhir internal, pastikan mesin tempat Jupyter dijalankan dan gerbang Livy ditempatkan di wilayah yang sama, serta ganti
https://menjadihttp://untuk titik akhir internal.<token>Token yang telah Anda salin pada Langkah 1.
Gambar berikut menunjukkan output saat Anda membuat sesi Spark menggunakan Python.

Tunggu selama 1 hingga 5 menit hingga status
idlemuncul pada kolom State. Hal ini menunjukkan bahwa sesi telah dibuat dan siap digunakan. Detail sesi akan ditampilkan pada UI. Selanjutnya, Anda dapat menggunakan PySpark untuk pengembangan interaktif. Anda juga dapat masuk ke konsol EMR Serverless Spark dan melihat informasi sesi pada tab Sessions gerbang Livy.Verifikasi sesi.
Setelah sesi dibuat, Anda dapat menggunakan
%%sparkuntuk menjalankan kode. Misalnya, jalankan kode berikut untuk melihat semua database di lingkungan Spark saat ini.%%spark spark.sql("show databases").show()Output seperti pada gambar berikut dikembalikan.

(Opsional) Langkah 4: Lepaskan sumber daya sesi
Lepaskan sumber daya sesi secara otomatis.
Jika sesi yang dibuat tidak aktif selama dua jam, sesi tersebut akan dihentikan secara otomatis.
Lepaskan sumber daya sesi secara manual.
Lepaskan sumber daya sesi menggunakan Plugin
sparkmagic.%spark delete -s <session_name>Lepaskan sumber daya sesi di konsol EMR Serverless Spark.
Pada tab Sessions gerbang Livy, temukan sesi yang telah dibuat dan klik Close pada kolom Tindakan.
