Artikel ini menjelaskan cara memasang data sebesar 10 GB ke OSS Bucket ke direktori mesin virtual (VM), sehingga Anda dapat menggunakan data tersebut di Batch Compute dengan mengakses file lokal.
Asumsikan bahwa data 10 GB disimpan di direktori oss://mybucket/mydir/ di OSS Bucket Anda.
Anda dapat memasang direktori OSS ini ke direktori /home/admin/mydir/, yang diperlakukan sebagai direktori lokal oleh program tugas.
CATATAN: Jika gambar Windows digunakan, direktori hanya dapat dipasang ke drive (seperti "E:"), tetapi tidak dapat dipasang ke folder.
API OSS berbeda dari API sistem file konvensional. Untuk mendukung migrasi cepat program konvensional, Batch Compute memungkinkan Anda untuk langsung memasang direktori OSS Anda ke sistem file lokal VM, sehingga aplikasi dapat mengakses data di OSS Bucket tanpa pemrograman tambahan terhadap OSS Bucket.
Pemasangan OSS dibagi menjadi pemasangan baca-saja dan pemasangan dapat ditulis.
Mode pemasangan baca-saja digunakan untuk mengakses data input suatu program. Permintaan akses data pada titik pemasangan baca-saja secara otomatis dikonversi menjadi permintaan akses OSS tanpa perlu mengunduh data ke file lokal VM.
Data hasil yang ditulis ke direktori pemasangan dapat ditulis disimpan dalam file lokal VM dan kemudian secara otomatis diunggah ke lokasi yang sesuai di OSS Bucket setelah pekerjaan selesai. Dalam mode pemasangan dapat ditulis, pastikan bahwa VM telah mengalokasikan ruang disk yang cukup untuk data hasil.
1. Memasang direktori data
Anda dapat mengonfigurasi parameter pemasangan saat menyerahkan pekerjaan dengan merujuk pada contoh berikut.
1.1. Gunakan Java SDK
TaskDescription taskDesc = new TaskDescription();
taskDesc.addInputMapping("oss://mybucket/mydir/", "/home/admin/mydir/"); //Pemasangan baca-saja
taskDesc.addOutputMapping("/home/admin/mydir/", "oss://mybucket/mydir/"); //Pemasangan dapat ditulis1.2. Gunakan Python SDK
# Pemasangan baca-saja
job_desc['DAG']['Tasks']['my-task']['InputMapping'] = {
"oss://mybucket/mydir/": "/home/admin/mydir/"
}
# Pemasangan dapat ditulis
job_desc['DAG']['Tasks']['my-task']['OutputMapping'] = {
"/home/admin/mydir/": "oss://mybucket/mydir/"
}1.3. Gunakan Alat Baris Perintah
bcs sub "python main.py" -r oss://mybucket/mydir/:/home/admin/mydir/ # Gunakan koma untuk memisahkan beberapa pemetaan.Catatan: Jika InputMapping diatur, mode pemasangan baca-saja digunakan. Direktori dapat dibaca, tetapi tidak dapat ditulis atau dihapus. Ketika OutputMapping diatur, file atau direktori yang ditulis ke direktori /home/admin/mydir/ secara otomatis diunggah ke oss://mybucket/mydir/ setelah pekerjaan selesai. InputMapping dan OutputMapping tidak dapat dipasang ke direktori yang sama.
2. Memasang direktori program
Pertanyaan: Saya memiliki program main.py di OSS Bucket saya. Bagaimana cara menggunakan program ini pada Batch Compute?
Asumsikan bahwa main.py disimpan di oss://mybucket/myprograms/main.py di OSS Bucket Anda.
Pasang oss://mybucket/myprograms/ ke /home/admin/myprograms/.
Jalankan baris perintah python /home/admin/myprograms/main.py.
2.1. Gunakan Java SDK
TaskDescription taskDesc = new TaskDescription();
taskDesc.addInputMapping("oss://mybucket/myprograms/", "/home/admin/myprograms/"); //Pemasangan baca-saja
Command cmd = new Command()
cmd.setCommandLine("python /home/admin/myprograms/main.py")
params.setCommand(cmd);
taskDesc.setParameters(params);2.2. Gunakan Python SDK
# Pemasangan baca-saja
job_desc['DAG']['Tasks']['my-task']['InputMapping'] = {
"oss://mybucket/myprograms/": "/home/admin/myprograms/"
}
job_desc['DAG']['Tasks']['my-task']['Parameters']['Command']['CommandLine']='python /home/admin/myprograms/main.py'2.3. Gunakan Alat Baris Perintah
bcs sub "python /home/admin/myprograms/main.py" -r oss://mybucket/myprograms/:/home/admin/myprograms/3. Memasang file
Pertanyaan: Bagaimana cara memasang file dengan awalan berbeda di OSS Bucket saya ke direktori yang sama pada VM di Batch Compute secara massal?
Asumsikan bahwa Anda ingin memasang dua file di bucket1 dan bucket2 masing-masing ke direktori lokal /home/data/ pada VM:
Pasang oss://bucket1/data/file1 ke /home/data/file1.
Pasang oss://bucket2/data/file2 ke /home/data/file2.
Selain itu, Anda ingin mengunggah dua file lokal dari VM ke bucket1 dan bucket2:
Pasang /home/output/output1 ke oss://bucket1/output/file1.
Pasang /home/output/output2 ke oss://bucket2/output/file2.
Berikut adalah contoh-contohnya:
3.1. Gunakan Java SDK
TaskDescription taskDesc = new TaskDescription();
taskDesc.addInputMapping("oss://bucket1/data/file1", "/home/data/file1");
taskDesc.addInputMapping("oss://bucket2/data/file2", "/home/data/file2");
taskDesc.addOutputMapping("/home/output/output1", "oss://bucket1/output/file1");
taskDesc.addOutputMapping("/home/output/output2", "oss://bucket2/output/file2");3.2. Gunakan Python SDK
# Pemasangan baca-saja
job_desc['DAG']['Tasks']['my-task']['InputMapping'] = {
"oss://bucket1/data/file1": "/home/data/file1",
"oss://bucket2/data/file2": "/home/data/file2"
}
# Pemasangan dapat ditulis
job_desc['DAG']['Tasks']['my-task']['OutputMapping'] = {
"/home/output/output1": "oss://bucket1/output/file1",
"/home/output/output2": "oss://bucket2/output/file2"
}4. Batasan pemasangan InputMapping
4.1. Penamaan Objek Penyimpanan pada OSS
Nama file tunggal dapat berisi maksimal 255 byte. Jumlah byte yang ditempati oleh karakter lain dihitung sesuai dengan jumlah byte aktual yang ditempati oleh karakter setelah pengkodean UTF-8. Secara umum, satu karakter Cina sama dengan tiga byte.
Panjang maksimum kombinasi jalur + nama file yang dihitung dari direktori root adalah 1.023 byte.
Nama file yang valid didefinisikan menurut set karakter UTF-8. Set karakter lainnya harus dikodekan UTF-8 lalu validitas nama file diperiksa.
Semua karakter UTF-8 0x80 dan seterusnya didukung.
Karakter 0x00-0x1F dan 0x7F, serta \, /, :, *, ?, ", <, >, dan | tidak didukung.
4.2. Izin Akses untuk File Pemasangan InputMapping
Mempertimbangkan konsistensi penulisan file oleh beberapa node ke OSS Bucket, pemasangan InputMapping bersifat baca-saja pada OSS Bucket, dan operasi aplikasi melalui antarmuka sistem file tidak mengubah atau menghapus file apa pun di OSS Bucket dalam keadaan apa pun.
Modifikasi apa pun pada direktori yang dipasang disimpan sementara ke file lokal. Konten setelah modifikasi dapat dibaca oleh aplikasi melalui antarmuka sistem file tetapi tidak disinkronkan secara otomatis ke OSS Bucket. Setelah aplikasi selesai dijalankan, sistem file dilepas, layanan pemasangan dinonaktifkan, dan semua modifikasi yang disimpan sementara secara lokal dibuang. Jika layanan pemasangan diaktifkan dan sistem file dipasang, file lokal sama dengan konten objek di objek OSS dan modifikasi terakhir tidak dipertahankan.
Di direktori yang dipasang, file yang ada di OSS Bucket diberikan izin baca dan jalankan tetapi tidak ada izin tulis. Aplikasi dapat membaca file tetapi tidak dapat mengubah, memotong, menamai ulang, atau menghapus file.
Di direktori yang dipasang, aplikasi dapat bebas membuat file dan folder yang diberikan izin baca, tulis, dan eksekusi. Aplikasi dapat mengubah, memotong, menamai ulang, dan menghapus file-file ini.
Dalam sistem operasi Windows, konten di folder baca-saja tidak dapat dihapus. Oleh karena itu, di folder yang ada di OSS Bucket, aplikasi dapat membuat, mengubah, atau memotong file di folder tersebut, tetapi tidak dapat menghapus atau menamai ulang file apa pun. Sebagai contoh, \127.0.0.1\ossdata\bucket\dir adalah folder di OSS Bucket. Jika aplikasi membuat file bernama “file” di direktori ini setelah memasangnya, file \127.0.0.1\ossdata\bucket\dir\file tidak dapat dihapus atau dinamai ulang. Namun, jika folder bernama “local” dibuat di bawah \127.0.0.1\ossdata\bucket\dir, file yang dibuat di bawah \127.0.0.1\ossdata\bucket\dir\local dapat dihapus dan dinamai ulang, misalnya, \127.0.0.1\ossdata\bucket\dir\local\file. Pembatasan ini tidak ada di sistem operasi Linux.
4.3. Bahasa Pemasangan
Semua nama objek di OSS Bucket disimpan setelah pengkodean UTF-8. Layanan pemasangan dapat mengonversi set karakter. Anda harus menentukan set karakter yang akan digunakan oleh aplikasi dalam deskripsi kluster/pekerjaan. Hanya setelah set karakter dikonversi oleh layanan pemasangan, aplikasi dapat mengakses file yang benar.
Perhatikan bahwa set karakter yang digunakan oleh aplikasi mungkin berbeda dari set karakter default sistem operasi. Sebagai contoh, jika aplikasi dalam bahasa Tiongkok Tradisional berjalan pada sistem operasi dalam bahasa Tiongkok Sederhana, set karakter harus BIG5. Dengan cara ini, layanan pemasangan secara otomatis mengonversi jalur dan nama file yang dikodekan UTF-8 di OSS Bucket menjadi yang dikodekan BIG5. Meskipun nama file di disk yang dipasang adalah karakter acak dalam sistem operasi, nama file yang diakses oleh aplikasi adalah benar.
Fungsi konversi set karakter hanya memengaruhi nama file. Ini tidak berdampak pada isi file.
4.4. Kunci File
NFS-based DOS Share dan kunci file memengaruhi kinerja. Dalam kasus operasi I/O yang sering, Anda disarankan untuk menonaktifkan kunci file dengan menambahkan opsi nolock selama pemasangan. Namun, beberapa aplikasi seperti 3DSMAX harus menggunakan kunci file karena eksekusi aplikasi mungkin gagal jika kunci file dinonaktifkan.
4.5. Pemasangan File
Untuk memasang file terpisah di OSS Bucket ke file lokal VM, pastikan direktori lokal yang dapat dijangkau untuk semua file bukan direktori induk tempat file atau direktori lain dipasang.
4.6. Konvensi Lainnya
Saat aplikasi OSS sedang berjalan, jangan ubah folder yang dipasang yang sedang diakses oleh aplikasi; jika tidak, konflik mungkin terjadi. Modifikasi apa pun (termasuk tetapi tidak terbatas pada, menghapus atau mengubah isi file, memotong file, atau menambahkan isi file) pada data yang sedang diakses oleh aplikasi dapat menyebabkan kegagalan aplikasi berjalan.
Kapasitas OSS Bucket hampir tak terbatas. Statistik penggunaan disk saat ini yang dikumpulkan oleh sistem operasi tidak menunjukkan penggunaan saat ini dari bucket OSS Bucket, dan oleh karena itu tidak signifikan.
Beberapa direktori di bucket yang sama dapat dipasang ke tempat yang berbeda sekaligus.
Konten dari beberapa bucket di akun yang sama dapat dipasang ke tempat yang berbeda sekaligus.
File dari satu akun saja, bukan beberapa akun, dapat dipasang sekaligus.