Memecahkan masalah notebook Studio untuk Layanan Terkelola untuk Apache Flink - Layanan Terkelola untuk Apache Flink

Amazon Managed Service untuk Apache Flink sebelumnya dikenal sebagai Amazon Kinesis Data Analytics untuk Apache Flink.

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

Memecahkan masalah notebook Studio untuk Layanan Terkelola untuk Apache Flink

Bagian ini berisi informasi pemecahan masalah untuk notebook Studio.

Hentikan aplikasi yang macet

Untuk menghentikan aplikasi yang macet dalam keadaan transien, panggil StopApplicationtindakan dengan Force parameter yang disetel ke. true Untuk informasi selengkapnya, lihat Menjalankan Aplikasi di Managed Service for Apache Flink Developer Guide.

Terapkan sebagai aplikasi dengan status tahan lama di a VPC tanpa akses internet

deploy-as-application Fungsi Managed Service for Apache Flink Studio tidak mendukung VPC aplikasi tanpa akses internet. Sebaiknya Anda membuat aplikasi di Studio, lalu gunakan Managed Service for Apache Flink untuk membuat aplikasi Flink secara manual dan memilih file zip yang Anda buat di Notebook Anda.

Langkah-langkah berikut menguraikan pendekatan ini:

  1. Buat dan ekspor aplikasi Studio Anda ke Amazon S3. Ini harus berupa file zip.

  2. Buat Layanan Terkelola untuk aplikasi Apache Flink secara manual dengan jalur kode yang mereferensikan lokasi file zip di Amazon S3. Selain itu, Anda perlu mengkonfigurasi aplikasi dengan env variabel berikut (total 2groupID, 3var):

  3. kinesis.analytics.flink.run.options

    1. python: source/note.py

    2. jarfile: PythonApplicationDependencies lib/ .jar

  4. terkelola.deploy_as_app.options

    1. DatabaseARN: <glue database ARN (Amazon Resource Name)>

  5. Anda mungkin perlu memberikan izin ke Layanan Terkelola untuk Apache Flink Studio dan Layanan Terkelola untuk IAM peran Apache Flink untuk layanan yang digunakan aplikasi Anda. Anda dapat menggunakan IAM peran yang sama untuk kedua aplikasi.

eploy-as-app Ukuran D dan pengurangan waktu pembuatan

Studio deploy-as-app untuk aplikasi Python mengemas semua yang tersedia di lingkungan Python karena kami tidak dapat menentukan pustaka mana yang Anda butuhkan. Ini dapat menghasilkan ukuran yang lebih besar dari yang diperlukan. deploy-as-app Prosedur berikut menunjukkan cara mengurangi ukuran ukuran aplikasi deploy-as-app Python dengan menghapus dependensi.

Jika Anda sedang membangun aplikasi Python dengan deploy-as-app fitur dari Studio, Anda dapat mempertimbangkan untuk menghapus paket Python yang sudah diinstal sebelumnya dari sistem jika aplikasi Anda tidak bergantung pada. Ini tidak hanya akan membantu mengurangi ukuran artefak akhir untuk menghindari pelanggaran batas layanan untuk ukuran aplikasi, tetapi juga meningkatkan waktu pembuatan aplikasi dengan fitur tersebut deploy-as-app .

Anda dapat menjalankan perintah berikut untuk mencantumkan semua paket Python yang diinstal dengan ukuran terinstal masing-masing dan secara selektif menghapus paket dengan ukuran yang signifikan.

%flink.pyflink !pip list --format freeze | awk -F = {'print $1'} | xargs pip show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{gsub("-","_",$1); print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null | sort -hr
catatan

apache-beamdiperlukan oleh Flink Python untuk beroperasi. Anda tidak boleh menghapus paket ini dan dependensinya.

Berikut ini adalah daftar paket Python pra-instal di Studio V2 yang dapat dipertimbangkan untuk dihapus:

scipy statsmodels plotnine seaborn llvmlite bokeh pandas matplotlib botocore boto3 numba
Untuk menghapus paket Python dari notebook Zeppelin:
  1. Periksa apakah aplikasi Anda bergantung pada paket, atau paket konsumsinya, sebelum menghapusnya. Anda dapat mengidentifikasi dependan paket menggunakan pipdeptree.

  2. Menjalankan perintah berikut untuk menghapus paket:

    %flink.pyflink !pip uninstall -y <package-to-remove>
  3. Jika Anda perlu mengambil paket yang Anda hapus karena kesalahan, jalankan perintah berikut:

    %flink.pyflink !pip install <package-to-install>
contoh Contoh: Hapus scipy paket sebelum menerapkan aplikasi deploy-as-app Python Anda dengan fitur.
  1. Gunakan pipdeptree untuk menemukan semua scipy konsumen dan verifikasi apakah Anda dapat menghapus dengan amanscipy.

    • Instal alat melalui notebook:

      %flink.pyflink !pip install pipdeptree
    • Dapatkan pohon ketergantungan terbalik scipy dengan menjalankan:

      %flink.pyflink !pip -r -p scipy

      Anda akan melihat output yang mirip dengan berikut ini (diringkas untuk singkatnya):

      ... ------------------------------------------------------------------------ scipy==1.8.0 ├── plotnine==0.5.1 [requires: scipy>=1.0.0] ├── seaborn==0.9.0 [requires: scipy>=0.14.0] └── statsmodels==0.12.2 [requires: scipy>=1.1] └── plotnine==0.5.1 [requires: statsmodels>=0.8.0]
  2. Hati-hati memeriksa penggunaanseaborn, statsmodels dan plotnine dalam aplikasi Anda. Jika aplikasi Anda tidak bergantung pada salah satuscipy,seaborn,statemodels, atauplotnine, Anda dapat menghapus semua paket ini, atau hanya paket yang tidak diperlukan aplikasi Anda.

  3. Hapus paket dengan menjalankan:

    !pip uninstall -y scipy plotnine seaborn statemodels

Batalkan pekerjaan

Bagian ini menunjukkan cara untuk membatalkan tugas Apache Flink yang tidak bisa Anda dapatkan dari Apache Zeppelin. Jika Anda ingin membatalkan tugas seperti itu, buka dasbor Apache Flink, salin ID tugas, lalu gunakan di salah satu contoh berikut.

Untuk membatalkan satu tugas:

%flink.pyflink import requests requests.patch("https://zeppelin-flink:8082/jobs/[job_id]", verify=False)

Untuk membatalkan semua tugas yang sedang berjalan:

%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: if (job["status"] == "RUNNING"): print(requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False))

Untuk membatalkan semua tugas:

%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False)

Mulai ulang penerjemah Apache Flink

Untuk memulai ulang interpreter Apache Flink dalam notebook Studio Anda

  1. Pilih Configuration (Konfigurasi) di dekat sudut kanan atas layar.

  2. Pilih Interpreter.

  3. Pilih restart (mulai ulang), lalu OK.