Pembacaan berulang dari OSS-HDFS menyebabkan I/O remote pada setiap akses, yang meningkatkan latensi pekerjaan. JindoCache menyimpan objek OSS-HDFS di penyimpanan kluster EMR sehingga pembacaan berikutnya dilayani dari cache lokal. Setelah pembacaan pertama, data secara otomatis di-cache—pekerjaan Hadoop dapat mengakses OSS-HDFS tanpa perubahan konfigurasi apa pun.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Membuat kluster EMR dengan JindoCache yang dipilih saat pembuatan kluster. Untuk informasi selengkapnya, lihat Create a cluster.
Mengaktifkan OSS-HDFS dan memberikan izin akses. Untuk informasi selengkapnya, lihat Enable OSS-HDFS and grant access permissions.
Cara kerja caching
JindoCache menggunakan CacheSets untuk menerapkan kebijakan caching pada path OSS tertentu. Setiap CacheSet menargetkan path induk dan mengontrol cara penanganan metadata, pembacaan, dan penulisan untuk semua data di bawah path tersebut. Anda dapat mendefinisikan satu atau beberapa CacheSet, masing-masing dengan kebijakan berbeda, agar sesuai dengan pola akses set data yang berbeda.
Setelah Anda mendefinisikan CacheSet dan mengonfigurasi JindoSDK, caching sepenuhnya transparan: pekerjaan Hadoop mengakses OSS-HDFS seperti biasa, dan JindoCache secara otomatis menangani pengisian serta pencarian cache.
Langkah 1: Definisikan kebijakan caching
Buat cacheset.xml
Definisikan CacheSet Anda dalam file cacheset.xml. Contoh berikut mengonfigurasi dua CacheSet untuk path OSS yang berbeda:
<?xml version="1.0" encoding="UTF-8"?>
<cachesets>
<cacheset>
<name>name1</name>
<path>oss://emr-test/dir1</path>
<cacheStrategy>DISTRIBUTED</cacheStrategy>
<metaPolicy>
<type>ALWAYS</type>
</metaPolicy>
<readPolicy>CACHE_ASIDE</readPolicy>
<writePolicy>WRITE_AROUND</writePolicy>
</cacheset>
<cacheset>
<name>name2</name>
<path>oss://emr-test/dir2</path>
<cacheStrategy>DHT</cacheStrategy>
<metaPolicy>
<type>ONCE</type>
</metaPolicy>
<readPolicy>CACHE_ASIDE</readPolicy>
<writePolicy>WRITE_AROUND</writePolicy>
</cacheset>
</cachesets>Setiap CacheSet memetakan path induk ke sekumpulan kebijakan. Tabel berikut menjelaskan semua parameter.
| Parameter | Deskripsi | Contoh |
|---|---|---|
name | Nama unik untuk CacheSet. Jika CacheSet dengan nama yang sama sudah ada, konfigurasinya akan ditimpa. | name1 |
path | Path induk OSS. Kebijakan berlaku untuk semua data di bawah path ini. | oss://emr-test/dir1 |
cacheStrategy | Kebijakan caching. Nilai yang valid: DISTRIBUTED dan DHT. DHT adalah singkatan dari distributed hash table. Kebijakan caching DHT digunakan untuk mempercepat akses ke file berukuran kecil yang bersifat read-only. | DISTRIBUTED |
metaPolicy | Apakah metadata file di-cache secara lokal. ALWAYS: metadata tidak di-cache dan dibaca dari penyimpanan remote. ONCE: metadata di-cache; metadata selalu dibaca dari penyimpanan lokal setelah pertama kali dibaca dari penyimpanan remote. Jika cacheStrategy bernilai DHT, atur nilai ini menjadi ONCE. | ALWAYS |
readPolicy | Cara membaca file. Harus bernilai CACHE_ASIDE: file diprioritaskan dibaca dari cache. | CACHE_ASIDE |
writePolicy | Tujuan penulisan. WRITE_AROUND: menulis file ke penyimpanan remote. WRITE_THROUGH: menulis file ke cache dan penyimpanan remote sekaligus. CACHE_ONLY: hanya menulis file ke cache; memerlukan metaPolicy diatur ke ONCE. | WRITE_AROUND |
Terapkan konfigurasi CacheSet
Login ke kluster Anda. Untuk informasi selengkapnya, lihat Log on to a cluster.
Simpan file
cacheset.xmlke direktori di kluster. Dalam contoh ini, file berada di/path/cacheset.xml.Jalankan perintah berikut untuk memuat konfigurasi CacheSet ke JindoCache:
jindocache -refreshCacheSet -path /path/cacheset.xmlJika berhasil, output berikut akan ditampilkan:
Successfully refresh cacheset !!!Untuk daftar lengkap perintah CLI JindoCache, lihat JindoCache CLI usage notes.
Jalankan perintah berikut untuk memverifikasi bahwa CacheSet telah dimuat:
jindocache -listCacheSet
Langkah 2: Konfigurasi JindoSDK
Tetapkan kelas implementasi OSS-HDFS di Hadoop-Common agar klien mengarahkan trafik melalui JindoCache. Di Konsol EMR, buka tab core-site.xml pada tab Configure di halaman layanan Hadoop-Common dan tambahkan item konfigurasi berikut. Untuk informasi selengkapnya, lihat Manage configuration items.
| Item konfigurasi | Nilai | Perilaku default |
|---|---|---|
fs.xengine | jindocache | Jika dibiarkan kosong, klien berkomunikasi langsung dengan OSS-HDFS tanpa caching. |
Konfigurasi ini berlaku di tingkat klien dan langsung berlaku tanpa perlu restart JindoCache.
Setelah Anda menyimpan konfigurasi, pekerjaan yang membaca dari OSS-HDFS secara otomatis mengisi cache pada pembacaan pertama. Pembacaan berikutnya terhadap data yang sama akan dilayani dari cache.
FAQ
Bagaimana cara mengonfigurasi akses lintas akun ke OSS-HDFS?
Secara default, JindoCache mengakses OSS-HDFS tanpa kredensial eksplisit (mode passwordless). Untuk akses lintas akun, tambahkan item konfigurasi berikut ke tab common di halaman layanan JindoCache.
Buka tab konfigurasi:
Login ke EMR console. Di panel navigasi kiri, klik EMR on ECS.
Di bilah navigasi atas, pilih wilayah tempat kluster Anda berada dan pilih kelompok sumber daya.
Di halaman EMR on ECS, temukan kluster Anda dan klik Services di kolom Actions.
Temukan JindoCache dan klik Configure.
Klik tab common.
Add the configuration items:
Klik Add Configuration Item dan tambahkan item berikut. Ganti YYY dengan nama bucket OSS tempat OSS-HDFS diaktifkan. Untuk informasi lebih lanjut tentang menerapkan perubahan konfigurasi, lihat Manage configuration items.
| Item konfigurasi | Deskripsi |
|---|---|
jindocache.oss.bucket.YYY.accessKeyId | ID AccessKey yang digunakan untuk mengakses OSS-HDFS. |
jindocache.oss.bucket.YYY.accessKeySecret | Rahasia AccessKey yang digunakan untuk mengakses OSS-HDFS. |
jindocache.oss.bucket.YYY.endpoint | Titik akhir OSS-HDFS. Contoh: cn-hangzhou.oss-dls.aliyuncs.com. |
jindocache.oss.bucket.YYY.data.lake.storage.enable | Atur ke true. |