Amazon EMR di Amazon EKS menyediakan opsi penerapan untuk Amazon ESDM yang memungkinkan Anda menjalankan beban kerja analitik Layanan Amazon Elastic Kubernetes (Amazon EKS). Ini adalah opsi yang menarik karena memungkinkan Anda menjalankan aplikasi pada kumpulan sumber daya bersama tanpa harus menyediakan infrastruktur. Selain itu, Anda bisa menggunakan Studio Amazon EMR untuk membangun kode analitik yang berjalan di klaster Amazon EKS. EMR Studio adalah lingkungan pengembangan terintegrasi (IDE) berbasis web yang menggunakan notebook Jupyter yang dikelola sepenuhnya dan dapat dilampirkan ke kluster EMR mana pun, termasuk EMR di EKS. Ini menggunakan Sistem Masuk Tunggal AWS (SSO) atau penyedia identitas (IdP) yang kompatibel untuk masuk langsung ke EMR Studio melalui URL aman menggunakan kredensial perusahaan.
Menerapkan EMR Studio untuk dilampirkan ke EMR di EKS memerlukan pengintegrasian beberapa layanan AWS:
Selain itu, Anda perlu menginstal EMR berikut pada komponen EKS:
Posting ini membantu Anda membangun semua komponen yang diperlukan dan menyatukannya dengan menjalankan satu skrip. Kami juga menjelaskan arsitektur pengaturan ini dan bagaimana komponen-komponennya bekerja sama.
Tinjauan arsitektur
Dengan EMR di EKS, Anda dapat menjalankan aplikasi Spark bersama jenis aplikasi lain di klaster Amazon EKS yang sama, sehingga meningkatkan alokasi sumber daya dan menyederhanakan pengelolaan infrastruktur. Untuk informasi selengkapnya tentang cara Amazon EMR beroperasi di dalam klaster Amazon EKS, lihat Baru โ Amazon EMR di Amazon Elastic Kubernetes Service (EKS). EMR Studio menyediakan IDE berbasis web yang memudahkan pengembangan, visualisasi, dan debug aplikasi yang berjalan di EMR. Untuk informasi lebih lanjut, lihat Amazon EMR Studio (Pratinjau): Pengalaman IDE baru yang mengutamakan notebook dengan Amazon EMR.
Kernel Spark adalah pod terjadwal dalam namespace di klaster Amazon EKS. EMR Studio menggunakan Jupyter Enterprise Gateway (JEG) untuk meluncurkan kernel Spark di Amazon EKS. Titik akhir terkelola jenis JEG disediakan sebagai penerapan Kubernetes di namespace terkait kluster virtual EMR dan diekspos sebagai layanan Kubernetes. Setiap klaster virtual EMR dipetakan ke namespace Kubernetes yang terdaftar di klaster Amazon EKS; klaster virtual tidak mengelola komputasi atau penyimpanan fisik, namun mengarah ke namespace Kubernetes tempat beban kerja dijadwalkan. Setiap kluster virtual dapat memiliki beberapa titik akhir terkelola, masing-masing dengan kernel yang dikonfigurasi sendiri untuk kasus penggunaan dan kebutuhan berbeda. Titik akhir terkelola JEG menyediakan titik akhir HTTPS, dilayani oleh Application Load Balancer (ALB), yang hanya dapat dijangkau dari EMR Studio dan notebook yang dihosting sendiri yang dibuat dalam subnet privat VPC Amazon EKS.
Diagram berikut menggambarkan arsitektur solusi.
Titik akhir terkelola dibuat di namespace Amazon EKS klaster virtual (dalam hal ini, sparkns
) dan titik akhir HTTPS dilayani dari subnet privat. Pod kernel dijalankan dengan IAM role eksekusi pekerjaan yang ditentukan di titik akhir terkelola. Selama pembuatan titik akhir terkelola, EMR di EKS menggunakan AWS Load Balancer Controller di kube-system
namespace untuk membuat ALB dengan grup target yang terhubung dengan titik akhir terkelola JEG di namespace Kubernetes klaster virtual.
Anda dapat mengonfigurasi kernel setiap titik akhir terkelola secara berbeda. Misalnya, untuk mengizinkan penggunaan kernel Spark Lem AWS sebagai katalognya, Anda dapat menerapkan file JSON konfigurasi berikut di โconfiguration-overrides
tandai saat membuat titik akhir terkelola:
Titik akhir terkelola adalah penerapan Kubernetes yang didukung oleh layanan di dalam namespace yang dikonfigurasi (dalam hal ini, sparkns
). Saat kami melacak informasi titik akhir, kami dapat melihat bagaimana penerapan Jupyter Enterprise Gateway terhubung dengan ALB dan grup target:
Untuk melihat bagaimana hal ini terhubung, pertimbangkan dua sesi EMR Studio. ALB mengekspos port 18888 ke sesi EMR Studio. Layanan JEG memetakan port eksternal 18888 pada ALB ke dinamis NodePort
pada layanan JEG (dalam hal ini, 30091). Layanan JEG meneruskan lalu lintas ke TargetPort
9547, yang merutekan lalu lintas ke pod driver Spark yang sesuai. Setiap sesi notebook memiliki kernelnya sendiri, yang memiliki driver Spark dan pod eksekutornya masing-masing, seperti yang diilustrasikan diagram berikut.
Lampirkan EMR Studio ke klaster virtual dan titik akhir terkelola
Setiap kali pengguna melampirkan kluster virtual dan titik akhir terkelola ke Ruang Kerja Studio mereka dan meluncurkan sesi Spark, driver Spark dan eksekutor Spark dijadwalkan. Anda dapat melihatnya saat Anda berlari kubectl
untuk memeriksa pod apa yang diluncurkan:
Setiap sesi kernel Spark notebook menyebarkan pod driver dan pod eksekutor yang terus berjalan hingga sesi kernel dimatikan.
Kode di sel notebook berjalan di pod eksekutor yang disebarkan di klaster Amazon EKS.
Siapkan EMR di EKS dan EMR Studio
Beberapa langkah diperlukan untuk menyiapkan EMR di EKS dan EMR Studio. Mengaktifkan AWS SSO merupakan prasyarat. Anda dapat menggunakan dua skrip peluncuran yang disediakan di bagian ini atau menerapkannya secara manual menggunakan langkah-langkah yang disediakan nanti di postingan ini.
Kami menyediakan dua skrip peluncuran di postingan ini. Salah satunya adalah skrip bash yang menggunakan Formasi AWS Cloud, eksctl, dan Antarmuka Baris Perintah AWS (AWS CLI) perintah untuk menyediakan penerapan solusi lengkap secara end-to-end. Yang lainnya menggunakan Kit Pengembangan AWS Cloud (AWS CDK) untuk melakukannya.
Diagram berikut menunjukkan arsitektur dan komponen yang kami terapkan.
Prasyarat
Pastikan untuk menyelesaikan prasyarat berikut:
Untuk informasi tentang IdP yang didukung, lihat Aktifkan AWS Single Sign-On untuk Amazon EMR Studio.
Skrip bash
Script tersedia di GitHub.
Prasyarat
Script mengharuskan Anda untuk menggunakannya AWS Cloud9. Ikuti instruksi di Lokakarya Amazon EKS. Pastikan untuk mengikuti petunjuk berikut dengan cermat:
Setelah Anda men-deploy desktop AWS Cloud9, lanjutkan ke langkah berikutnya.
Persiapan
Gunakan kode berikut untuk mengkloning repo GitHub dan menyiapkan prasyarat AWS Cloud9:
Sebarkan tumpukan
Sebelum menjalankan skrip, berikan informasi berikut:
- ID akun AWS dan Wilayah, jika desktop AWS Cloud9 Anda tidak berada dalam ID akun atau Wilayah yang sama tempat Anda ingin menerapkan EMR di EKS
- Nama dari Layanan Penyimpanan Sederhana Amazon (Amazon S3) ember untuk dibuat
- Pengguna AWS SSO yang akan dikaitkan dengan sesi EMR Studio
Setelah skrip menyebarkan tumpukan, URL ke EMR Studio yang disebarkan ditampilkan:
Skrip AWS CDK
Skrip AWS CDK tersedia di GitHub. Anda perlu memeriksa main
cabang. Tumpukan tersebut menyebarkan klaster Amazon EKS dan EMR pada klaster virtual EKS di VPC baru dengan subnet privat, dan secara opsional Aliran Udara Apache Terkelola Amazon (Amazon MWAA) dan EMR Studio.
Prasyarat
Anda memerlukan AWS CDK versi 1.90.1 atau lebih tinggi. Untuk informasi lebih lanjut, lihat Memulai dengan AWS CDK.
Kami menggunakan daftar awalan untuk membatasi akses ke beberapa sumber daya pada rentang IP jaringan yang Anda setujui. Membuat daftar awalan jika Anda belum memilikinya.
Jika Anda berencana menggunakan EMR Studio, Anda memerlukan AWS SSO dikonfigurasi di akun Anda.
Persiapan
Setelah Anda mengkloning repositori dan melakukan checkout main
cabang, buat dan aktifkan lingkungan virtual Python baru:
Sekarang instal dependensi Python:
Terakhir, bootstrap AWS CDK:
Sebarkan tumpukan
Sintesis tumpukan AWS CDK dengan kode berikut:
Perintah ini menghasilkan empat tumpukan:
- emr-eks-cdk โ Tumpukan utama
- mwaa-cdk โ Menambahkan Amazon MWAA
- studio-cdk โ Menambahkan prasyarat EMR Studio
- studio-cdk-live โ Menambahkan Studio ESDM
Diagram berikut mengilustrasikan sumber daya yang dikerahkan oleh tumpukan AWS CDK.
Mulailah dengan menyebarkan tumpukan pertama:
Jika Anda ingin menggunakan Apache Airflow sebagai orkestrator Anda, terapkan tumpukan tersebut:
Terapkan tumpukan EMR Studio pertama:
Tunggu hingga titik akhir terkelola menjadi aktif. Anda dapat memeriksa statusnya dengan menjalankan kode berikut:
ID klaster virtual tersedia di output AWS CDK dari tumpukan emr-eks-cdk.
Saat titik akhir aktif, sebarkan tumpukan EMR Studio kedua:
Penerapan manual
Jika Anda lebih suka menerapkan EMR secara manual di EKS dan EMR Studio, gunakan langkah-langkah di bagian ini.
Siapkan VPC
Jika Anda menggunakan Amazon EKS v. 1.18, siapkan VPC yang juga memiliki subnet pribadi dan diberi tag yang tepat untuk penyeimbang beban eksternal. Untuk penandaan, lihat: Penyeimbangan beban aplikasi di Amazon EKS dan Buat peran layanan EMR Studio.
Buat klaster Amazon EKS
Luncurkan klaster Amazon EKS dengan setidaknya satu grup simpul terkelola. Untuk instruksi, lihat Menyiapkan dan Memulai Amazon EKS.
Buat kebijakan IAM, peran, IdP, dan sertifikat SSL/TLS yang relevan
Untuk membuat kebijakan IAM, peran, IdP, dan sertifikat SSL/TLS Anda, selesaikan langkah-langkah berikut:
- Aktifkan akses cluster untuk EMR di EKS.
- Buat IdP di IAM berdasarkan URL penyedia EKS OIDC.
- Buat sertifikat SSL/TLS dan tempatkan Manajer Sertifikat AWS.
- Buat kebijakan dan peran IAM yang relevan:
- Peran pelaksanaan pekerjaan
- Perbarui kebijakan kepercayaan untuk peran eksekusi pekerjaan
- Terapkan dan buat kebijakan IAM untuk AWS Load Balancer Controller
- Peran layanan EMR Studio
- Peran pengguna EMR Studio
- Kebijakan pengguna EMR Studio terkait dengan pengguna dan grup AWS SSO
- Daftarkan klaster Amazon EKS dengan Amazon EMR untuk membuat klaster EMR virtual
- Buat yang sesuai kelompok keamanan untuk dilampirkan pada setiap EMR Studio yang dibuat:
- Grup keamanan ruang kerja
- Kelompok keamanan mesin
- Tandai grup keamanan dengan tanda yang sesuai. Untuk instruksi, lihat Buat peran layanan EMR Studio.
Penginstalan yang diperlukan di Amazon EKS
Terapkan Pengontrol Penyeimbang Beban AWS di klaster Amazon EKS jika Anda belum melakukannya.
Buat EMR pada bagian EKS yang relevan dan petakan pengguna ke EMR Studio
Selesaikan langkah-langkah berikut:
- Buat setidaknya satu klaster virtual EMR yang terkait dengan klaster Amazon EKS. Untuk petunjuknya, lihat Langkah 1 dari Siapkan Amazon EMR di EKS untuk EMR Studio.
- Buat setidaknya satu titik akhir terkelola. Untuk petunjuknya, lihat Langkah 2 dari Siapkan Amazon EMR di EKS untuk EMR Studio.
- Buat setidaknya satu EMR Studio; kaitkan EMR Studio dengan subnet privat yang dikonfigurasi dengan klaster Amazon EKS. Untuk instruksi, lihat Buat Studio EMR.
- Ketika EMR Studio tersedia, memetakan pengguna atau grup AWS SSO ke EMR Studio dan menerapkan kebijakan IAM yang sesuai untuk pengguna tersebut.
Gunakan EMR Studio
Untuk mulai menggunakan EMR Studio, selesaikan langkah-langkah berikut:
- Temukan URL untuk EMR Studio berdasarkan studio di suatu Wilayah:
- Dengan URL yang tercantum, masuk menggunakan nama pengguna AWS SSO yang Anda gunakan sebelumnya.
Setelah otentikasi, pengguna diarahkan ke dasbor EMR Studio.
- Pilih Buat Ruang Kerja.
- Untuk Nama ruang kerja, masukkan nama.
- Untuk Subnet, pilih subnet yang sesuai dengan salah satu subnet yang terkait dengan grup simpul terkelola.
- Untuk Lokasi S3, masukkan bucket S3 tempat Anda dapat menyimpan konten buku catatan.
- Setelah Anda membuat Workspace, pilih salah satu yang ada di
Ready
status.
- Di sidebar, pilih ikon cluster EMR.
- Bawah Tipe klusterยธ pilih Klaster ESDM di EKS.
- Pilih klaster virtual yang tersedia dan titik akhir terkelola yang tersedia.
- Pilih Melampirkan.
Setelah terpasang, EMR Studio menampilkan kernel yang tersedia di buku catatan dan konsul bagian.
- Pilih PySpark (Kubernetes) untuk meluncurkan kernel notebook dan memulai sesi Spark.
Karena konfigurasi titik akhir di sini menggunakan AWS Glue untuk metastore-nya, Anda dapat membuat daftar database dan tabel yang terhubung ke Katalog Data AWS Glue. Anda dapat menggunakan contoh skrip berikut untuk menguji pengaturan. Ubah skrip seperlunya untuk database dan tabel yang sesuai yang Anda miliki di Katalog Data Anda:
Membersihkan
Untuk menghindari timbulnya biaya di masa mendatang, hapus sumber daya yang diluncurkan di sini dengan menjalankan delete_setup.sh:
Kesimpulan
EMR di EKS memungkinkan Anda menjalankan aplikasi pada kumpulan sumber daya umum di dalam klaster Amazon EKS tanpa harus menyediakan infrastruktur. EMR Studio adalah notebook Jupyter yang dikelola sepenuhnya dan alat yang menyediakan kernel yang berjalan di klaster EMR, termasuk klaster virtual di Amazon EKS. Dalam postingan ini, kami menjelaskan arsitektur bagaimana EMR Studio terhubung dengan EMR di EKS dan menyediakan skrip untuk secara otomatis menerapkan semua komponen untuk menghubungkan kedua layanan.
Jika Anda memiliki pertanyaan atau saran, silakan tinggalkan komentar.
Tentang Penulis
Randy De Fauw adalah Arsitek Solusi Utama di Amazon Web Services. Dia bekerja dengan pelanggan AWS untuk memberikan panduan dan bantuan teknis pada proyek database, membantu mereka meningkatkan nilai solusi mereka saat menggunakan AWS.
Matius Tan adalah Arsitek Solusi Analytics Senior di Amazon Web Services dan memberikan panduan kepada pelanggan yang mengembangkan solusi dengan layanan AWS Analytics pada beban kerja analitik mereka.
- '
- "
- 100
- 7
- 9
- mengakses
- Akun
- aktif
- Semua
- alokasi
- Amazon
- Amazon Web Services
- analisis
- Apache
- Aplikasi
- aplikasi
- arsitektur
- Otentikasi
- AWS
- ayunan
- membangun
- kasus
- sertifikat
- beban
- Pembayaran
- klasifikasi
- awan
- kode
- Umum
- menghitung
- Konten
- terus
- pengawas
- membuat
- Surat kepercayaan
- pelanggan
- dasbor
- data
- Basis Data
- database
- mengembangkan
- Pengembangan
- pengemudi
- Titik akhir
- Enterprise
- Lingkungan Hidup
- eksekusi
- pengalaman
- pabrik
- Pertama
- mengikuti
- Di depan
- masa depan
- pergi
- GitHub
- Kelompok
- Hadoop
- di sini
- Sarang lebah
- Seterpercayaapakah Olymp Trade? Kesimpulan
- HTTPS
- IAM
- ICON
- identitas
- Termasuk
- informasi
- Infrastruktur
- IP
- IT
- Pekerjaan
- Notebook Jupyter
- Kubernetes
- jalankan
- meluncurkan
- baris
- Daftar
- memuat
- pengelolaan
- peta
- Peta
- jaringan
- laptop
- pilihan
- Lainnya
- fisik
- polong
- Kebijakan
- kebijaksanaan
- kolam
- Preview
- Utama
- swasta
- memprojeksikan
- Ular sanca
- Persyaratan
- sumber
- Sumber
- Run
- berjalan
- keamanan
- Layanan
- set
- Sederhana
- So
- Solusi
- SQL
- awal
- mulai
- Negara
- Status
- penyimpanan
- menyimpan
- Didukung
- target
- Teknis
- uji
- waktu
- lalu lintas
- Kepercayaan
- Pengguna
- nilai
- maya
- jaringan
- layanan web
- dalam
- kata
- Kerja
- bekerja