Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan notebook Jupyter yang dihosting sendiri
Anda dapat meng-host dan mengelola Jupyter atau JupyterLab notebook di EC2 instans Amazon atau di EKS klaster Amazon Anda sendiri sebagai notebook Jupyter yang dihosting sendiri. Anda kemudian dapat menjalankan beban kerja interaktif dengan notebook Jupyter yang dihosting sendiri. Bagian berikut berjalan melalui proses untuk menyiapkan dan menerapkan notebook Jupyter yang dihosting sendiri di cluster Amazon. EKS
Membuat notebook Jupyter yang dihosting sendiri di sebuah cluster EKS
Membuat grup keamanan
Sebelum Anda dapat membuat endpoint interaktif dan menjalankan Jupyter atau JupyterLab notebook yang dihosting sendiri, Anda harus membuat grup keamanan untuk mengontrol lalu lintas antara buku catatan Anda dan titik akhir interaktif. Untuk menggunakan EC2 konsol Amazon atau Amazon EC2 SDK untuk membuat grup keamanan, lihat langkah-langkah dalam Membuat grup keamanan di Panduan EC2 Pengguna Amazon. Anda harus membuat grup keamanan di VPC tempat Anda ingin menyebarkan server notebook Anda.
Untuk mengikuti contoh dalam panduan ini, gunakan yang VPC sama dengan EKS cluster Amazon Anda. Jika Anda ingin meng-host notebook Anda di VPC yang berbeda dari EKS cluster VPC untuk Amazon Anda, Anda mungkin perlu membuat koneksi peering di antara keduanyaVPCs. Untuk langkah-langkah untuk membuat koneksi peering di antara keduanyaVPCs, lihat Membuat koneksi VPC peering di Panduan VPC Memulai Amazon.
Anda memerlukan ID untuk grup keamanan untuk membuat Amazon EMR pada titik akhir EKS interaktif di langkah berikutnya.
Buat Amazon EMR di endpoint EKS interaktif
Setelah Anda membuat grup keamanan untuk buku catatan Anda, gunakan langkah-langkah yang disediakan Membuat endpoint interaktif untuk klaster virtual Anda untuk membuat titik akhir interaktif. Anda harus memberikan ID grup keamanan yang Anda buat untuk buku catatan AndaMembuat grup keamanan.
Masukkan ID keamanan di tempat your-notebook-security-group-id
dalam pengaturan penggantian konfigurasi berikut:
--configuration-overrides '{ "applicationConfiguration": [ { "classification": "endpoint-configuration", "properties": { "notebook-security-group-id": "
your-notebook-security-group-id
" } } ], "monitoringConfiguration": { ...'
Ambil server gateway dari titik URL akhir interaktif Anda
Setelah Anda membuat endpoint interaktif, ambil server gateway URL dengan describe-managed-endpoint
perintah di. AWS CLI Anda memerlukan ini URL untuk menghubungkan notebook Anda ke titik akhir. Server gateway URL adalah titik akhir pribadi.
aws emr-containers describe-managed-endpoint \ --region
region
\ --virtual-cluster-idvirtualClusterId
\ --idendpointId
Awalnya, titik akhir Anda ada di CREATINGnegara. Setelah beberapa menit, ia beralih ke ACTIVEnegara. Ketika titik akhir adalah ACTIVE, siap digunakan.
Perhatikan serverUrl
atribut yang dikembalikan aws emr-containers
describe-managed-endpoint
perintah dari endpoint aktif. Anda memerlukan ini URL untuk menghubungkan notebook Anda ke titik akhir saat Anda menerapkan Jupyter atau notebook yang dihosting sendiri. JupyterLab
Ambil token autentikasi untuk terhubung ke titik akhir interaktif
Untuk terhubung ke titik akhir interaktif dari Jupyter atau JupyterLab notebook, Anda harus membuat token sesi dengan. GetManagedEndpointSessionCredentials
API Token bertindak sebagai bukti otentikasi untuk terhubung ke server endpoint interaktif.
Perintah berikut dijelaskan secara lebih rinci dengan contoh output di bawah ini.
aws emr-containers get-managed-endpoint-session-credentials \ --endpoint-identifier
endpointArn
\ --virtual-cluster-identifiervirtualClusterArn
\ --execution-role-arnexecutionRoleArn
\ --credential-type "TOKEN" \ --duration-in-secondsdurationInSeconds
\ --regionregion
endpointArn
-
Titik ARN akhir Anda. Anda dapat menemukan hasil
describe-managed-endpoint
panggilan. ARN virtualClusterArn
-
ARNDari cluster virtual.
executionRoleArn
-
ARNPeran eksekusi.
durationInSeconds
-
Durasi dalam detik dimana token valid. Durasi default adalah 15 menit (
900
), dan maksimum adalah 12 jam (43200
). region
-
Wilayah yang sama dengan titik akhir Anda.
Output Anda harus menyerupai contoh berikut. Catat
nilai yang akan Anda gunakan saat menerapkan Jupyter atau notebook yang dihosting sendiri. JupyterLab session-token
{
"id": "credentialsId
",
"credentials": {
"token": "session-token
"
},
"expiresAt": "2022-07-05T17:49:38Z"
}
Contoh: Menyebarkan buku catatan JupyterLab
Setelah Anda menyelesaikan langkah-langkah di atas, Anda dapat mencoba prosedur contoh ini untuk menyebarkan JupyterLab notebook ke EKS cluster Amazon dengan endpoint interaktif Anda.
-
Buat namespace untuk menjalankan server notebook.
-
Buat file secara lokal,
notebook.yaml
, dengan konten berikut. Isi file dijelaskan di bawah ini.apiVersion: v1 kind: Pod metadata: name: jupyter-notebook namespace:
namespace
spec: containers: - name: minimal-notebook image: jupyter/all-spark-notebook:lab-3.1.4 # open source image ports: - containerPort: 8888 command: ["start-notebook.sh"] args: ["--LabApp.token=''"] env: - name: JUPYTER_ENABLE_LAB value: "yes" - name: KERNEL_LAUNCH_TIMEOUT value: "400" - name: JUPYTER_GATEWAY_URL value: "serverUrl
" - name: JUPYTER_GATEWAY_VALIDATE_CERT value: "false" - name: JUPYTER_GATEWAY_AUTH_TOKEN value: "session-token
"Jika Anda menerapkan notebook Jupyter ke cluster khusus Fargate, beri label pada pod Jupyter dengan label seperti yang ditunjukkan pada contoh berikut:
role
... metadata: name: jupyter-notebook namespace: default labels: role:
example-role-name-label
spec: ...namespace
-
Namespace Kubernetes yang digunakan notebook.
serverUrl
-
serverUrl
Atribut yang dikembalikandescribe-managed-endpoint
perintahAmbil server gateway dari titik URL akhir interaktif Anda . session-token
-
session-token
Atribut yang dikembalikanget-managed-endpoint-session-credentials
perintahAmbil token autentikasi untuk terhubung ke titik akhir interaktif. KERNEL_LAUNCH_TIMEOUT
-
Jumlah waktu dalam hitungan detik titik akhir interaktif menunggu kernel datang RUNNINGnegara. Pastikan waktu yang cukup untuk menyelesaikan peluncuran kernel dengan mengatur batas waktu peluncuran kernel ke nilai yang sesuai (maksimum 400 detik).
KERNEL_EXTRA_SPARK_OPTS
-
Secara opsional, Anda dapat meneruskan konfigurasi Spark tambahan untuk kernel Spark. Tetapkan variabel lingkungan ini dengan nilai-nilai sebagai properti konfigurasi Spark seperti yang ditunjukkan pada contoh berikut:
- name: KERNEL_EXTRA_SPARK_OPTS value: "--conf spark.driver.cores=2 --conf spark.driver.memory=2G --conf spark.executor.instances=2 --conf spark.executor.cores=2 --conf spark.executor.memory=2G --conf spark.dynamicAllocation.enabled=true --conf spark.dynamicAllocation.shuffleTracking.enabled=true --conf spark.dynamicAllocation.minExecutors=1 --conf spark.dynamicAllocation.maxExecutors=5 --conf spark.dynamicAllocation.initialExecutors=1 "
-
Menerapkan spesifikasi pod ke cluster Amazon EKS Anda:
kubectl apply -f notebook.yaml -n
namespace
Ini akan memulai JupyterLab notebook minimal yang terhubung ke Amazon Anda EMR pada titik akhir EKS interaktif. Tunggu sampai pod RUNNING. Anda dapat memeriksa statusnya dengan perintah berikut:
kubectl get pod jupyter-notebook -n
namespace
Ketika pod siap,
get pod
perintah mengembalikan output yang mirip dengan ini:NAME READY STATUS RESTARTS AGE jupyter-notebook 1/1 Running 0 46s
-
Lampirkan grup keamanan notebook ke node tempat notebook dijadwalkan.
-
Pertama, identifikasi node tempat
jupyter-notebook
pod dijadwalkan dengandescribe pod
perintah.kubectl describe pod jupyter-notebook -n
namespace
Buka EKS konsol Amazon di https://console.aws.amazon.com/eks/rumah#/cluster
. -
Arahkan ke tab Compute untuk EKS klaster Amazon Anda dan pilih node yang diidentifikasi oleh
describe pod
perintah. Pilih ID instance untuk node. -
Dari menu Tindakan, pilih Keamanan > Ubah grup keamanan untuk melampirkan grup keamanan yang Anda buatMembuat grup keamanan.
-
Jika Anda menerapkan pod notebook Jupyter AWS Fargate, buat a
SecurityGroupPolicy
to apply ke pod notebook Jupyter dengan label peran:cat >my-security-group-policy.yaml <<EOF apiVersion: vpcresources.k8s.aws/v1beta1 kind: SecurityGroupPolicy metadata: name:
example-security-group-policy-name
namespace: default spec: podSelector: matchLabels: role:example-role-name-label
securityGroups: groupIds: -your-notebook-security-group-id
EOF
-
-
Sekarang, port-forward sehingga Anda dapat mengakses antarmuka secara lokal: JupyterLab
kubectl port-forward jupyter-notebook 8888:8888 -n
namespace
Setelah berjalan, navigasikan ke browser lokal Anda dan kunjungi
localhost:8888
untuk melihat JupyterLab antarmuka: -
Dari JupyterLab, buat notebook Scala baru. Berikut adalah contoh cuplikan kode yang dapat Anda jalankan untuk memperkirakan nilai Pi:
import scala.math.random import org.apache.spark.sql.SparkSession /** Computes an approximation to pi */ val session = SparkSession .builder .appName("Spark Pi") .getOrCreate() val slices = 2 // avoid overflow val n = math.min(100000L * slices, Int.MaxValue).toInt val count = session.sparkContext .parallelize(1 until n, slices) .map { i => val x = random * 2 - 1 val y = random * 2 - 1 if (x*x + y*y <= 1) 1 else 0 }.reduce(_ + _) println(s"Pi is roughly ${4.0 * count / (n - 1)}") session.stop()
Menghapus buku catatan Jupyter yang dihosting sendiri
Saat Anda siap untuk menghapus buku catatan yang dihosting sendiri, Anda juga dapat menghapus titik akhir interaktif dan grup keamanan juga. Lakukan tindakan dengan urutan sebagai berikut:
-
Gunakan perintah berikut untuk menghapus
jupyter-notebook
pod:kubectl delete pod jupyter-notebook -n
namespace
-
Kemudian, hapus endpoint interaktif Anda dengan
delete-managed-endpoint
perintah. Untuk langkah-langkah menghapus titik akhir interaktif, lihatHapus titik akhir interaktif. Awalnya, titik akhir Anda akan berada di TERMINATINGnegara. Setelah semua sumber daya dibersihkan, ia beralih ke TERMINATEDnegara. -
Jika Anda tidak berencana untuk menggunakan grup keamanan notebook yang Anda buat Membuat grup keamanan untuk penerapan notebook Jupyter lainnya, Anda dapat menghapusnya. Lihat Menghapus grup keamanan di Panduan EC2 Pengguna Amazon untuk informasi selengkapnya.