Tutorial ini mengusulkan strategi pemulihan dari bencana dan kelangsungan bisnis dual-region menggunakan Metastore Dataproc. Tutorial ini menggunakan bucket dua region untuk menyimpan set data Hive dan ekspor metadata Hive.
Dataproc Metastore adalah layanan metastore native OSS yang terkelola sepenuhnya, sangat tersedia, diskalakan otomatis, dan melakukan auto-healing yang sangat menyederhanakan pengelolaan metadata teknis. Layanan terkelola kami didasarkan pada Apache Hive Metastore dan berfungsi sebagai komponen kritis untuk data lake perusahaan.
Tutorial ini dirancang untuk Google Cloud pelanggan yang memerlukan ketersediaan tinggi untuk data dan metadata Hive mereka. Layanan ini menggunakan Cloud Storage untuk penyimpanan, Dataproc untuk komputasi, dan Dataproc Metastore (DPMS), layanan Hive Metastore yang dikelola sepenuhnya di Google Cloud. Tutorial ini juga menampilkan dua cara berbeda untuk mengatur failover: satu menggunakan Cloud Run dan Cloud Scheduler, sedangkan yang lainnya menggunakan Cloud Composer.
Pendekatan dual-region yang digunakan dalam tutorial ini memiliki kelebihan dan kekurangan:
Kelebihan
- Bucket dual-region bersifat geo-redundan.
- Bucket dual-region memiliki SLA ketersediaan 99,95%, dibandingkan dengan ketersediaan bucket single-region sebesar 99,9%.
- Bucket dual-region memiliki performa yang dioptimalkan di dua region, sedangkan bucket satu region tidak berperforma sebaik saat menggunakan resource di region lain.
Kekurangan
- Operasi tulis bucket region ganda tidak langsung direplikasi ke kedua region.
- Bucket dual-region memiliki biaya penyimpanan yang lebih tinggi daripada bucket region tunggal.
Arsitektur referensi
Diagram arsitektur berikut menunjukkan komponen yang Anda gunakan dalam tutorial ini. Dalam kedua diagram, X merah besar menunjukkan kegagalan wilayah utama:
Gambar 1: Menggunakan Cloud Run dan Cloud Scheduler
Gambar 2: Menggunakan Cloud Composer
Komponen solusi dan hubungannya adalah:
- Dua bucket dual-region Cloud Storage: Anda membuat satu bucket untuk data Hive, dan satu bucket untuk pencadangan berkala metadata Hive. Buat kedua bucket dual-region sehingga menggunakan region yang sama dengan cluster Hadoop yang mengakses data.
- Metastore Hive yang menggunakan DPMS: Anda membuat metastore Hive ini di region utama (region A). Konfigurasi metastore mengarah ke bucket data Hive Anda. Cluster Hadoop yang menggunakan Dataproc harus berada di region yang sama dengan instance DPMS tempat cluster tersebut dilampirkan.
- Instance DPMS kedua: Anda membuat instance DPMS kedua di
region standby (region B) untuk bersiap menghadapi kegagalan di seluruh region. Kemudian, Anda
akan mengimpor file ekspor
hive.sql
terbaru dari bucket ekspor ke DPMS standby. Anda juga membuat cluster Dataproc di region standby dan melampirkan cluster tersebut ke instance DPMS standby. Terakhir, dalam skenario disaster recovery, Anda mengalihkan aplikasi klien dari cluster Dataproc di region A ke cluster Dataproc di region B. Deployment Cloud Run: Anda membuat deployment Cloud Run di region A yang secara berkala mengekspor metadata DPMS ke bucket cadangan metadata menggunakan Cloud Scheduler (seperti yang ditunjukkan pada Gambar 1). Ekspor berbentuk file SQL yang berisi dump lengkap metadata DPMS.
Jika sudah memiliki lingkungan Cloud Composer, Anda dapat mengatur ekspor dan impor metadata DPMS dengan menjalankan DAG Airflow di lingkungan tersebut (seperti yang ditunjukkan pada Gambar 2). Penggunaan DAG Airflow ini akan menggantikan metode Cloud Run yang disebutkan sebelumnya.
Tujuan
- Menyiapkan penyimpanan dua region untuk data Hive dan cadangan Hive Metastore.
- Deploy Metastore Dataproc dan cluster Dataproc di region A dan B.
- Gagal deploy ke region B.
- Gagal deployment kembali ke region A.
- Membuat pencadangan metastore Hive otomatis.
- Mengatur ekspor dan impor metadata melalui Cloud Run.
- Mengatur ekspor dan impor metadata melalui Cloud Composer.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc, and Dataproc Metastore APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Project > Owner role to the service account.
To grant the role, find the Select a role list, then select Project > Owner.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
-
Create a service account key:
- In the Google Cloud console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc, and Dataproc Metastore APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Project > Owner role to the service account.
To grant the role, find the Select a role list, then select Project > Owner.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
-
Create a service account key:
- In the Google Cloud console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
Menginisialisasi lingkungan
- Di Cloud Shell, mulai instance Cloud Shell.
Buat clone repositori GitHub tutorial:
git clone https://github.com/GoogleCloudPlatform/metastore-disaster-recovery.git
Aktifkan Google Cloud API berikut:
gcloud services enable dataproc.googleapis.com metastore.googleapis.com
Tetapkan beberapa variabel lingkungan:
export PROJECT=$(gcloud info --format='value(config.project)') export WAREHOUSE_BUCKET=${PROJECT}-warehouse export BACKUP_BUCKET=${PROJECT}-dpms-backups export DPMS_PRIMARY_REGION=us-central1 export DPMS_STANDBY_REGION=us-east1 export DPMS_PRIMARY_INSTANCE=dpms1 export DPMS_STANDBY_INSTANCE=dpms2 export HADOOP_PRIMARY=dataproc-cluster1 export HADOOP_STANDBY=dataproc-cluster2
Membuat penyimpanan untuk data Hive dan pencadangan Hive Metastore
Di bagian ini, Anda akan membuat bucket Cloud Storage untuk menghosting data Hive dan cadangan Metastore Hive.
Membuat penyimpanan data Hive
Di Cloud Shell, buat bucket dua wilayah untuk menghosting data Hive:
gcloud storage buckets create gs://${WAREHOUSE_BUCKET} --location=NAM4
Salin beberapa contoh data ke bucket data Hive:
gcloud storage cp gs://retail_csv gs://${WAREHOUSE_BUCKET}/retail --recursive
Membuat penyimpanan untuk pencadangan metadata
Di Cloud Shell, buat bucket dua region untuk menghosting pencadangan metadata DPMS:
gcloud storage buckets create gs://${BACKUP_BUCKET} --location=NAM4
Men-deploy resource komputasi di region utama
Di bagian ini, Anda akan men-deploy semua resource komputasi di region utama, termasuk instance DPMS dan cluster Dataproc. Anda juga akan mengisi Dataproc Metastore dengan metadata contoh.
Membuat instance DPMS
Di Cloud Shell, buat instance DPMS:
gcloud metastore services create ${DPMS_PRIMARY_INSTANCE} \ --location=${DPMS_PRIMARY_REGION} \ --hive-metastore-version=3.1.2
Pemrosesan perintah ini dapat memerlukan waktu beberapa menit.
Tetapkan bucket data Hive sebagai direktori warehouse default:
gcloud metastore services update ${DPMS_PRIMARY_INSTANCE} \ --location=${DPMS_PRIMARY_REGION} \ --update-hive-metastore-configs="hive.metastore.warehouse.dir=gs://${PROJECT}- warehouse"
Pemrosesan perintah ini dapat memerlukan waktu beberapa menit.
Membuat cluster Dataproc
Di Cloud Shell, buat cluster Dataproc dan lampirkan ke instance DPMS:
gcloud dataproc clusters create ${HADOOP_PRIMARY} \ --dataproc-metastore=projects/${PROJECT}/locations/${DPMS_PRIMARY_REGION}/services/${DPMS_PRIMARY_INSTANCE} \ --region=${DPMS_PRIMARY_REGION} \ --image-version=2.0
Tentukan image cluster sebagai versi 2.0, yang merupakan versi terbaru yang tersedia mulai Juni 2021. Ini juga merupakan versi pertama yang mendukung DPMS.
Mengisi metastore
Di Cloud Shell, perbarui
retail.hql
sampel yang diberikan di repositori tutorial ini dengan nama bucket data Hive:sed -i -- 's/${WAREHOUSE_BUCKET}/'"$WAREHOUSE_BUCKET"'/g' retail.hql
Jalankan kueri yang terdapat dalam file
retail.hql
untuk membuat definisi tabel di metastore:gcloud dataproc jobs submit hive \ --cluster=${HADOOP_PRIMARY} \ --region=${DPMS_PRIMARY_REGION} \ --file=retail.hql
Pastikan definisi tabel dibuat dengan benar:
gcloud dataproc jobs submit hive \ --cluster=${HADOOP_PRIMARY} \ --region=${DPMS_PRIMARY_REGION} \ --execute=" desc departments; desc categories; desc products; desc order_items; desc orders; desc customers; select count(*) as num_departments from departments; select count(*) as num_categories from categories; select count(*) as num_products from products; select count(*) as num_order_items from order_items; select count(*) as num_orders from orders; select count(*) as num_customers from customers; "
Outputnya akan terlihat seperti berikut:
+------------------+------------+----------+ | col_name | data_type | comment | +------------------+------------+----------+ | department_id | int | | | department_name | string | | +------------------+------------+----------+
Output juga berisi jumlah elemen di setiap tabel—misalnya:
+----------------+ | num_customers | +----------------+ | 12435 | +----------------+
Melakukan failover ke region standby
Bagian ini menyediakan langkah-langkah untuk melakukan failover dari region utama (region A) ke region standby (region B).
Di Cloud Shell, ekspor metadata instance DPMS utama ke bucket cadangan:
gcloud metastore services export gcs ${DPMS_PRIMARY_INSTANCE} \ --location=${DPMS_PRIMARY_REGION} \ --destination-folder=gs://${BACKUP_BUCKET}
Outputnya akan terlihat seperti berikut:
metadataManagementActivity: metadataExports: ‐ databaseDumpType: MYSQL destinationGcsUri: gs://qa01-300915-dpms-backups/hive-export-2021-05-04T22:21:53.288Z endTime: '2021-05-04T22:23:35.982214Z' startTime: '2021-05-04T22:21:53.308534Z' state: SUCCEEDED
Perhatikan nilai dalam atribut
destinationGcsUri
. Atribut ini menyimpan cadangan yang Anda buat.Buat instance DPMS baru di region standby:
gcloud metastore services create ${DPMS_STANDBY_INSTANCE} \ --location=${DPMS_STANDBY_REGION} \ --hive-metastore-version=3.1.2
Tetapkan bucket data Hive sebagai direktori warehouse default:
gcloud metastore services update ${DPMS_STANDBY_INSTANCE} \ --location=${DPMS_STANDBY_REGION} \ --update-hive-metastore-configs="hive.metastore.warehouse.dir=gs://${PROJECT}-warehouse"
Ambil jalur cadangan metadata terbaru:
IMPORT_DIR=`gcloud storage ls gs://${BACKUP_BUCKET} | sort -k 1 | tail -1` IMPORT_SQL="${IMPORT_DIR}hive.sql" echo ${IMPORT_SQL}
Impor metadata yang dicadangkan ke instance Metastore Dataproc baru:
gcloud metastore services import gcs ${DPMS_STANDBY_INSTANCE} \ --location=${DPMS_STANDBY_REGION} \ --dump-type=mysql \ --database-dump=${IMPORT_SQL} \ --import-id=import-$(date +"%Y-%m-%d-%H-%M-%S")
Buat cluster Dataproc di region standby (region B):
gcloud dataproc clusters create ${HADOOP_STANDBY} \ --dataproc-metastore=projects/${PROJECT}/locations/${DPMS_STANDBY_REGION}/services/${DPMS_STANDBY_INSTANCE} \ --region=${DPMS_STANDBY_REGION} \ --image-version=2.0
Pastikan metadata diimpor dengan benar:
gcloud dataproc jobs submit hive \ --cluster ${HADOOP_STANDBY} \ --region ${DPMS_STANDBY_REGION} \ --execute "select count(*) as num_orders from orders;"
Output
num_orders
adalah yang paling penting untuk tutorial ini. Tampilannya mirip dengan hal berikut:+-------------+ | num_orders | +-------------+ | 68883 | +-------------+
Metastore Dataproc utama telah menjadi metastore cadangan baru, dan Metastore Dataproc cadangan telah menjadi metastore utama baru.
Perbarui variabel lingkungan berdasarkan peran baru ini:
export DPMS_PRIMARY_REGION=us-east1 export DPMS_STANDBY_REGION=us-central1] export DPMS_PRIMARY_INSTANCE=dpms2 export DPMS_STANDBY_INSTANCE=dpms1 export HADOOP_PRIMARY=dataproc-cluster2 export HADOOP_STANDBY=dataproc-cluster1
Pastikan Anda dapat menulis ke Metastore Dataproc utama baru di region B:
gcloud dataproc jobs submit hive \ --cluster ${DPMS_PRIMARY_INSTANCE} \ --region ${DPMS_PRIMARY_REGION} \ --execute "create view completed_orders as select * from orders where order_status = 'COMPLETE';" gcloud dataproc jobs submit hive \ --cluster ${HADOOP_PRIMARY} \ --region ${DPMS_PRIMARY_REGION} \ --execute "select * from completed_orders limit 5;"
Outputnya berisi hal berikut:
+----------------------------+------------------------------+-------------------------------------+--------------------------------+ | completed_orders.order_id | completed_orders.order_date | completed_orders.order_customer_id | completed_orders.order_status | +----------------------------+------------------------------+-------------------------------------+--------------------------------+ | 3 | 2013-07-25 00:00:00.0 | 12111 | COMPLETE | | 5 | 2013-07-25 00:00:00.0 | 11318 | COMPLETE | | 6 | 2013-07-25 00:00:00.0 | 7130 | COMPLETE | | 7 | 2013-07-25 00:00:00.0 | 4530 | COMPLETE | | 15 | 2013-07-25 00:00:00.0 | 2568 | COMPLETE | +----------------------------+------------------------------+-------------------------------------+--------------------------------+
Failover kini telah selesai. Sekarang Anda harus mengalihkan aplikasi klien ke cluster Dataproc utama baru di region B dengan memperbarui file konfigurasi klien Hadoop.
Melakukan penggantian ke region asli
Bagian ini menyediakan langkah-langkah untuk melakukan penggantian ke region asli (region A).
Di Cloud Shell, ekspor metadata dari instance DPMS:
gcloud metastore services export gcs ${DPMS_PRIMARY_INSTANCE} \ --location=${DPMS_PRIMARY_REGION} \ --destination-folder=gs://${BACKUP_BUCKET}
Ambil jalur cadangan metadata terbaru:
IMPORT_DIR=`gcloud storage ls gs://${BACKUP_BUCKET} | sort -k 1 | tail -1` IMPORT_SQL="${IMPORT_DIR}hive.sql" echo ${IMPORT_SQL}
Impor metadata ke instance DPMS standby di region asli (region A):
gcloud metastore services import gcs ${DPMS_STANDBY_INSTANCE} \ --location=${DPMS_STANDBY_REGION} \ --dump-type=mysql \ --database-dump=${IMPORT_SQL} \ --import-id=import-$(date +"%Y-%m-%d-%H-%M-%S")
Pastikan metadata diimpor dengan benar:
gcloud dataproc jobs submit hive \ --cluster ${HADOOP_STANDBY} \ --region ${DPMS_STANDBY_REGION} \ --execute "select * from completed_orders limit 5;"
Menghasilkan output yang mencakup:
+----------------------------+------------------------------+-------------------------------------+--------------------------------+ | completed_orders.order_id | completed_orders.order_date | completed_orders.order_customer_id | completed_orders.order_status | +----------------------------+------------------------------+-------------------------------------+--------------------------------+ | 3 | 2013-07-25 00:00:00.0 | 12111 | COMPLETE | | 5 | 2013-07-25 00:00:00.0 | 11318 | COMPLETE | | 6 | 2013-07-25 00:00:00.0 | 7130 | COMPLETE | | 7 | 2013-07-25 00:00:00.0 | 4530 | COMPLETE | | 15 | 2013-07-25 00:00:00.0 | 2568 | COMPLETE | +----------------------------+------------------------------+-------------------------------------+--------------------------------+
Dataproc Metastore utama dan Dataproc Metastore standby telah menukar peran lagi.
Perbarui variabel lingkungan ke peran baru ini:
export DPMS_PRIMARY_REGION=us-central1 export DPMS_STANDBY_REGION=us-east1 export DPMS_PRIMARY_INSTANCE=dpms1 export DPMS_STANDBY_INSTANCE=dpms12 export HADOOP_PRIMARY=dataproc-cluster1 export HADOOP_STANDBY=dataproc-cluster2
Failback kini telah selesai. Sekarang Anda harus mengalihkan aplikasi klien ke cluster Dataproc utama baru di region A dengan memperbarui file konfigurasi klien Hadoop.
Membuat pencadangan metadata otomatis
Bagian ini menguraikan dua metode berbeda untuk mengotomatiskan ekspor dan impor cadangan metadata Anda. Metode pertama, Opsi 1: Cloud Run dan Cloud Scheduler, menggunakan Cloud Run dan Cloud Scheduler. Metode kedua, Opsi 2: Cloud Composer, menggunakan Cloud Composer. Dalam kedua contoh tersebut, tugas ekspor membuat cadangan metadata dari DPMS utama di region A. Tugas impor mengisi DPMS standby di region B dari pencadangan.
Jika sudah memiliki cluster Cloud Composer, Anda harus mempertimbangkan Opsi 2: Cloud Composer (dengan asumsi bahwa cluster Anda memiliki kapasitas komputasi yang memadai). Jika tidak, pilih Opsi 1: Cloud Run dan Cloud Scheduler. Opsi ini menggunakan model penetapan harga bayar sesuai penggunaan dan lebih ekonomis daripada Cloud Composer, yang memerlukan penggunaan resource komputasi persisten.
Opsi 1: Cloud Run dan Cloud Scheduler
Bagian ini menunjukkan cara menggunakan Cloud Run dan Cloud Scheduler untuk mengotomatiskan ekspor impor metadata DPMS.
Layanan Cloud Run
Bagian ini menunjukkan cara mem-build dua layanan Cloud Run untuk menjalankan tugas ekspor dan impor metadata.
Di Cloud Shell, aktifkan Cloud Run, Cloud Scheduler, Cloud Build, dan App Engine API:
gcloud services enable run.googleapis.com cloudscheduler.googleapis.com cloudbuild.googleapis.com appengine.googleapis.com
Anda mengaktifkan App Engine API karena layanan Cloud Scheduler memerlukan App Engine.
Build image Docker dengan Dockerfile yang disediakan:
cd metastore-disaster-recovery gcloud builds submit --tag gcr.io/$PROJECT/dpms_dr
Deploy image container Anda ke layanan Cloud Run di region utama (region A). Deployment ini bertanggung jawab untuk membuat cadangan metadata dari metastore utama:
gcloud run deploy dpms-export \ --image gcr.io/${PROJECT}/dpms_dr \ --region ${DPMS_PRIMARY_REGION} \ --platform managed \ --update-env-vars DPMS_STANDBY_REGION=${DPMS_STANDBY_REGION},BACKUP_BUCKET=${BACKUP_BUCKET},DPMS_STANDBY_INSTANCE=${DPMS_STANDBY_INSTANCE},DPMS_PRIMARY_INSTANCE=${DPMS_PRIMARY_INSTANCE},DPMS_PRIMARY_REGION=${DPMS_PRIMARY_REGION} \ --allow-unauthenticated \ --timeout=10m
Secara default, waktu tunggu permintaan layanan Cloud Run habis setelah 5 menit. Untuk membantu memastikan bahwa semua permintaan memiliki cukup waktu untuk berhasil selesai, contoh kode sebelumnya memperluas nilai waktu tunggu hingga setidaknya 10 menit.
Ambil URL deployment untuk layanan Cloud Run:
EXPORT_RUN_URL=$(gcloud run services describe dpms-export --platform managed --region ${DPMS_PRIMARY_REGION} --format ` "value(status.address.url)") echo ${EXPORT_RUN_URL}
Buat layanan Cloud Run kedua di region standby (region B). Layanan ini bertanggung jawab untuk mengimpor cadangan metadata dari
BACKUP_BUCKET
ke metastore standby:gcloud run deploy dpms-import \ --image gcr.io/${PROJECT}/dpms_dr \ --region ${DPMS_STANDBY_REGION} \ --platform managed \ --update-env-vars DPMS_STANDBY_REGION=${DPMS_STANDBY_REGION},BACKUP_BUCKET=${BACKUP_BUCKET},DPMS_STANDBY_INSTANCE=${DPMS_STANDBY_INSTANCE} \ --allow-unauthenticated \ --timeout=10m
Ambil URL deployment untuk layanan Cloud Run kedua:
IMPORT_RUN_URL=$(gcloud run services describe dpms-import --platform managed --region ${REGION_B} --format "value(status.address.url)") echo ${IMPORT_RUN_URL}
Penjadwalan tugas
Bagian ini menunjukkan cara menggunakan Cloud Scheduler untuk memicu dua layanan Cloud Run.
Di Cloud Shell, buat aplikasi App Engine, yang diperlukan Cloud Scheduler:
gcloud app create --region=${REGION_A}
Buat tugas Cloud Scheduler untuk menjadwalkan ekspor metadata dari metastore utama:
gcloud scheduler jobs create http dpms-export \ --schedule "*/15 * * * *" \ --http-method=post \ --uri=${EXPORT_RUN_URL}/export\
Tugas Cloud Scheduler membuat permintaan http
ke layanan Cloud Run setiap 15 menit. Layanan Cloud Run menjalankan aplikasi Flask dengan fungsi ekspor dan impor dalam penampung. Saat fungsi ekspor dipicu, fungsi tersebut akan mengekspor metadata ke Cloud Storage menggunakan perintah gcloud metastore services export
.
Secara umum, jika tugas Hadoop Anda sering menulis ke Metastore Hive, sebaiknya Anda sering mencadangkan metastore. Jadwal pencadangan yang baik akan berada dalam rentang setiap 15 menit hingga 60 menit.
Memicu pengujian layanan Cloud Run:
gcloud scheduler jobs run dpms-export
Pastikan Cloud Scheduler memicu operasi ekspor DPMS dengan benar:
gcloud metastore operations list --location ${REGION_A}
Outputnya akan terlihat seperti berikut:
OPERATION_NAME LOCATION TYPE TARGET DONE CREATE_TIME DURATION ... operation-a520936204508-5v23bx4y23f60-920f0a0f-9c2b56b5 us-central1 update dpms1 True 2021-05-13T20:05:04 2M23S
Jika nilai untuk
DONE
adalahFalse
, ekspor masih berlangsung. Untuk mengonfirmasi bahwa operasi telah selesai, jalankan kembali perintahgcloud metastore operations list --location ${REGION_A}
hingga nilainya menjadiTrue
.Pelajari perintah
gcloud metastore operations
lebih lanjut di dokumentasi referensi.(Opsional) Buat tugas Cloud Scheduler untuk menjadwalkan impor ke metastore standby:
gcloud scheduler jobs create http dpms-import \ --schedule "*/15 * * * *" \ --http-method=post \ --uri=${IMPORT_RUN_URL}/import
Langkah ini bergantung pada persyaratan batas waktu pemulihan (RTO) Anda.
Jika Anda ingin hot standby untuk meminimalkan waktu failover, Anda harus menjadwalkan tugas impor ini. Fitur ini akan memuat ulang DPMS standby Anda setiap 15 menit.
Jika cold standby sudah memadai untuk kebutuhan RTO Anda, Anda dapat melewati langkah ini dan juga menghapus cluster DPMS dan Dataproc standby untuk lebih mengurangi tagihan bulanan secara keseluruhan. Saat melakukan failover ke region standby (region B), sediakan DPMS standby dan cluster Dataproc, serta jalankan tugas impor. Karena file cadangan disimpan di bucket dua regional, file tersebut dapat diakses meskipun region utama Anda (region A) mengalami gangguan.
Menangani Kegagalan
Setelah melakukan failover ke region B, Anda harus menerapkan langkah-langkah berikut untuk mempertahankan persyaratan disaster recovery dan melindungi infrastruktur Anda dari potensi kegagalan di region B:
- Jeda tugas Cloud Scheduler yang ada.
- Perbarui wilayah DPMS utama ke wilayah B (
us-east1
). - Perbarui wilayah DPMS standby ke wilayah A (
us-central1
). - Update instance utama DPMS ke
dpms2
. - Update instance standby DPMS ke
dpms1
. - Deploy ulang layanan Cloud Run berdasarkan variabel yang diperbarui.
- Buat tugas Cloud Scheduler baru yang mengarah ke layanan Cloud Run baru Anda.
Langkah-langkah yang diperlukan dalam daftar sebelumnya mengulangi banyak langkah dari bagian sebelumnya, hanya dengan sedikit penyesuaian (seperti menukar nama region). Gunakan informasi di Opsi 1: Cloud Run dan Cloud Scheduler untuk menyelesaikan tugas yang diperlukan ini.
Opsi 2: Cloud Composer
Bagian ini menunjukkan cara menggunakan Cloud Composer untuk menjalankan tugas ekspor dan impor dalam satu grafik asiklik terarah (DAG) Airflow.
Di Cloud Shell, aktifkan Cloud Composer API:
gcloud services enable composer.googleapis.com
Buat lingkungan Cloud Composer:
export COMPOSER_ENV=comp-env gcloud beta composer environments create ${COMPOSER_ENV} \ --location ${DPMS_PRIMARY_REGION} \ --image-version composer-1.17.0-preview.1-airflow-2.0.1 \ --python-version 3
- Image composer
composer-1.17.0-preview.1-airflow-2.0.1
adalah versi terbaru sejak publikasi. - Lingkungan Composer hanya dapat menggunakan satu versi Python utama. Python 3 dipilih karena Python 2 memiliki masalah dukungan.
- Image composer
Konfigurasikan lingkungan Cloud Composer Anda dengan variabel lingkungan berikut:
gcloud composer environments update ${COMPOSER_ENV} \ --location ${DPMS_PRIMARY_REGION} \ --update-env-variables=DPMS_PRIMARY_REGION=${DPMS_PRIMARY_REGION},DPMS_STANDBY_REGION=${DPMS_STANDBY_REGION},BACKUP_BUCKET=${BACKUP_BUCKET},DPMS_PRIMARY_INSTANCE=${DPMS_PRIMARY_INSTANCE},DPMS_STANDBY_INSTANCE=${DPMS_STANDBY_INSTANCE}
Upload file DAG ke lingkungan Composer Anda:
gcloud composer environments storage dags import \ --environment ${COMPOSER_ENV} \ --location ${DPMS_PRIMARY_REGION} \ --source dpms_dag.py
Ambil URL Airflow:
gcloud composer environments describe ${COMPOSER_ENV} \ --location ${DPMS_PRIMARY_REGION} \ --format "value(config.airflowUri)"
Di browser, buka URL yang ditampilkan oleh perintah sebelumnya.
Anda akan melihat entri DAG baru yang disebut
dpms_dag
. Dalam satu operasi, DAG akan mengeksekusi ekspor, diikuti dengan impor. DAG mengasumsikan bahwa DPMS standby selalu aktif. Jika tidak memerlukan hot standby dan hanya ingin menjalankan tugas ekspor, Anda harus mengomentari semua tugas terkait impor di kode (find_backup, wait_for_ready_status, current_ts
,dpms_import)
.Klik ikon Panah untuk memicu DAG melakukan pengujian:
Klik Tampilan Grafik DAG yang sedang berjalan untuk memeriksa status setiap tugas:
Setelah Anda memvalidasi DAG, biarkan Airflow menjalankannya sesuai jadwal reguler. Jadwal ditetapkan ke interval 30 menit, tetapi dapat disesuaikan dengan mengubah parameter
schedule_interval
dalam kode untuk memenuhi persyaratan pengaturan waktu Anda.
Menangani failover
Setelah melakukan failover ke region B, Anda harus menerapkan langkah-langkah berikut untuk mempertahankan persyaratan disaster recovery dan melindungi infrastruktur Anda dari potensi kegagalan di region B:
- Perbarui wilayah DPMS utama ke wilayah B (
us-east1
). - Perbarui wilayah DPMS standby ke wilayah A (
us-central1
). - Update instance utama DPMS ke
dpms2
. - Update instance standby DPMS ke
dpms1
. - Buat lingkungan Cloud Composer baru di region B (
us-east1
). - Konfigurasikan lingkungan Cloud Composer dengan variabel lingkungan yang diperbarui.
- Impor DAG Airflow
dpms_dag
yang sama seperti sebelumnya ke lingkungan Cloud Composer baru Anda.
Langkah-langkah yang diperlukan dalam daftar sebelumnya mengulangi banyak langkah dari bagian sebelumnya, hanya dengan sedikit penyesuaian (seperti menukar nama region). Gunakan informasi di Opsi 2: Cloud Composer untuk menyelesaikan tugas yang diperlukan ini.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah selanjutnya
- Pelajari cara memantau instance Dataproc Metastore
- Pahami cara menyinkronkan metastore Hive dengan Data Catalog
- Pelajari lebih lanjut cara mengembangkan layanan Cloud Run
- Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.