Menggunakan Cloud Storage dengan big data

Cloud Storage adalah bagian penting dalam menyimpan dan menangani Big Data di Google Cloud. Misalnya, Anda dapat menggunakan Cloud Storage untuk memuat data ke BigQuery, menyimpan file staging dan data sementara untuk pipeline Dataflow, serta berintegrasi dengan Dataproc, sehingga Anda dapat menjalankan tugas Apache Hadoop atau Apache Spark langsung pada data Anda di Cloud Storage.

Halaman ini menjelaskan cara menggunakan alat command line gcloud untuk menyelesaikan tugas big data, seperti menyalin file besar atau menyalin banyak file secara paralel. Untuk mempelajari gcloud lebih lanjut, lihat panduan memulai gcloud.

Sebelum memulai

Untuk mendapatkan hasil maksimal dari contoh yang ditampilkan di halaman ini, Anda harus menyelesaikan langkah-langkah berikut (jika belum melakukannya):

Menyalin banyak file ke bucket

Perintah cp secara efisien mengupload file dalam jumlah besar dengan melakukan penyalinan paralel (multi-thread/multi-pemrosesan) secara otomatis sesuai kebutuhan. Untuk menyalin subdirektori secara rekursif, gunakan flag --recursive dalam perintah. Misalnya, untuk menyalin file yang mencakup subdirektori dari direktori lokal bernama top-level-dir ke bucket, Anda dapat menggunakan:

gcloud storage cp top-level-dir gs://example-bucket --recursive

Anda dapat menggunakan karakter pengganti untuk mencocokkan kumpulan nama tertentu untuk suatu operasi. Misalnya, untuk menyalin hanya file yang diawali dengan image:

gcloud storage cp top-level-dir/subdir/image* gs://example-bucket --recursive

Anda dapat menghapus file menggunakan karakter pengganti yang sama:

gcloud storage rm gs://example-bucket/top-level-dir/subdir/image*

Selain menyalin file lokal ke cloud dan sebaliknya, Anda juga dapat menyalin di cloud, misalnya:

gcloud storage cp gs://example-bucket/top-level-dir/subdir/** gs://example-bucket/top-level-dir/subdir/subdir2

gcloud storage otomatis mendeteksi bahwa Anda memindahkan beberapa file dan membuatnya di direktori baru bernama subdir2.

Menyinkronkan direktori lokal

Jika ingin menyinkronkan direktori lokal dengan bucket atau sebaliknya, Anda dapat melakukannya dengan perintah gcloud storage rsync. Misalnya, untuk membuat gs://example-bucket cocok dengan konten direktori lokal local-dir Anda dapat menggunakan:

gcloud storage rsync local-dir gs://example-bucket --recursive

Jika Anda menggunakan flag --delete-unmatched-destination-objects, hal ini menandakan perintah untuk menghapus file di tujuan (gs://example-bucket dalam perintah di atas) yang tidak ada di sumber (local-dir). Anda juga dapat melakukan sinkronisasi di antara dua bucket.

Menyalin file berukuran besar ke bucket

Secara umum, saat menangani big data, setelah data berada di cloud, data tersebut akan tetap berada di sana. Setelah data Anda berada di Google Cloud, sangat cepat untuk mentransfernya ke layanan lain di lokasi yang sama, seperti Compute Engine.

Untuk menyalin file lokal berukuran besar ke bucket, gunakan:

gcloud storage cp local-file gs://example-bucket

Untuk menyalin file besar dari bucket yang ada, gunakan:

gcloud storage cp gs://example-source-bucket/file  gs://example-destination-bucket

gcloud storage memanfaatkan sepenuhnya fitur upload dan download Cloud Storage yang dapat dilanjutkan. Untuk file besar, hal ini sangat penting karena kemungkinan kegagalan jaringan di ISP Anda akan meningkat seiring dengan ukuran data yang ditransfer. Dengan melanjutkan upload berdasarkan jumlah byte yang benar-benar diterima server, gcloud storage akan menghindari pengiriman ulang byte yang tidak perlu dan memastikan bahwa upload pada akhirnya dapat diselesaikan. Logika yang sama diterapkan untuk download berdasarkan ukuran file lokal.

Mengonfigurasi bucket

Tugas big data yang umum di mana Anda ingin mengonfigurasi sebuah bucket termasuk saat Anda memindahkan data ke kelas penyimpanan yang berbeda, mengonfigurasi pembuatan versi objek, atau menyiapkan aturan siklus proses.

Anda dapat mencantumkan detail konfigurasi bucket dengan buckets describe:

gcloud storage buckets describe gs://example-bucket

Dalam output, perhatikan informasi konfigurasi bucket, yang sebagian besar juga dapat dikonfigurasi melalui gcloud storage:

  • CORS: mengontrol setelan Cross-Origin-Resource-Sharing untuk bucket.
  • Situs: memungkinkan objek di dalam bucket untuk berfungsi sebagai halaman web atau digunakan sebagai aset statis di sebuah situs.
  • Pembuatan versi: menyebabkan penghapusan objek di bucket untuk membuat versi lama.
  • Kelas Penyimpanan: memungkinkan Anda menetapkan kelas penyimpanan yang ditetapkan selama pembuatan bucket.
  • Siklus Proses: memungkinkan operasi berkala berjalan di bucket - yang paling umum adalah penghapusan objek yang sudah tidak berlaku.

Misalnya, Anda hanya ingin menyimpan file dalam bucket tertentu hanya selama satu hari, maka Anda dapat menyiapkan aturan siklus proses untuk bucket tersebut dengan:

echo '{ "rule": [{ "action": {"type": "Delete"}, "condition": {"age": 1}}]}' > lifecycle_config.json
gcloud storage buckets update gs://example-bucket --lifecycle-file=lifecycle_config.json

Kini, setiap objek dalam bucket yang berusia lebih dari satu hari akan otomatis dihapus dari bucket ini. Anda dapat memverifikasi konfigurasi yang baru saja ditetapkan dengan perintah buckets describe (perintah konfigurasi lainnya berfungsi dengan cara yang sama):

gcloud storage buckets describe gs://example-bucket

Berbagi data di bucket

Saat menangani big data, Anda mungkin akan mengerjakan file secara kolaboratif dan harus dapat memberikan akses ke orang atau kelompok tertentu. Kebijakan Identity and Access Management menentukan pihak yang dapat mengakses file Anda dan hal yang boleh mereka lakukan. Anda dapat melihat kebijakan IAM bucket menggunakan perintah buckets get-iam-policy:

gcloud storage buckets get-iam-policy gs://example-bucket

Respons terhadap perintah tersebut akan menampilkan akun utama, yang merupakan akun dengan wewenang untuk mengakses bucket Anda, dan peran, yang merupakan kumpulan izin yang diberikan kepada akun utama.

Tiga skenario umum untuk berbagi data adalah berbagi secara publik, berbagi dengan grup, dan berbagi dengan seseorang:

  • Berbagi secara publik: Untuk bucket yang kontennya dimaksudkan untuk dicantumkan dan dibaca oleh siapa saja di Internet, Anda dapat mengonfigurasi kebijakan IAM menggunakan penetapan 'AllUsers':

    gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=allUsers --role=roles/storage.objectViewer

  • Berbagi dengan grup: Untuk kolaborator yang tidak memiliki akses ke resource Google Cloud Anda yang lain, sebaiknya Anda membuat grup Google lalu menambahkan grup Google ke bucket. Misalnya, untuk memberikan akses ke Google Grup my-group, Anda dapat mengonfigurasi kebijakan IAM berikut:

    gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=group:my-group@googlegroups.com --role=roles/storage.objectViewer

    Untuk mengetahui informasi selengkapnya, lihat Menggunakan Grup untuk Mengontrol Akses ke Objek.

  • Berbagi dengan seseorang: Bagi banyak kolaborator, gunakan grup untuk memberikan akses secara massal. Untuk satu orang, Anda dapat memberikan akses baca sebagai berikut:

    gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=user:liz@gmail.com --role=roles/storage.objectViewer

Membersihkan bucket

Anda dapat membersihkan bucket secara cepat menggunakan perintah berikut:

gcloud storage rm gs://example-bucket/ --recursive

Bekerja dengan checksum

Saat melakukan penyalinan, perintah gcloud storage cp dan gcloud storage rsync memvalidasi bahwa checksum file sumber cocok dengan checksum file tujuan. Dalam kasus yang jarang terjadi ketika checksum tidak cocok, gcloud storage akan menghapus salinan yang tidak valid dan mencetak pesan peringatan. Untuk mengetahui informasi selengkapnya, lihat validasi checksum.

Anda dapat menggunakan gcloud storage untuk mendapatkan checksum objek dalam bucket. Misalnya, Anda menyalin objek data publik Landsat ke bucket kerja dengan:

gcloud storage cp gs://gcp-public-data-landsat/LC08/01/001/003/LC08_L1GT_001003_20140812_20170420_01_T2/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF gs://example-bucket

Kini, Anda bisa mendapatkan checksum dari file versi bucket publik dan versi file di bucket Anda untuk memastikan kecocokannya:

gcloud storage objects describe gs://example-bucket/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF
gcloud storage objects describe gs://gcp-public-data-landsat/LC08/01/001/003/LC08_L1GT_001003_20140812_20170420_01_T2/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF

Anda juga dapat menggunakan gcloud storage untuk menghitung checksum file lokal. Misalnya, data Anda berada dalam file di pusat data lokal dan Anda menyalinnya ke Cloud Storage. Anda dapat menggunakan gcloud storage hash untuk mendapatkan checksum file lokal, lalu membandingkannya dengan checksum file yang Anda salin ke bucket. Untuk mendapatkan checksum penggunaan file lokal:

gcloud storage hash local-file

Nilai MD5

Untuk objek non-gabungan, menjalankan gcloud storage objects describe pada objek dalam bucket akan menampilkan output seperti berikut:

bucket: example-bucket
contentType: text/plain
crc32c: FTiauw==
customTime: '1970-01-01T00:00:00+00:00'
etag: CPjo7ILqxsQCEAE=
generation: '1629833823159214'
id: example-bucket/100MBfile.txt/1629833823159214
kind: storage#object
md5Hash: daHmCObxxQdY9P7lp9jj0A==
...

Menjalankan gcloud storage hash pada file lokal akan menampilkan output seperti berikut:

---
crc32c_hash: IJfuvg==
digest_format: base64
md5_hash: +bqpwgYMTRn0kWmp5HXRMw==
url: file.txt

Kedua output memiliki nilai CRC32c dan MD5. Tidak ada nilai MD5 untuk objek gabungan, seperti yang dibuat dari upload gabungan paralel.

Langkah berikutnya