E-MapReduce (EMR) menyediakan MetaService, yang berfungsi sebagai peran aplikasi ECS khusus. Di EMR V3.32.0 dan versi sebelumnya serta di EMR V4.5.0 dan versi sebelumnya, saat membuat kluster, peran ini secara otomatis terikat ke kluster Anda. Aplikasi yang berjalan di kluster EMR menggunakan peran ini untuk mengakses sumber daya Alibaba Cloud lainnya tanpa memerlukan sepasang AccessKey, sehingga menghindari risiko pengungkapan AccessKey dalam file konfigurasi.
Prasyarat
Peran ini telah diberi otorisasi. Untuk informasi lebih lanjut, lihat Menetapkan Peran ke Akun Alibaba Cloud.
Informasi latar belakang
MetaService memungkinkan Anda mengakses Object Storage Service (OSS), Log Service, dan Message Service (MNS) tanpa memerlukan sepasang AccessKey.
Izin
| Izin (Aksi) | Deskripsi |
| oss:PutObject | Mengunggah file atau folder. |
| oss:GetObject | Meminta file atau folder. |
| oss:ListObjects | Meminta file. |
| oss:DeleteObject | Menghapus file. |
| oss:ListBuckets | Meminta bucket. |
| oss:AbortMultipartUpload | Mengakhiri acara unggah multipart. |
| oss:ListMultipartUploads | Meminta semua acara unggah multipart yang sedang berlangsung. |
| oss:RestoreObject | Mengembalikan objek Arsip atau Penyimpanan Arsip Dingin. |
| oss:GetBucketInfo | Meminta informasi tentang bucket. |
| oss:ListObjectVersions | Meminta versi semua objek dalam bucket, termasuk penanda hapus. |
| oss:DeleteObjectVersion | Menghapus versi tertentu dari objek. |
| oss:PostDataLakeStorageFileOperation | Mengakses OSS-HDFS. |
| ots:CreateTable | Membuat tabel berdasarkan skema tabel yang ditentukan. |
| ots:DeleteTable | Menghapus tabel tertentu dari instance saat ini. |
| ots:GetRow | Membaca data dalam satu baris berdasarkan kunci utama tertentu. |
| ots:PutRow | Menyisipkan data ke baris tertentu. |
| ots:UpdateRow | Memperbarui data dalam baris tertentu. |
| ots:DeleteRow | Menghapus baris data. |
| ots:GetRange | Membaca data dalam rentang nilai tertentu dari kunci utama. |
| ots:BatchWriteRow | Menyisipkan, memodifikasi, atau menghapus beberapa baris data dari satu atau lebih tabel sekaligus. |
| ots:BatchGetRow | Membaca beberapa baris data dari satu atau lebih tabel sekaligus. |
| ots:ComputeSplitPointsBySize | Secara logis membagi data dalam tabel menjadi beberapa shard yang ukurannya mendekati ukuran yang ditentukan, dan mengembalikan titik pemisah antar shard dan prompt tentang host tempat partisi berada. |
| ots:StartLocalTransaction | Membuat transaksi lokal berdasarkan nilai kunci partisi yang ditentukan dan meminta ID transaksi lokal. |
| ots:CommitTransaction | Menyelesaikan transaksi lokal. |
| ots:AbortTransaction | Mengakhiri transaksi lokal. |
| dlf:BatchCreatePartitions | Membuat beberapa partisi sekaligus. |
| dlf:BatchCreateTables | Membuat beberapa tabel sekaligus. |
| dlf:BatchDeletePartitions | Menghapus beberapa partisi sekaligus. |
| dlf:BatchDeleteTables | Menghapus beberapa tabel sekaligus. |
| dlf:BatchGetPartitions | Meminta informasi tentang beberapa partisi sekaligus. |
| dlf:BatchGetTables | Meminta informasi tentang beberapa tabel sekaligus. |
| dlf:BatchUpdatePartitions | Memperbarui beberapa partisi sekaligus. |
| dlf:BatchUpdateTables | Memperbarui beberapa tabel sekaligus. |
| dlf:CreateDatabase | Membuat database. |
| dlf:CreateFunction | Membuat fungsi. |
| dlf:CreatePartition | Membuat partisi. |
| dlf:CreateTable | Membuat tabel. |
| dlf:DeleteDatabase | Menghapus database. |
| dlf:DeleteFunction | Menghapus fungsi. |
| dlf:DeletePartition | Menghapus partisi. |
| dlf:DeleteTable | Menghapus tabel. |
| dlf:GetDatabase | Meminta informasi tentang database. |
| dlf:GetFunction | Meminta informasi tentang fungsi. |
| dlf:GetPartition | Meminta informasi tentang partisi. |
| dlf:GetTable | Meminta informasi tentang tabel. |
| dlf:ListCatalogs | Meminta katalog. |
| dlf:ListDatabases | Meminta database. |
| dlf:ListFunctionNames | Meminta nama fungsi. |
| dlf:ListFunctions | Meminta fungsi. |
| dlf:ListPartitionNames | Meminta nama partisi. |
| dlf:ListPartitions | Meminta partisi. |
| dlf:ListPartitionsByExpr | Meminta partisi tabel metadata berdasarkan kondisi. |
| dlf:ListPartitionsByFilter | Meminta partisi tabel metadata berdasarkan kondisi. |
| dlf:ListTableNames | Meminta nama tabel. |
| dlf:ListTables | Meminta tabel. |
| dlf:RenamePartition | Mengganti nama partisi. |
| dlf:RenameTable | Mengganti nama tabel. |
| dlf:UpdateDatabase | Memperbarui database. |
| dlf:UpdateFunction | Memperbarui fungsi. |
| dlf:UpdateTable | Memperbarui tabel. |
| dlf:UpdateTableColumnStatistics | Memperbarui statistik tabel metadata. |
| dlf:GetTableColumnStatistics | Meminta statistik tabel metadata. |
| dlf:DeleteTableColumnStatistics | Menghapus statistik tabel metadata. |
| dlf:UpdatePartitionColumnStatistics | Memperbarui statistik partisi. |
| dlf:GetPartitionColumnStatistics | Meminta statistik partisi. |
| dlf:DeletePartitionColumnStatistics | Menghapus statistik partisi. |
| dlf:BatchGetPartitionColumnStatistics | Meminta statistik beberapa partisi sekaligus. |
| dlf:CreateLock | Membuat kunci metadata. |
| dlf:UnLock | Membuka kunci metadata tertentu. |
| dlf:AbortLock | Mengakhiri kunci metadata. |
| dlf:RefreshLock | Memperbarui kunci metadata. |
| dlf:GetLock | Meminta informasi tentang kunci metadata. |
| dlf:GetAsyncTaskStatus | Meminta status tugas asinkron. |
| dlf:DeltaGetPermissions | Meminta izin. |
| dlf:GetPermissions | Meminta informasi tentang izin data. |
| dlf:GetServiceInfo | Meminta informasi tentang layanan. |
| dlf:GetRoles | Meminta informasi tentang peran dalam izin data. |
| dlf:CheckPermissions | Memverifikasi izin data. |
Sumber data yang mendukung MetaService
MetaService memungkinkan Anda mengakses OSS, Log Service, dan MNS. Anda dapat menggunakan SDK EMR di kluster EMR untuk membaca dan menulis data ke sumber daya tersebut tanpa memerlukan sepasang AccessKey.
Secara default, hanya akses ke OSS yang diaktifkan. Jika ingin membaca dan menulis data ke Log Service dan MNS, masuk ke Konsol RAM dan konfigurasikan izin yang diperlukan untuk peran AliyunEmrEcsDefaultRole. Untuk informasi lebih lanjut, lihat Konsol RAM.
Untuk informasi lebih lanjut tentang cara memberi otorisasi pada peran RAM, lihat Memberikan Izin kepada Peran RAM.
Menggunakan MetaService
- Mengurangi risiko kebocoran informasi AccessKey. Untuk meminimalkan risiko keamanan, berikan otorisasi peran di Konsol RAM berdasarkan prinsip hak istimewa minimal.
- Meningkatkan pengalaman pengguna. MetaService mempersingkat jalur OSS yang perlu dimasukkan selama akses interaktif ke sumber daya OSS.
- Memberikan manfaat berikut untuk layanan di kluster EMR Anda:
Pekerjaan yang dijalankan di layanan tersebut dapat mengakses sumber daya Alibaba Cloud (OSS, Log Service, dan MNS) tanpa memerlukan sepasang AccessKey.
Perbandingan operasi sebelum dan sesudah MetaService digunakan:- Jalankan perintah hadoop fs -ls untuk melihat data OSS.
- MetaService tidak digunakan:
hadoop fs -ls oss://ZaH******As1s:Ba23N**************sdaBj2@bucket.oss-cn-hangzhou-internal.aliyuncs.com/a/b/c - MetaService digunakan:
hadoop fs -ls oss://bucket/a/b/c
- MetaService tidak digunakan:
- Buat tabel eksternal di Hive.
- MetaService tidak digunakan:
CREATE EXTERNAL TABLE test_table(id INT, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '/t' LOCATION 'oss://ZaH******As1s:Ba23N**************sdaBj2@bucket.oss-cn-hangzhou-internal.aliyuncs.com/a/b/c'; - MetaService digunakan:
CREATE EXTERNAL TABLE test_table(id INT, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '/t' LOCATION 'oss://bucket/a/b/c';
- MetaService tidak digunakan:
- Gunakan Spark untuk melihat data OSS.
- MetaService tidak digunakan:
val data = sc.textFile("oss://ZaH******As1s:Ba23N**************sdaBj2@bucket.oss-cn-hangzhou-internal.aliyuncs.com/a/b/c") - MetaService digunakan:
val data = sc.textFile("oss://bucket/a/b/c")
- MetaService tidak digunakan:
- Jalankan perintah hadoop fs -ls untuk melihat data OSS.
- Memberikan manfaat berikut untuk layanan yang diterapkan sendiri:MetaService adalah layanan HTTP. Anda dapat mengakses URL layanan HTTP ini untuk mendapatkan kredensial sementara Security Token Service (STS). Kemudian, Anda dapat menggunakan kredensial sementara STS untuk mengakses sumber daya Alibaba Cloud tanpa memerlukan sepasang AccessKey di sistem yang dikelola sendiri.Penting Kredensial sementara STS baru dihasilkan 30 menit sebelum kredensial saat ini kedaluwarsa. Kedua kredensial STS dapat digunakan dalam waktu 30 menit.
Sebagai contoh, Anda dapat menjalankan curl http://localhost:10011/cluster-region untuk mendapatkan wilayah tempat kluster Anda berada.
Anda dapat menggunakan MetaService untuk mendapatkan informasi berikut:- Wilayah: /cluster-region
- Nama peran: /cluster-role-name
- ID AccessKey: /role-access-key-id
- Rahasia AccessKey: /role-access-key-secret
- Token keamanan: /role-security-token
- Tipe jaringan: /cluster-network-type