Topik ini menjelaskan cara menggunakan JindoFS SDK untuk mengaktifkan akses tanpa kata sandi ke sistem file JindoFS di E-MapReduce (EMR) dari klien di luar kluster EMR.
Prasyarat
Prosedur ini berlaku untuk instance ECS yang berada di luar kluster E-MapReduce (EMR) dan telah menginstal Hadoop serta Java SDK.
Informasi latar belakang
Saat menggunakan JindoFS SDK, Anda harus menghapus paket Jindo terkait dari lingkungan, seperti jboot.jar dan smartdata-aliyun-jfs-*.jar. Jika Anda menggunakan Spark, hapus juga paket tersebut dari direktori /opt/apps/spark-current/jars/ untuk memastikan fungsionalitas yang tepat.
Langkah 1: Buat peran RAM instans
-
Masuk ke Konsol Resource Access Management (RAM) menggunakan Akun Alibaba Cloud Anda.
-
Pada panel navigasi di sebelah kiri, pilih .
-
Klik Create Role. Untuk Alibaba Cloud Service, pilih Alibaba Cloud Service.
-
Klik Next.
-
Masukkan Role Name. Dari daftar Select Trusted Service, pilih Elastic Compute Service.
-
Klik Complete.
Langkah 2: Berikan izin kepada peran RAM
-
Masuk ke Konsol RAM menggunakan Akun Alibaba Cloud Anda.
-
(Opsional) Jika kebijakan sistem tidak memenuhi kebutuhan Anda, buat kebijakan kustom. Untuk informasi selengkapnya, lihat Buat kebijakan kustom.
-
Pada panel navigasi di sebelah kiri, pilih .
-
Klik nama peran yang telah Anda buat.
-
Klik Input and Attach.
-
Untuk System Policy, pilih System Policy atau Custom Policy.
Sebagai contoh, Anda dapat menggunakan kebijakan
AliyunOSSReadOnlyAccess. Pilih kebijakan sesuai kebutuhan Anda. -
Cari kebijakan berdasarkan nama, lalu klik kebijakan tersebut untuk menambahkannya ke panel kanan.
-
Klik OK.
Langkah 3: Sambungkan peran RAM ke instans
-
Masuk ke Konsol ECS.
-
Pada panel navigasi di sebelah kiri, pilih .
-
Pada bilah navigasi atas, pilih wilayah instans Anda.
-
Temukan instance ECS yang dituju. Pada kolom Actions, pilih .
-
Pada kotak dialog, pilih peran RAM instans yang telah Anda buat, lalu klik OK.
Langkah 4: Atur variabel lingkungan
Jalankan perintah berikut pada instance ECS untuk mengatur variabel lingkungan CLASSPATH. Ganti path placeholder dengan path ke file JindoFS SDK Anda.
export CLASSPATH=/path/to/jindofs-x.y.z-sdk.jar
Atau, jalankan perintah berikut untuk memperbarui variabel HADOOP_CLASSPATH. Ganti path placeholder dengan path ke file JindoFS SDK Anda.
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/path/to/jindofs-x.y.z-sdk.jar
Langkah 5: Verifikasi akses tanpa kata sandi
-
Akses Object Storage Service (OSS) dari shell.
hdfs dfs -ls oss://<your-bucket-name>/ -
Akses OSS menggunakan API Hadoop file system.
JindoFS SDK memungkinkan Anda mengakses OSS menggunakan API Hadoop file system. Kode berikut merupakan contohnya. Pada contoh ini, ganti
ossPathdengan path OSS Anda, misalnyaoss://your-bucket-name/your-directory/.import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.LocatedFileStatus; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.RemoteIterator; import java.net.URI; public class test { public static void main(String[] args) throws Exception { String ossPath = "oss://your-bucket-name/your-directory/"; FileSystem fs = FileSystem.get(new URI(ossPath), new Configuration()); RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(new Path(ossPath), false); while (iterator.hasNext()){ LocatedFileStatus fileStatus = iterator.next(); Path fullPath = fileStatus.getPath(); System.out.println(fullPath); } } }