Kluster E-MapReduce (EMR) versi 3.42 ke atas atau versi 5.8.0 ke atas mendukung OSS-HDFS (JindoFS) sebagai penyimpanan data. OSS-HDFS menyediakan akselerasi cache dan otentikasi Ranger untuk meningkatkan performa serta menyederhanakan migrasi HDFS pada skenario ETL data besar yang menggunakan Hive atau Spark. Topik ini menjelaskan cara mengakses data di OSS-HDFS menggunakan Hive atau Spark dalam kluster EMR.
Informasi latar belakang
OSS-HDFS adalah layanan penyimpanan data lake cloud-native. Dengan manajemen metadata terpadu, layanan ini sepenuhnya kompatibel dengan antarmuka sistem file HDFS dan menyediakan dukungan POSIX yang komprehensif, sehingga ideal untuk berbagai skenario komputasi data lake di bidang data besar dan AI. Untuk informasi selengkapnya, lihat Apa itu OSS-HDFS?.
Prasyarat
Anda telah membuat kluster EMR. Untuk informasi selengkapnya, lihat Buat kluster.
Prosedur
Langkah 1: Aktifkan OSS-HDFS
Aktifkan OSS-HDFS dan berikan izin akses yang diperlukan. Untuk informasi selengkapnya, lihat Aktifkan OSS-HDFS.
Langkah 2: Dapatkan titik akhir OSS-HDFS
<Bucket-name>.<region>.oss-dls.aliyuncs.com.Langkah 3: Gunakan OSS-HDFS di kluster EMR
- Masuk ke kluster. Untuk informasi selengkapnya, lihat Masuk ke kluster.
- Buat tabel Hive yang mengarah ke OSS-HDFS.
- Jalankan perintah berikut untuk masuk ke command line Hive.
hive - Jalankan perintah berikut untuk membuat database yang mengarah ke OSS-HDFS.
CREATE DATABASE if not exists dw LOCATION 'oss://<your-oss-hdfs-endpoint>/<path>';Catatan- Pada perintah di atas,
dwadalah nama database,<path>adalah path arbitrer, dan<your-oss-hdfs-endpoint>adalah titik akhir OSS-HDFS yang Anda peroleh di Langkah 2: Dapatkan titik akhir OSS-HDFS. - Contoh ini menggunakan titik akhir OSS-HDFS sebagai awalan path. Jika Anda ingin mengarah ke OSS-HDFS hanya dengan menggunakan nama bucket, Anda dapat mengonfigurasi titik akhir tingkat bucket atau global. Untuk informasi selengkapnya, lihat Hubungkan ke OSS-HDFS dari kluster non-EMR.
- Pada perintah di atas,
- Jalankan perintah berikut untuk menggunakan database baru.
use dw; - Jalankan perintah berikut untuk membuat tabel di database baru.
CREATE TABLE IF NOT EXISTS employee(eid int, name String,salary String,destination String) COMMENT 'Employee details'; - Jalankan perintah berikut untuk melihat informasi tabel.
desc formatted employee;Output berikut dikembalikan. BidangLocationmenunjukkan bahwa tabel mengarah ke path di OSS-HDFS.# col_name data_type comment eid int name string salary string destination string # Detailed Table Information Database: dw Owner: root CreateTime: Fri May 06 16:40:06 CST 2022 LastAccessTime: UNKNOWN Retention: 0 Location: oss://****.cn-hangzhou.oss-dls.aliyuncs.com/dw/employee Table Type: MANAGED_TABLE
- Jalankan perintah berikut untuk masuk ke command line Hive.
- Masukkan data ke dalam tabel.
Gunakan pernyataan INSERT INTO untuk menulis data ke tabel. Pernyataan ini menghasilkan pekerjaan MapReduce.
INSERT INTO employee(eid, name, salary, destination) values(1, 'John Doe', '100.0', ''); - Verifikasi data tabel.
SELECT * FROM employee WHERE eid = 1;Output mencakup data yang telah Anda masukkan.OK 1 John Doe 100.0 Time taken: 12.379 seconds, Fetched: 1 row(s)
Otorisasi kluster EMR
Jika kluster EMR Anda tidak menggunakan role instans RAM default AliyunECSInstanceForEMRRole, Anda harus memberikan izin kepada kluster tersebut.
Role instans RAM AliyunECSInstanceForEMRRole dikaitkan dengan kebijakan AliyunECSInstanceForEMRRolePolicy, yang secara default mencakup izin oss:PostDataLakeStorageFileOperation. Oleh karena itu, kluster yang menggunakan role default dapat mengakses OSS-HDFS tanpa otorisasi tambahan.