Cloudera's Distribution Including Apache Hadoop (CDH) adalah distribusi Apache Hadoop. Object Storage Service (OSS) mendukung Hadoop 3.0.0. Panduan ini menjelaskan cara mengaktifkan komponen CDH 6 seperti Hadoop, Hive, Spark, dan Impala untuk mengkueri data OSS dengan memandu Anda melalui seluruh proses konfigurasi: menghubungkan CDH ke OSS, menambahkan JAR OSS yang diperlukan ke classpath Impala, serta memverifikasi pengaturan menggunakan kueri benchmark TPC-DS.
Panduan ini menggunakan CDH 6.0.1 sebagai versi referensi.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster CDH 6 yang sedang Berjalan. Untuk instruksi penyiapan, lihat Cloudera Installation Guide.
Akses jaringan dari semua node kluster ke Titik akhir OSS di Wilayah target Anda
ID AccessKey dan Rahasia AccessKey Alibaba Cloud dengan izin baca/tulis pada bucket target
Langkah 1: Tambahkan konfigurasi OSS
Gunakan alat manajemen kluster Cloudera Manager (CM) untuk menambahkan parameter berikut. Jika CM tidak mengelola kluster Anda, tambahkan parameter yang sama secara langsung ke core-site.xml.
| Parameter | Deskripsi | Nilai yang direkomendasikan |
|---|---|---|
fs.oss.endpoint | Titik akhir untuk wilayah tempat bucket Anda berada | oss-cn-zhangjiakou-internal.aliyuncs.com |
fs.oss.accessKeyId | ID AccessKey yang digunakan untuk mengakses OSS | ID AccessKey Anda |
fs.oss.accessKeySecret | Rahasia AccessKey yang digunakan untuk mengakses OSS | Rahasia AccessKey Anda |
fs.oss.impl | Kelas implementasi sistem file OSS Hadoop | org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem |
fs.oss.buffer.dir | Direktori file sementara untuk buffering lokal | /tmp/oss |
fs.oss.connection.secure.enabled | Apakah HTTPS diaktifkan. Mengaktifkan HTTPS mengurangi throughput. | false |
fs.oss.connection.maximum | Jumlah maksimum koneksi bersamaan ke OSS | 2048 |
Untuk referensi parameter lengkap, lihat dokumentasi modul Hadoop-Aliyun.
Setelah menyimpan konfigurasi, restart kluster sesuai permintaan CM.
Verifikasi koneksi OSS
Jalankan perintah berikut untuk memastikan Hadoop dapat membaca dari dan menulis ke OSS:
# Daftar objek di bucket Anda
hadoop fs -ls oss://${your-bucket-name}/
# Buat direktori uji coba
hadoop fs -mkdir oss://${your-bucket-name}/hadoop-testJika kedua perintah berhasil, konfigurasi sudah benar. Jika salah satu gagal, periksa nilai parameter — terutama fs.oss.endpoint dan kredensial AccessKey.
Seluruh konten dalam ${} adalah Variabel lingkungan. Modifikasi variabel lingkungan tersebut.Langkah 2: Konfigurasikan Apache Impala
CDH 6 secara default sudah mendukung OSS, tetapi classpath Impala tidak menyertakan file JAR OSS yang diperlukan. Lakukan langkah-langkah berikut di setiap node Impala.
Buat tautan simbolik
Buka direktori ${CDH_HOME}/lib/impala dan buat tautan simbolik ke file JAR OSS:
cd lib/
ln -s ../../../jars/hadoop-aliyun-3.0.0-cdh6.0.1.jar hadoop-aliyun.jar
ln -s ../../../jars/aliyun-sdk-oss-2.8.3.jar aliyun-sdk-oss-2.8.3.jar
ln -s ../../../jars/jdom-1.1.jar jdom-1.1.jarPerbarui CLASSPATH di file startup Impala
Buka direktori ${CDH_HOME}/bin. Di masing-masing tiga file — impalad, statestored, dan catalogd — tambahkan baris berikut tepat sebelum perintah exec terakhir:
export CLASSPATH=${CLASSPATH}:${IMPALA_HOME}/lib/hadoop-aliyun.jar:${IMPALA_HOME}/lib/aliyun-sdk-oss-2.8.3.jar:${IMPALA_HOME}/lib/jdom-1.1.jarSetelah memperbarui ketiga file tersebut, restart proses Impala terkait di semua node.
Langkah 3: Verifikasi dengan kueri TPC-DS
Jalankan kueri benchmark TPC-DS terhadap data OSS untuk memastikan Impala dapat mengkueri OSS dengan benar.
Kueri TPC-DS ditulis dalam HiveQL. SQL Impala sangat kompatibel dengan HiveQL, sehingga sebagian besar kueri TPC-DS dapat dijalankan di Impala tanpa modifikasi. Sebagian kecil kueri menggunakan sintaks yang tidak didukung Impala dan harus dilewati atau disesuaikan.
Sebagai referensi, lihat Apache Impala dan repositori hive-testbench.
Hasilkan data sampel
Clone repositori hive-testbench dan hasilkan set data TPC-DS (faktor skala 50) di OSS:
git clone https://github.com/hortonworks/hive-testbench.git
cd hive-testbench
git checkout hive14
./tpcds-build.sh
FORMAT=textfile ./tpcds-setup.sh 50 oss://{your-bucket-name}/Buat tabel eksternal
Gunakan pernyataan DDL di ddl-tpcds/text/alltables.sql untuk membuat tabel yang mengarah ke data OSS. Ganti ${LOCATION} di setiap pernyataan dengan path OSS yang sesuai.
Contoh berikut membuat tabel eksternal call_center:
CREATE EXTERNAL TABLE call_center(
cc_call_center_sk bigint
, cc_call_center_id string
, cc_rec_start_date string
, cc_rec_end_date string
, cc_closed_date_sk bigint
, cc_open_date_sk bigint
, cc_name string
, cc_class string
, cc_employees int
, cc_sq_ft int
, cc_hours string
, cc_manager string
, cc_mkt_id int
, cc_mkt_class string
, cc_mkt_desc string
, cc_market_manager string
, cc_division int
, cc_division_name string
, cc_company int
, cc_company_name string
, cc_street_number string
, cc_street_name string
, cc_street_type string
, cc_suite_number string
, cc_city string
, cc_county string
, cc_state string
, cc_zip string
, cc_country string
, cc_gmt_offset double
, cc_tax_percentage double
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
LOCATION 'oss://{your-bucket-name}/50/call_center';Gunakan CREATE EXTERNAL TABLE, bukan CREATE TABLE, untuk tabel yang didukung OSS.
Verifikasi bahwa ke-24 tabel telah dibuat:
SHOW TABLES;Jalankan kueri TPC-DS
Hubungkan ke shell Impala dan jalankan salah satu file SQL yang tersedia:
impala-shell -i cdh-slave01 -d default -f sample-queries-tpcds/query13.sqlKueri dalam query13.sql melakukan join enam tabel — store, store_sales, customer_demographics, household_demographics, customer_address, dan date_dim — serta mengembalikan metrik agregat penjualan. Eksekusi yang berhasil menghasilkan output seperti berikut:
+-------------------+-------------------------+----------------------------+----------------------------+
| avg(ss_quantity) | avg(ss_ext_sales_price) | avg(ss_ext_wholesale_cost) | sum(ss_ext_wholesale_cost) |
+-------------------+-------------------------+----------------------------+----------------------------+
| 30.87106918238994 | 2352.642327044025 | 2162.600911949685 | 687707.09 |
+-------------------+-------------------------+----------------------------+----------------------------+
Fetched 1 row(s) in 353.16sDirektori sample-queries-tpcds/ berisi file SQL tambahan (query3.sql hingga query98.sql) untuk pengujian performa yang lebih luas.
Batasan
Perhatikan batasan berikut saat menggunakan Impala untuk mengkueri data OSS:
Kompatibilitas kueri TPC-DS: Sebagian besar kueri TPC-DS dapat dijalankan di Impala tanpa modifikasi, tetapi sebagian kecil menggunakan sintaks HiveQL yang tidak didukung Impala. Lewati atau sesuaikan kueri tersebut.
Jenis tabel: Selalu gunakan
CREATE EXTERNAL TABLEuntuk tabel yang didukung OSS.Performa: Latensi kueri OSS lebih tinggi dibandingkan HDFS. OSS paling cocok untuk data dingin atau beban kerja arsip di mana efisiensi biaya lebih penting daripada kecepatan kueri.