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):
- Instal gcloud CLI.
- Lakukan inisialisasi gcloud CLI.
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.