Tingkatkan kernel dengan magic perintah di EMR Studio - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tingkatkan kernel dengan magic perintah di EMR Studio

Gambaran Umum

EMR Studio dan EMR Notebooks mendukung perintah. magic Magicperintah, atau magics, adalah perangkat tambahan yang disediakan IPython kernel untuk membantu Anda menjalankan dan menganalisis data. IPythonadalah lingkungan shell interaktif yang dibangun dengan Python.

Amazon EMR juga mendukungSparkmagic, paket yang menyediakan kernel terkait Spark (PySpark, SparkR, dan kernel Scala) dengan perintah magic tertentu dan yang menggunakan Livy di cluster untuk mengirimkan pekerjaan Spark.

Anda dapat menggunakan magic perintah selama Anda memiliki kernel Python di notebook EMR Anda. Demikian pula, kernel terkait SPARK apa pun mendukung Sparkmagic perintah.

Magicperintah, juga disebut magics, datang dalam dua varietas:

  • Baris magic s — magic Perintah ini dilambangkan dengan % awalan tunggal dan beroperasi pada satu baris kode

  • Sel magic s — magic Perintah ini dilambangkan dengan %% awalan ganda dan beroperasi pada beberapa baris kode

Untuk semua magic s yang tersedia, lihatDaftar magic dan Sparkmagic perintah.

Pertimbangan dan batasan

  • EMR Tanpa Server tidak mendukung untuk dijalankan. %%sh spark-submit Itu tidak mendukung EMR magic Notebooks s.

  • Amazon EMR di kluster EKS tidak mendukung perintah Sparkmagic untuk EMR Studio. Ini karena kernel Spark yang Anda gunakan dengan endpoint terkelola dibangun ke dalam Kubernetes, dan kernel tersebut tidak didukung oleh dan Livy. Sparkmagic Anda dapat mengatur konfigurasi Spark langsung ke SparkContext objek sebagai solusi, seperti yang ditunjukkan oleh contoh berikut.

    spark.conf.set("spark.driver.maxResultSize", '6g')
  • magicPerintah dan tindakan berikut dilarang oleh AWS:

    • %alias

    • %alias_magic

    • %automagic

    • %macro

    • Memodifikasi dengan proxy_user %configure

    • Memodifikasi KERNEL_USERNAME dengan %env atau %set_env

Daftar magic dan Sparkmagic perintah

Gunakan perintah berikut untuk membuat daftar magic perintah yang tersedia:

  • %lsmagicdaftar semua fungsi yang tersedia saat ini. magic

  • %%helpmencantumkan magic fungsi terkait SPARK yang tersedia saat ini yang disediakan oleh paket. Sparkmagic

Gunakan %%configure untuk mengkonfigurasi Spark

Salah satu perintah yang paling berguna adalah Sparkmagic %%configure perintah, yang mengkonfigurasi parameter pembuatan sesi. Menggunakan conf pengaturan, Anda dapat mengonfigurasi konfigurasi Spark apa pun yang disebutkan dalam dokumentasi konfigurasi untuk Apache Spark.

contoh Tambahkan file JAR eksternal ke EMR Notebooks dari repositori Maven atau Amazon S3

Anda dapat menggunakan pendekatan berikut untuk menambahkan dependensi file JAR eksternal ke kernel terkait SPARK yang didukung oleh. Sparkmagic

%%configure -f {"conf": { "spark.jars.packages": "com.jsuereth:scala-arm_2.11:2.0,ml.combust.bundle:bundle-ml_2.11:0.13.0,com.databricks:dbutils-api_2.11:0.0.3", "spark.jars": "s3://amzn-s3-demo-bucket/my-jar.jar" } }
contoh : Konfigurasikan Hudi

Anda dapat menggunakan editor notebook untuk mengonfigurasi notebook EMR Anda untuk menggunakan Hudi.

%%configure { "conf": { "spark.jars": "hdfs://apps/hudi/lib/hudi-spark-bundle.jar,hdfs:///apps/hudi/lib/spark-spark-avro.jar", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.sql.hive.convertMetastoreParquet":"false" } }

Gunakan %%sh untuk menjalankan spark-submit

%%shmagicMenjalankan perintah shell dalam subproses pada instance cluster terlampir Anda. Biasanya, Anda akan menggunakan salah satu kernel terkait Spark untuk menjalankan aplikasi Spark pada cluster terlampir Anda. Namun, jika Anda ingin menggunakan kernel Python untuk mengirimkan aplikasi Spark, Anda dapat menggunakan yang berikut inimagic, mengganti nama bucket dengan nama bucket Anda dalam huruf kecil.

%%sh spark-submit --master yarn --deploy-mode cluster s3://amzn-s3-demo-bucket/test.py

Dalam contoh ini, cluster membutuhkan akses ke lokasis3://amzn-s3-demo-bucket/test.py, atau perintah akan gagal.

Anda dapat menggunakan perintah Linux apa pun dengan file %%shmagic. Jika Anda ingin menjalankan perintah Spark atau YARN, gunakan salah satu opsi berikut untuk membuat pengguna emr-notebook Hadoop dan berikan izin pengguna untuk menjalankan perintah:

Gunakan %%display untuk memvisualisasikan kerangka data Spark

Anda dapat menggunakan %%display magic untuk memvisualisasikan kerangka data Spark. Untuk menggunakan inimagic, jalankan perintah berikut.

%%display df

Pilih untuk melihat hasil dalam format tabel, seperti yang ditunjukkan gambar berikut.

Output dari menggunakan %%display magic yang menunjukkan hasil dalam format tabel.

Anda juga dapat memilih untuk memvisualisasikan data Anda dengan lima jenis bagan. Pilihan Anda termasuk diagram pie, scatter, line, area, dan bar.

Output dari menggunakan %%display magic yang menunjukkan hasil dalam format grafik.

Gunakan magic EMR Notebooks s

Amazon EMR menyediakan EMR Notebooks berikut yang dapat Anda gunakan dengan magic kernel berbasis Python3 dan Spark:

  • %mount_workspace_dir- Memasang direktori Workspace Anda ke cluster Anda sehingga Anda dapat mengimpor dan menjalankan kode dari file lain di Workspace Anda

    catatan

    Dengan%mount_workspace_dir, hanya kernel Python 3 yang dapat mengakses sistem file lokal Anda. Eksekutor Spark tidak akan memiliki akses ke direktori yang dipasang dengan kernel ini.

  • %umount_workspace_dir- Melepas direktori Workspace Anda dari cluster Anda

  • %generate_s3_download_url- Menghasilkan tautan unduhan sementara di output notebook Anda untuk objek Amazon S3

Prasyarat

Sebelum Anda menginstal EMR magic Notebooks s, selesaikan tugas-tugas berikut:

  • Pastikan Anda Peran layanan untuk EC2 instance cluster (profil EC2 instance) memiliki akses baca untuk Amazon S3. EMR_EC2_DefaultRoleDengan kebijakan yang AmazonElasticMapReduceforEC2Role dikelola memenuhi persyaratan ini. Jika Anda menggunakan peran atau kebijakan khusus, pastikan bahwa itu memiliki izin S3 yang diperlukan.

    catatan

    EMR magic Notebooks berjalan di cluster sebagai pengguna notebook dan menggunakan profil instance untuk berinteraksi EC2 dengan Amazon S3. Saat Anda memasang direktori Workspace pada kluster EMR, semua Workspaces dan notebook EMR dengan izin untuk melampirkan ke cluster tersebut dapat mengakses direktori yang dipasang.

    Direktori dipasang sebagai read-only secara default. Sementara s3fs-fuse dan goofys mengizinkan pemasangan baca-tulis, kami sangat menyarankan agar Anda tidak memodifikasi parameter pemasangan untuk memasang direktori dalam mode baca-tulis. Jika Anda mengizinkan akses tulis, setiap perubahan yang dilakukan pada direktori ditulis ke bucket S3. Untuk menghindari penghapusan atau penimpaan yang tidak disengaja, Anda dapat mengaktifkan pembuatan versi untuk bucket S3 Anda. Untuk mempelajari lebih lanjut, lihat Menggunakan pembuatan versi di bucket S3.

  • Jalankan salah satu skrip berikut di cluster Anda untuk menginstal dependensi untuk EMR Notebooks s. magic Untuk menjalankan skrip, Anda dapat Gunakan tindakan bootstrap kustom atau mengikuti instruksi dalam perintah Jalankan dan skrip di klaster EMR Amazon saat Anda sudah memiliki cluster yang sedang berjalan.

    Anda dapat memilih dependensi mana yang akan diinstal. Baik s3fs-fuse dan goofys adalah alat FUSE (Filesystem in Userspace) yang memungkinkan Anda memasang bucket Amazon S3 sebagai sistem file lokal di cluster. s3fsAlat ini memberikan pengalaman yang mirip dengan POSIX. goofysAlat ini adalah pilihan yang baik ketika Anda lebih memilih kinerja daripada sistem file yang sesuai dengan POSIX.

    Seri Amazon EMR 7.x menggunakan Amazon Linux 2023, yang tidak mendukung repositori EPEL. Jika Anda menjalankan Amazon EMR 7.x, ikuti petunjuk GitHubs3fs-fuse untuk menginstal. s3fs-fuse Jika Anda menggunakan seri 5.x atau 6.x, gunakan perintah berikut untuk menginstal. s3fs-fuse

    #!/bin/sh # Install the s3fs dependency for EMR Notebooks magics sudo amazon-linux-extras install epel -y sudo yum install s3fs-fuse -y

    ATAU

    #!/bin/sh # Install the goofys dependency for EMR Notebooks magics sudo wget https://github.com/kahing/goofys/releases/latest/download/goofys -P /usr/bin/ sudo chmod ugo+x /usr/bin/goofys

Instal magic EMR Notebooks s

catatan

Dengan Amazon EMR merilis 6.0 hingga 6.9.0, dan 5.0 hingga 5.36.0, hanya versi paket 0.2.0 dan dukungan yang lebih tinggi. emr-notebooks-magics %mount_workspace_dir magic

Selesaikan langkah-langkah berikut untuk menginstal EMR Notebooks smagic.

  1. Di notebook Anda, jalankan perintah berikut untuk menginstal emr-notebooks-magicspaket.

    %pip install boto3 --upgrade %pip install botocore --upgrade %pip install emr-notebooks-magics --upgrade
  2. Mulai ulang kernel Anda untuk memuat EMR magic Notebooks s.

  3. Verifikasi instalasi Anda dengan perintah berikut, yang akan menampilkan teks bantuan output untuk%mount_workspace_dir.

    %mount_workspace_dir?

Pasang direktori Workspace dengan %mount_workspace_dir

Ini %mount_workspace_dir magic memungkinkan Anda memasang direktori Workspace ke kluster EMR sehingga Anda dapat mengimpor dan menjalankan file, modul, atau paket lain yang disimpan di direktori Anda.

Contoh berikut memasang seluruh direktori Workspace ke cluster, dan menentukan <--fuse-type> argumen opsional untuk menggunakan goofys untuk memasang direktori.

%mount_workspace_dir . <--fuse-type goofys>

Untuk memverifikasi bahwa direktori Workspace Anda sudah terpasang, gunakan contoh berikut untuk menampilkan direktori kerja saat ini dengan ls perintah. Output harus menampilkan semua file di Workspace Anda.

%%sh ls

Setelah selesai membuat perubahan di Workspace, Anda dapat melepas direktori Workspace dengan perintah berikut:

catatan

Direktori Workspace Anda tetap terpasang ke klaster Anda bahkan ketika Workspace dihentikan atau terlepas. Anda harus secara eksplisit melepas direktori Workspace Anda.

%umount_workspace_dir

Unduh objek Amazon S3 dengan %generate_s3_download_url

generate_s3_download_urlPerintah membuat URL presigned untuk objek yang disimpan di Amazon S3. Anda dapat menggunakan URL yang telah ditetapkan sebelumnya untuk mengunduh objek ke mesin lokal Anda. Misalnya, Anda mungkin menjalankan generate_s3_download_url untuk mengunduh hasil kueri SQL yang ditulis kode Anda ke Amazon S3.

URL presigned valid selama 60 menit secara default. Anda dapat mengubah waktu kedaluwarsa dengan menentukan beberapa detik untuk bendera. --expires-in Misalnya, --expires-in 1800 membuat URL yang valid selama 30 menit.

Contoh berikut menghasilkan tautan unduhan untuk objek dengan menentukan jalur Amazon S3 lengkap:. s3://EXAMPLE-DOC-BUCKET/path/to/my/object

%generate_s3_download_url s3://EXAMPLE-DOC-BUCKET/path/to/my/object

Untuk mempelajari lebih lanjut tentang menggunakangenerate_s3_download_url, jalankan perintah berikut untuk menampilkan teks bantuan.

%generate_s3_download_url?

Jalankan notebook dalam mode tanpa kepala dengan %execute_notebook

Dengan %execute_notebookmagic, Anda dapat menjalankan notebook lain dalam mode headless dan melihat output untuk setiap sel yang telah Anda jalankan. Ini magic memerlukan izin tambahan untuk peran instans yang dibagikan Amazon EMR dan Amazon EC2 . Untuk detail selengkapnya tentang cara memberikan izin tambahan, jalankan perintah%execute_notebook?.

Selama pekerjaan yang berjalan lama, sistem Anda mungkin tertidur karena tidak aktif, atau mungkin kehilangan konektivitas internet untuk sementara. Ini mungkin mengganggu koneksi antara browser Anda dan Server Jupyter. Dalam hal ini, Anda mungkin kehilangan output dari sel yang telah Anda jalankan dan kirim dari Server Jupyter.

Jika Anda menjalankan notebook dalam mode headless dengan %execute_notebookmagic, EMR Notebooks menangkap output dari sel yang telah berjalan, bahkan jika jaringan lokal mengalami gangguan. EMR Notebooks menyimpan output secara bertahap di notebook baru dengan nama yang sama dengan notebook yang Anda jalankan. EMR Notebooks kemudian menempatkan notebook ke folder baru di dalam ruang kerja. Proses tanpa kepala terjadi pada cluster yang sama dan menggunakan peran layananEMR_Notebook_DefaultRole, tetapi argumen tambahan dapat mengubah nilai default.

Untuk menjalankan notebook dalam mode headless, gunakan perintah berikut:

%execute_notebook <relative-file-path>

Untuk menentukan ID klaster dan peran layanan untuk menjalankan tanpa kepala, gunakan perintah berikut:

%execute_notebook <notebook_name>.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>

Saat Amazon EMR dan Amazon EC2 berbagi peran instans, peran tersebut memerlukan izin tambahan berikut:

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:StartNotebookExecution", "elasticmapreduce:DescribeNotebookExecution", "ec2:DescribeInstances" ], "Resource": [ "*" ], "Sid": "AllowELASTICMAPREDUCEStartnotebookexecution" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/EMR_Notebooks_DefaultRole" ], "Sid": "AllowIAMPassrole" } ] }
catatan

Untuk menggunakan %execute_notebookmagic, instal emr-notebooks-magics paket, versi 0.2.3 atau lebih tinggi.