Storage Transfer Service mendukung transfer dari sumber Hadoop Distributed File System (HDFS) cloud dan lokal.
Transfer dari HDFS harus menggunakan Cloud Storage sebagai tujuan.
Kasus penggunaan mencakup migrasi dari penyimpanan lokal ke Cloud Storage, pengarsipan data untuk mengosongkan ruang penyimpanan lokal, mereplikasi data ke Google Cloud untuk kelangsungan bisnis, atau mentransfer data ke Google Cloud untuk analisis dan pemrosesan.
Prasyarat
Sebelum mengonfigurasi transfer, pastikan Anda telah menyiapkan hal berikut:
- Izin pengguna: Pastikan akun pengguna atau akun layanan terkelola pengguna memiliki izin untuk membuat tugas transfer dan kumpulan agen. Lihat Izin pengguna yang diperlukan.
- Izin level project berbasis agen: Pastikan Anda telah mengonfigurasi peran level project yang diperlukan untuk akun agen layanan dan agen transfer. Lihat Izin level project berbasis agen.
- Izin bucket tujuan: Berikan izin yang diperlukan di bucket Cloud Storage tujuan Anda. Lihat Mengonfigurasi akses ke sink: Cloud Storage.
Menginstal agen ke dalam kumpulan agen
Transfer berbasis agen menggunakan agen software untuk mengatur transfer. Agen ini harus diinstal di satu atau beberapa mesin yang memiliki akses ke sistem file Anda. Agen harus memiliki akses ke namenode, semua datanode, Hadoop Key Management Server (KMS), dan Kerberos Key Distribution Center (KDC).
Agen transfer bekerja sama dalam kumpulan agen. Meningkatkan jumlah agen dapat meningkatkan performa tugas secara keseluruhan, tetapi hal ini bergantung pada beberapa faktor.
Menambahkan lebih banyak agen dapat membantu, hingga sekitar setengah jumlah node di cluster HDFS Anda. Misalnya, dengan cluster 30 node, peningkatan dari 5 menjadi 15 agen akan meningkatkan performa, tetapi lebih dari 15 agen kemungkinan tidak akan membuat banyak perbedaan.
Untuk cluster HDFS kecil, satu agen mungkin sudah cukup.
Agen tambahan cenderung memiliki dampak yang lebih besar pada performa saat transfer mencakup sejumlah besar file kecil. Storage Transfer Service mencapai throughput tinggi dengan memparalelkan tugas transfer di antara beberapa agen. Makin banyak file dalam workload, makin besar manfaat menambahkan lebih banyak agen.
Membuat kumpulan agen
Buat kumpulan agen. Gunakan
akun pengguna
untuk tindakan ini.
Menginstal agen
Instal agen ke dalam kumpulan agen. Gunakan akun agen transfer Anda
untuk tindakan ini.
Konsol Google Cloud
Di konsol Google Cloud , buka halaman Agent pools.
Pilih kumpulan agen yang akan ditambahi agen baru.
Klik Install agent.
Ikuti petunjuk untuk menginstal dan menjalankan agen.
Untuk mengetahui informasi selengkapnya tentang opsi command line agen, lihat Opsi command line agen.
gcloud CLI
Untuk menginstal satu atau beberapa agen menggunakan gcloud CLI, jalankan
gcloud transfer agents install:
gcloud transfer agents install --pool=POOL_NAME \
--count=NUM_AGENTS \
--mount-directories=MOUNT_DIRECTORIES \
--hdfs-namenode-uri=HDFS_NAMENODE_URI \
--hdfs-username=HDFS_USERNAME \
--hdfs-data-transfer-protection=HDFS_DATA_TRANSFER_PROTECTION \
--kerberos-config-file=KERBEROS_CONFIG_FILE \
--kerberos-keytab-file=KERBEROS_KEYTAB_FILE \
--kerberos-user-principal=KERBEROS_USER_PRINCIPAL \
--kerberos-service-principal=KERBEROS_SERVICE_PRINCIPAL \
Ganti kode berikut:
--hdfs-namenode-urimenentukan cluster HDFS termasuk skema, namenode, dan port, dalam format URI. Contoh:rpc://my-namenode:8020http://my-namenode:9870
Gunakan HTTP atau HTTPS untuk WebHDFS. Jika tidak ada skema yang diberikan, kami akan mengasumsikan RPC. Jika tidak ada port yang disediakan, defaultnya adalah
8020untuk RPC,9870untuk HTTP, dan9871untuk HTTPS. Misalnya, inputmy-namenodemenjadirpc://my-namenode:8020.Jika cluster Anda dikonfigurasi dengan beberapa namenode, tentukan node utama saat ini. Lihat Cluster dengan beberapa namenode untuk mengetahui informasi selengkapnya.
--hdfs-usernameadalah nama pengguna untuk terhubung ke cluster HDFS dengan autentikasi sederhana. Hilangkan flag ini jika Anda melakukan autentikasi dengan Kerberos, atau jika Anda terhubung tanpa autentikasi apa pun.--hdfs-data-transfer-protection(opsional) adalah setelan quality of protection (QOP) sisi klien untuk cluster Kerberized. Nilai tidak boleh lebih ketat daripada nilai QOP sisi server. Nilai yang valid adalah:authentication,integrity, danprivacy.
Jika Anda melakukan autentikasi dengan Kerberos, sertakan juga flag berikut:
--kerberos-config-fileadalah jalur ke file konfigurasi Kerberos. Contoh,--kerberos-config-file=/etc/krb5.conf.--kerberos-user-principaladalah akun utama pengguna Kerberos yang akan digunakan. Contoh,--kerberos-user-principal=user1.--kerberos-keytab-fileadalah jalur ke file Keytab yang berisi akun utama pengguna yang ditentukan dengan flag--kerberos-user-principal. Contoh,--kerberos-keytab-file=/home/me/kerberos/user1.keytab.--kerberos-service-principaladalah akun utama layanan Kerberos yang akan digunakan, dalam bentuk<primary>/<instance>. Realm dipetakan dari file konfigurasi Kerberos Anda; realm yang diberikan akan diabaikan. Jika flag ini tidak ditentukan, defaultnya adalahhdfs/<namenode_fqdn>dengan<namenode_fqdn>sebagai nama domain yang sepenuhnya memenuhi syarat yang ditentukan dalam file konfigurasi.Misalnya,
--kerberos-service-principal=hdfs/my-namenode.a.example.com.
Alat ini akan memandu Anda melalui langkah-langkah yang diperlukan untuk menginstal agen. Perintah
ini menginstal NUM_AGENTS agen di komputer Anda, yang dipetakan ke
nama pool yang ditentukan sebagai POOL_NAME, dan mengautentikasi
agen menggunakan kredensial gcloud Anda. Nama pool harus ada, atau error akan ditampilkan.
Flag --mount-directories bersifat opsional, tetapi sangat direkomendasikan. Nilainya adalah daftar direktori yang dipisahkan koma pada sistem file yang akan diberi akses oleh agen.
Jika flag ini dihilangkan, seluruh sistem file akan dipasang ke container agen. Lihat
referensi gcloud
untuk mengetahui detail selengkapnya.
docker run
Sebelum menggunakan docker run untuk menginstal agen, ikuti petunjuk untuk
menginstal Docker.
Perintah docker run menginstal satu agen. Untuk meningkatkan jumlah agen
di pool Anda, jalankan ulang perintah ini sebanyak yang diperlukan.
Flag perintah yang diperlukan bergantung pada jenis autentikasi yang Anda gunakan.
Kerberos
Untuk melakukan autentikasi ke sistem file Anda menggunakan Kerberos, gunakan perintah berikut:
sudo docker run -d --ulimit memlock=64000000 --rm \
--network=host \
-v /:/transfer_root \
gcr.io/cloud-ingest/tsop-agent:latest \
--enable-mount-directory \
--project-id=${PROJECT_ID} \
--hostname=$(hostname) \
--creds-file="service_account.json" \
--agent-pool=${AGENT_POOL_NAME} \
--hdfs-namenode-uri=cluster-namenode \
--kerberos-config-file=/etc/krb5.conf \
--kerberos-user-principal=user \
--kerberos-keytab-file=/path/to/folder.keytab
Ganti kode berikut:
--network=hostharus dihilangkan jika Anda menjalankan lebih dari satu agen di mesin ini.--hdfs-namenode-uri: Skema, namenode, dan port, dalam format URI, yang mewakili cluster HDFS. Contoh:rpc://my-namenode:8020http://my-namenode:9870
Gunakan HTTP atau HTTPS untuk WebHDFS. Jika tidak ada skema yang diberikan, kami akan mengasumsikan RPC. Jika
tidak ada port yang disediakan, defaultnya adalah 8020 untuk RPC, 9870 untuk HTTP, dan
9871 untuk HTTPS. Misalnya, input my-namenode menjadi
rpc://my-namenode:8020.
Jika cluster Anda dikonfigurasi dengan beberapa namenode, tentukan node utama saat ini. Lihat Cluster dengan beberapa namenode untuk mengetahui informasi selengkapnya.
--kerberos-config-file: Jalur ke file konfigurasi Kerberos. Defaultnya adalah/etc/krb5.conf.--kerberos-user-principal: Akun utama pengguna Kerberos.--kerberos-keytab-file: Jalur ke file Keytab yang berisi akun utama pengguna yang ditentukan dengan--kerberos-user-principal.--kerberos-service-principal: Akun utama layanan Kerberos yang akan digunakan, dalam format 'service/instance'. Realm dipetakan dari file konfigurasi Kerberos Anda; realm yang diberikan akan diabaikan. Jika flag ini tidak ditentukan, defaultnya adalahhdfs/<namenode_fqdn>denganfqdnsebagai nama domain yang sepenuhnya memenuhi syarat.
Autentikasi sederhana
Untuk melakukan autentikasi ke sistem file Anda menggunakan autentikasi sederhana:
sudo docker run -d --ulimit memlock=64000000 --rm \
--network=host \
-v /:/transfer_root \
gcr.io/cloud-ingest/tsop-agent:latest \
--enable-mount-directory \
--project-id=${PROJECT_ID} \
--hostname=$(hostname) \
--creds-file="${CREDS_FILE}" \
--agent-pool="${AGENT_POOL_NAME}" \
--hdfs-namenode-uri=cluster-namenode \
--hdfs-username="${USERNAME}"
Ganti kode berikut:
--hdfs-username: Nama pengguna yang akan digunakan saat terhubung ke cluster HDFS menggunakan autentikasi sederhana.--hdfs-namenode-uri: Skema, namenode, dan port, dalam format URI, yang mewakili cluster HDFS. Misalnya:rpc://my-namenode:8020http://my-namenode:9870
Gunakan HTTP atau HTTPS untuk WebHDFS. Jika tidak ada skema yang diberikan, kami mengasumsikan RPC.
Jika tidak ada port yang disediakan, defaultnya adalah 8020 untuk RPC, 9870 untuk HTTP, dan 9871 untuk HTTPS. Misalnya, input my-namenode menjadi
rpc://my-namenode:8020.
Jika cluster Anda dikonfigurasi dengan beberapa namenode, tentukan node utama saat ini. Lihat Cluster dengan beberapa namenode untuk mengetahui informasi selengkapnya.
Tanpa autentikasi
Untuk terhubung ke sistem file Anda tanpa autentikasi apa pun:
sudo docker run -d --ulimit memlock=64000000 --rm \
--network=host \
-v /:/transfer_root \
gcr.io/cloud-ingest/tsop-agent:latest \
--enable-mount-directory \
--project-id=${PROJECT_ID} \
--hostname=$(hostname) \
--creds-file="${CREDS_FILE}" \
--agent-pool="${AGENT_POOL_NAME}" \
--hdfs-namenode-uri=cluster-namenode \
Ganti kode berikut:
--hdfs-namenode-uri: Skema, namenode, dan port, dalam format URI, yang mewakili cluster HDFS. Misalnya:rpc://my-namenode:8020http://my-namenode:9870
Gunakan HTTP atau HTTPS untuk WebHDFS. Jika tidak ada skema yang diberikan, kami mengasumsikan RPC.
Jika tidak ada port yang disediakan, defaultnya adalah 8020 untuk RPC, 9870 untuk HTTP, dan 9871 untuk HTTPS. Misalnya, input my-namenode menjadi
rpc://my-namenode:8020.
Jika cluster Anda dikonfigurasi dengan beberapa namenode, tentukan node utama saat ini. Lihat Cluster dengan beberapa namenode untuk mengetahui informasi selengkapnya.
Opsi transfer
Fitur Storage Transfer Service berikut tersedia untuk transfer dari HDFS ke Cloud Storage.
File yang ditransfer dari HDFS tidak mempertahankan metadata-nya.
Buat transfer
Jangan menyertakan informasi sensitif seperti informasi identitas pribadi (PII) atau data keamanan dalam nama tugas transfer Anda. Nama resource dapat disebarkan ke nama resource Google Cloud lainnya dan dapat diekspos ke sistem internal Google di luar project Anda.
Storage Transfer Service menyediakan beberapa antarmuka untuk membuat transfer.
Konsol Google Cloud
Buka halaman Storage Transfer Service di konsol Google Cloud .
Klik Buat tugas transfer. Halaman Create a transfer job akan ditampilkan.
Pilih Hadoop Distributed File System sebagai Source type. Tujuannya harus Google Cloud Storage.
Klik Next step.
Mengonfigurasi sumber
Tentukan informasi yang diperlukan untuk transfer ini:
Pilih kumpulan agen yang Anda konfigurasi untuk transfer ini.
Masukkan Jalur yang akan ditransfer, relatif terhadap direktori utama.
Secara opsional, tentukan filter yang akan diterapkan ke data sumber.
Klik Next step.
Mengonfigurasi sink Anda
Di kolom Bucket or folder, masukkan bucket tujuan dan (opsional) nama folder, atau klik Browse untuk memilih bucket dari daftar bucket yang ada di project Anda saat ini. Untuk membuat bucket baru, klik
Create new bucket.Klik Next step.
Menjadwalkan transfer
Anda dapat menjadwalkan transfer untuk dijalankan satu kali saja, atau mengonfigurasi transfer berulang.
Klik Next step.
Memilih setelan transfer
Di kolom Description, masukkan deskripsi transfer. Sebagai praktik terbaik, masukkan deskripsi yang bermakna dan unik agar Anda dapat membedakan tugas.
Di bagian Metadata options, pilih kelas penyimpanan Cloud Storage, dan apakah akan menyimpan waktu pembuatan setiap objek. Lihat Penyimpanan metadata untuk mengetahui detailnya.
Di bagian When to overwrite, pilih salah satu opsi berikut:
Never: Jangan menimpa file tujuan. Jika ada file dengan nama yang sama, file tersebut tidak akan ditransfer.
Jika berbeda: Menimpa file tujuan jika file sumber dengan nama yang sama memiliki nilai Etag atau checksum yang berbeda.
Selalu: Selalu menimpa file tujuan jika file sumber memiliki nama yang sama, meskipun file tersebut identik.
Di bagian Kapan harus menghapus, pilih salah satu opsi berikut:
Jangan pernah: Jangan pernah menghapus file dari sumber atau tujuan.
Delete files from destination if they're not also at source: Jika file di bucket Cloud Storage tujuan tidak ada di sumber, hapus file dari bucket Cloud Storage.
Opsi ini memastikan bahwa bucket Cloud Storage tujuan sama persis dengan sumber Anda.
Pilih apakah akan mengaktifkan logging transfer dan/atau notifikasi Pub/Sub.
Klik Create untuk membuat tugas transfer.
gcloud CLI
Untuk membuat tugas transfer baru, gunakan perintah gcloud transfer jobs create. Membuat tugas baru akan memulai transfer yang ditentukan, kecuali jika jadwal atau --do-not-run ditentukan.
gcloud transfer jobs create \
hdfs:///PATH/ gs://BUCKET_NAME/PATH/ \
--source-agent-pool=AGENT_POOL_NAME
Ganti kode berikut:
PATHadalah jalur absolut dari root cluster HDFS. Namenode dan port cluster dikonfigurasi di tingkat agen, sehingga perintah pembuatan tugas hanya perlu menentukan jalur (opsional) dan kumpulan agen.--source-agent-poolmenentukan kumpulan agen sumber yang akan digunakan untuk transfer ini.
Opsi tambahannya mencakup:
--do-not-runmencegah Storage Transfer Service menjalankan tugas setelah perintah dikirimkan. Untuk menjalankan tugas, perbarui tugas untuk menambahkan jadwal, atau gunakanjobs rununtuk memulainya secara manual.--manifest-filemenentukan jalur ke file CSV di Cloud Storage yang berisi daftar file yang akan ditransfer dari sumber Anda. Untuk pemformatan file manifes, lihat Mentransfer file atau objek tertentu menggunakan manifes.Informasi lowongan: Anda dapat menentukan
--namedan--description.Jadwal: Tentukan
--schedule-starts,--schedule-repeats-every, dan--schedule-repeats-until, atau--do-not-run.Kondisi objek: Gunakan kondisi untuk menentukan objek mana yang akan ditransfer. Hal ini mencakup
--include-prefixesdan--exclude-prefixes, serta kondisi berbasis waktu di--include-modified-[before | after]-[absolute | relative]. Jika Anda menentukan folder dengan sumber, filter awalan akan relatif terhadap folder tersebut. Lihat Memfilter objek sumber menurut awalan untuk mengetahui informasi selengkapnya.Opsi transfer: Tentukan apakah akan menimpa file tujuan (
--overwrite-when=differentataualways) dan apakah akan menghapus file tertentu selama atau setelah transfer (--delete-from=destination-if-uniqueatausource-after-transfer); dan secara opsional menetapkan kelas penyimpanan pada objek yang ditransfer (--custom-storage-class).Notifikasi: Konfigurasikan notifikasi Pub/Sub untuk transfer dengan
--notification-pubsub-topic,--notification-event-types, dan--notification-payload-format.
Untuk melihat semua opsi, jalankan gcloud transfer jobs create --help atau lihat
dokumentasi referensi gcloud.
REST API
Untuk membuat transfer dari sumber HDFS menggunakan REST API, buat objek JSON yang mirip dengan contoh berikut.
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
...
"transferSpec": {
"source_agent_pool_name":"POOL_NAME",
"hdfsDataSource": {
"path": "/mount"
},
"gcsDataSink": {
"bucketName": "SINK_NAME"
},
"transferOptions": {
"deleteObjectsFromSourceAfterTransfer": false
}
}
}
Lihat referensi transferJobs.create untuk mengetahui detail tentang kolom tambahan yang didukung.
Cluster dengan beberapa namenode
Agen Storage Transfer Service hanya dapat dikonfigurasi dengan satu namenode. Jika cluster HDFS Anda dikonfigurasi dengan beberapa namenode ("ketersediaan tinggi"), dan ada peristiwa failover yang menghasilkan namenode utama baru, Anda harus menginstal ulang agen dengan namenode yang benar.
Untuk menghapus agen lama, lihat Menghapus agen.
Namenode aktif cluster Anda dapat diambil dengan menjalankan:
hdfs haadmin -getAllServiceState