OSS-HDFS adalah layanan penyimpanan danau data berbasis cloud-native yang menyediakan manajemen metadata terpusat serta kompatibilitas penuh dengan API Hadoop Distributed File System (HDFS). OSS-HDFS juga mendukung Antarmuka Sistem Operasi Portabel (POSIX). Anda dapat menggunakan OSS-HDFS untuk mengelola data dalam skenario komputasi big data dan AI. Topik ini menjelaskan cara menggunakan Hadoop untuk mengakses OSS-HDFS dengan JindoSDK.
Prasyarat
OSS-HDFS telah diaktifkan untuk sebuah bucket, dan izin akses telah diberikan. Untuk informasi lebih lanjut, lihat Aktifkan OSS-HDFS.
Informasi latar belakang
Anda dapat menggunakan OSS-HDFS tanpa perlu memodifikasi aplikasi Hadoop dan Spark yang ada. Konfigurasi OSS-HDFS memungkinkan Anda mengakses dan mengelola data dengan cara serupa seperti pada HDFS. OSS-HDFS menawarkan keunggulan seperti ruang penyimpanan tak terbatas, skalabilitas elastis, serta keamanan, keandalan, dan ketersediaan tinggi.
Danau data berbasis cloud-native didukung oleh OSS-HDFS. Anda dapat menggunakan OSS-HDFS untuk mengelola eksabyte data atau ratusan juta objek dengan throughput terabyte. OSS-HDFS menyediakan fitur namespace datar dan hierarkis untuk memenuhi kebutuhan penyimpanan big data. Fitur namespace hierarkis memungkinkan pengelolaan objek dalam struktur direktori hierarkis. OSS-HDFS secara otomatis mengonversi struktur penyimpanan antara namespace datar dan hierarkis untuk membantu Anda mengelola metadata objek secara terpusat. Dibandingkan dengan arsitektur redundansi aktif-standby tradisional untuk NameNode di HDFS, OSS-HDFS mengimplementasikan mekanisme redundansi aktif-aktif multi-node untuk manajemen metadata, meningkatkan keandalan dan skalabilitas secara signifikan. Pengguna Hadoop dapat mengakses objek di OSS-HDFS tanpa perlu menyalin atau mengonversi format objek, meningkatkan kinerja pekerjaan dan mengurangi biaya pemeliharaan.
Untuk informasi lebih lanjut tentang skenario aplikasi, karakteristik, dan fitur OSS-HDFS, lihat Apa itu OSS-HDFS?
Langkah 1: Buat VPC dan buat instance ECS di VPC
Buat virtual private cloud (VPC) yang memungkinkan akses ke OSS-HDFS melalui endpoint internal.
Masuk ke Konsol VPC.
Di halaman VPC, klik Create VPC.
Saat membuat VPC, pastikan bahwa VPC berada di wilayah yang sama dengan bucket tempat Anda ingin mengaktifkan OSS-HDFS. Untuk informasi lebih lanjut tentang cara membuat VPC, lihat Buat VPC dan vSwitch.
Buat instance Elastic Compute Service (ECS) di VPC.
Klik ID VPC. Di halaman yang muncul, klik tab Resource Management.
Di bagian Basic Cloud Resources Included, klik ikon
di sebelah kanan Elastic Compute Service.Buat instance ECS dari halaman Instances.
Saat membuat instance ECS, pastikan bahwa instance berada di wilayah yang sama dengan VPC. Untuk informasi lebih lanjut tentang cara membuat instance ECS, lihat Buat instance.
Langkah 2: Buat lingkungan runtime Hadoop
Instal lingkungan Java.
Di sebelah kanan instance ECS yang dibuat, klik Connect.
Untuk informasi lebih lanjut tentang cara menghubungkan ke instance ECS, lihat Metode untuk menghubungkan ke instance ECS.
Periksa versi Java Development Kit (JDK) yang ada.
java -versionOpsional. Jika versi JDK lebih awal dari 1.8.0, uninstall JDK. Jika versi JDK adalah 1.8.0 atau lebih baru, lewati langkah ini.
rpm -qa | grep java | xargs rpm -e --nodepsInstal paket JDK.
sudo yum install java-1.8.0-openjdk* -yJalankan perintah berikut untuk membuka file konfigurasi:
vim /etc/profileTambahkan variabel lingkungan.
Jika jalur saat ini JDK tidak ada, pergi ke jalur /usr/lib/jvm/ untuk menemukan file java-1.8.0-openjdk.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar export PATH=$PATH:$JAVA_HOME/binJalankan perintah berikut untuk memungkinkan variabel lingkungan berlaku:
source /etc/profile
Aktifkan layanan SSH.
Instal layanan SSH.
sudo yum install -y openssh-clients openssh-serverAktifkan layanan SSH.
systemctl enable sshd && systemctl start sshdBuat kunci SSH dan tambahkan kunci ke daftar tepercaya.
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys
Instal Hadoop.
Unduh paket instalasi Hadoop.
Dalam contoh ini, paket instalasi Hadoop 3.4.0 diunduh. Jika Anda ingin mengunduh versi berbeda, tentukan nama aktual paket instalasi. Untuk informasi lebih lanjut tentang cara memperoleh paket instalasi Hadoop, lihat Hadoop.
wget https://downloads.apache.org/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gzEkstrak paket.
tar xzf hadoop-3.4.0.tar.gzPindahkan paket ke jalur yang sering diakses.
mv hadoop-3.4.0 /usr/local/hadoopKonfigurasikan variabel lingkungan.
Konfigurasikan variabel lingkungan Hadoop.
vim /etc/profile export HADOOP_HOME=/usr/local/hadoop export PATH=$HADOOP_HOME/bin:$PATH source /etc/profilePerbarui HADOOP_HOME di file konfigurasi Hadoop.
cd $HADOOP_HOME vim etc/hadoop/hadoop-env.shGanti ${JAVA_HOME} dengan jalur aktual.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
Opsional. Jika direktori tidak ada, jalankan perintah berikut untuk memungkinkan variabel lingkungan berlaku:
cd $HADOOP_HOME/etc/hadoopPerbarui file konfigurasi core-site.xml dan hdfs-site.xml.
Perbarui file konfigurasi core-site.xml dan tambahkan atribut.
<configuration> <!-- Tentukan alamat NameNode di HDFS. --> <property> <name>fs.defaultFS</name> <!-- Ganti nilai dengan hostname atau localhost. --> <value>hdfs://localhost:9000</value> </property> <!-- Ubah direktori sementara Hadoop ke direktori kustom. --> <property> <name>hadoop.tmp.dir</name> <!-- Jalankan perintah berikut untuk memberikan pengguna admin izin untuk mengelola direktori: sudo chown -R admin:admin /opt/module/hadoop-3.4.0--> <value>/opt/module/hadoop-3.4.0/data/tmp</value> </property> </configuration>Perbarui file konfigurasi hdfs-site.xml dan tambahkan atribut.
<configuration> <!-- Tentukan jumlah duplikat untuk HDFS. --> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
Format struktur file.
hdfs namenode -formatMulai HDFS.
Untuk memulai HDFS, Anda harus memulai NameNode, DataNode, dan secondary NameNode.
Mulai HDFS.
cd /usr/local/hadoop/ sbin/start-dfs.shPeriksa kemajuan.
jpsOutput berikut dikembalikan:

Setelah Anda melakukan langkah-langkah sebelumnya, proses daemon dibuat. Anda dapat menggunakan browser untuk mengakses http://{ip}:9870 dan melihat antarmuka serta informasi detail tentang HDFS.
Uji apakah Hadoop telah diinstal.
Jalankan perintah hadoop version. Jika Hadoop telah diinstal, informasi versi akan dikembalikan.
Langkah 3: Alihkan HDFS lokal Anda ke OSS-HDFS
Unduh paket JAR JindoSDK.
Alihkan ke direktori tujuan.
cd /usr/lib/Unduh versi terbaru paket JAR JindoSDK. Untuk informasi lebih lanjut, kunjungi GitHub.
Ekstrak paket JAR JindoSDK.
tar zxvf jindosdk-x.x.x-linux.tar.gzCatatanx.x.x menunjukkan nomor versi paket JAR JindoSDK.
Konfigurasikan variabel lingkungan.
Ubah file konfigurasi.
vim /etc/profileKonfigurasikan variabel lingkungan.
export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x-linuxKonfigurasikan HADOOP_CLASSPATH.
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${JINDOSDK_HOME}/lib/*Jalankan perintah berikut untuk memungkinkan variabel lingkungan berlaku:
. /etc/profile
Konfigurasikan kelas implementasi DLS JindoSDK dan tentukan pasangan AccessKey yang ingin Anda gunakan untuk mengakses bucket.
Konfigurasikan kelas implementasi DLS JindoSDK di file core-site.xml Hadoop.
<configuration> <property> <name>fs.AbstractFileSystem.oss.impl</name> <value>com.aliyun.jindodata.oss.JindoOSS</value> </property> <property> <name>fs.oss.impl</name> <value>com.aliyun.jindodata.oss.JindoOssFileSystem</value> </property> </configuration>Konfigurasikan ID AccessKey dan Rahasia AccessKey dari bucket tempat OSS-HDFS diaktifkan di file core-site.xml Hadoop terlebih dahulu.
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>xxx</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>xxx</value> </property> </configuration>
Konfigurasikan titik akhir OSS-HDFS.
Anda harus mengonfigurasi titik akhir OSS-HDFS saat menggunakan OSS-HDFS untuk mengakses bucket di OSS. Kami merekomendasikan Anda mengonfigurasi jalur yang digunakan untuk mengakses OSS-HDFS dalam format
oss://<Bucket>.<Endpoint>/<Object>. Contoh:oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt. Setelah Anda mengonfigurasi jalur akses, JindoSDK memanggil operasi OSS-HDFS yang sesuai berdasarkan titik akhir yang ditentukan di jalur akses.Anda juga dapat mengonfigurasi titik akhir OSS-HDFS menggunakan metode lain. Untuk informasi lebih lanjut, lihat Lampiran 1: Metode lain yang digunakan untuk mengonfigurasi titik akhir OSS-HDFS.
Langkah 4: Akses OSS-HDFS
Buat direktori
Jalankan perintah berikut untuk membuat direktori bernama dir/ di bucket bernama examplebucket:
hdfs dfs -mkdir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/Unggah objek
Jalankan perintah berikut untuk mengunggah objek bernama examplefile.txt ke bucket bernama examplebucket:
hdfs dfs -put /root/workspace/examplefile.txt oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txtPeriksa direktori
Jalankan perintah berikut untuk memeriksa direktori bernama dir/ di bucket bernama examplebucket:
hdfs dfs -ls oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/Periksa objek
Jalankan perintah berikut untuk memeriksa objek bernama examplefile.txt di bucket bernama examplebucket:
hdfs dfs -ls oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txtPeriksa isi objek
Jalankan perintah berikut untuk memeriksa isi objek bernama examplefile.txt di bucket bernama examplebucket.
PentingSetelah Anda menjalankan perintah berikut, isi objek yang diperiksa ditampilkan di layar dalam teks biasa. Jika isi tersebut dikodekan, gunakan API Java HDFS untuk mendekode objek dan membaca isi objek.
hdfs dfs -cat oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txtSalin objek atau direktori
Jalankan perintah berikut untuk menyalin direktori root bernama subdir1 ke direktori bernama subdir2 di bucket bernama examplebucket. Selain itu, posisi direktori root subdir1, objek di direktori root subdir1, serta struktur dan isi subdirektori di direktori root subdir1 tetap tidak berubah.
hdfs dfs -cp oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/subdir1/ oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/subdir2/subdir1/Pindahkan objek atau direktori
Jalankan perintah berikut untuk memindahkan direktori root bernama srcdir dan objek serta subdirektori di direktori root tersebut ke direktori root lain bernama destdir:
hdfs dfs -mv oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/srcdir/ oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/destdir/Unduh objek
Jalankan perintah berikut untuk mengunduh objek bernama exampleobject.txt dari bucket bernama examplebucket ke direktori bernama /tmp di direktori root komputer Anda:
hdfs dfs -get oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt /tmp/Hapus objek atau direktori
Jalankan perintah berikut untuk menghapus direktori bernama destfolder/ dan semua objek di direktori tersebut dari bucket bernama examplebucket:
hdfs dfs -rm oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/destfolder/