全部产品
Search
文档中心

Object Storage Service:Gunakan CDH 5 untuk membaca dan menulis data OSS

更新时间:Jul 02, 2025

Distribusi Cloudera termasuk Apache Hadoop (CDH) adalah salah satu distribusi Hadoop. OSS didukung oleh Hadoop 3.0.0 di CDH 6.0.1, tetapi tidak didukung oleh Hadoop 2.6 di CDH 5. Topik ini menjelaskan cara mengonfigurasi CDH 5 untuk membaca dan menulis data OSS.

Prasyarat

Sebuah kluster CDH 5 telah diterapkan. Dalam topik ini, CDH 5.14.4 digunakan sebagai contoh. Untuk informasi lebih lanjut tentang cara membangun kluster CDH 5, kunjungi Panduan Instalasi Cloudera.

Informasi latar belakang

CDH 5 menggunakan versi yang lebih lama (4.2.5) dari komponen httpclient dan httpcore berdasarkan persyaratan Resource Manager. Namun, SDK OSS memerlukan versi yang lebih baru dari kedua komponen tersebut. Untuk memenuhi persyaratan SDK OSS, ikuti langkah-langkah berikut:

Langkah 1: Tambahkan konfigurasi OSS

Lakukan operasi berikut pada semua node CDH:

  1. Lihat struktur direktori ${CDH_HOME} tempat CDH 5 diinstal.
    [root@cdh-master CDH-5.14.4-1.cdh5.14.4.p0.3]# ls -lh
    Total ukuran file adalah 100 KB.
    drwxr-xr-x  2 root root 4.0K Juni  12 21:03 bin
    drwxr-xr-x 27 root root 4.0K Juni  12 20:57 etc
    drwxr-xr-x  5 root root 4.0K Juni  12 20:57 include
    drwxr-xr-x  2 root root  68K Juni  12 21:09 jars
    drwxr-xr-x 38 root root 4.0K Juni  12 21:03 lib
    drwxr-xr-x  3 root root 4.0K Juni  12 20:57 lib64
    drwxr-xr-x  3 root root 4.0K Juni  12 20:51 libexec
    drwxr-xr-x  2 root root 4.0K Juni  12 21:02 meta
    drwxr-xr-x  4 root root 4.0K Juni  12 21:03 share                    
    Catatan Dalam topik ini, semua konten yang diapit dengan ${} adalah variabel lingkungan. Ubah variabel lingkungan sesuai dengan lingkungan aktual.
  2. Klik di sini untuk mengunduh paket CDH 5.14.4 yang kompatibel dengan OSS ke folder jars di direktori instalasi CDH 5.
    Paket ini disertai dengan tambalan yang disediakan oleh Apache Hadoop untuk OSS berdasarkan versi Hadoop dari CDH 5.14.4. Untuk mengunduh versi lain dari paket, akses tautan berikut:
    • CDH 5.8.5
    • CDH 5.4.4
    • CDH 6.3.2
      Catatan Untuk CDH 6.3.2, Anda harus menyalin file paket ke folder jars direktori instalasi CDH dan kemudian melakukan langkah-langkah berikut untuk memperbarui aliyun-sdk-oss-3.4.1.jar dan menautkan file aliyun-java-sdk-*.jar ke lokasi yang sesuai.
  3. Ekstrak paket yang diunduh.
    [root@cdh-master CDH-5.14.4-1.cdh5.14.4.p0.3]# tar -tvf hadoop-oss-cdh-5.14.4.tar.gz 
    drwxr-xr-x root/root 0 2018-10-08 18:16 hadoop-oss-cdh-5.14.4/
    -rw-r--r-- root/root 13277 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-java-sdk-sts-3.0.0.jar
    -rw-r--r-- root/root 326724 2018-10-08 18:16 hadoop-oss-cdh-5.14.4/httpcore-4.4.4.jar
    -rw-r--r-- root/root 524927 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-sdk-oss-3.4.1.jar
    -rw-r--r-- root/root 116337 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-java-sdk-core-3.4.0.jar
    -rw-r--r-- root/root 215492 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-java-sdk-ram-3.0.0.jar
    -rw-r--r-- root/root 788137 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/aliyun-java-sdk-ecs-4.2.0.jar
    -rw-r--r-- root/root 70017 2018-10-08 17:36 hadoop-oss-cdh-5.14.4/hadoop-aliyun-2.6.0-cdh5.14.4.jar
    -rw-r--r-- root/root 736658 2018-10-08 18:16 hadoop-oss-cdh-5.14.4/httpclient-4.5.2.jar                       
  4. Masuk ke direktori ${CDH_HOME}/lib/hadoop. Jalankan perintah berikut:
    [root@cdh-master hadoop]# rm -f lib/httpclient-4.2.5.jar
    [root@cdh-master hadoop]# rm -f lib/httpcore-4.2.5.jar
    [root@cdh-master hadoop]# ln -s .. /../jars/hadoop-aliyun-2.6.0-cdh5.14.4.jar hadoop-aliyun-2.6.0-cdh5.14.4.jar
    [root@cdh-master hadoop]# ln -s hadoop-aliyun-2.6.0-cdh5.14.4.jar hadoop-aliyun.jar
    [root@cdh-master hadoop]# cd lib
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-java-sdk-core-3.4.0.jar aliyun-java-sdk-core-3.4.0.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-java-sdk-ecs-4.2.0.jar aliyun-java-sdk-ecs-4.2.0.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-java-sdk-ram-3.0.0.jar aliyun-java-sdk-ram-3.0.0.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-java-sdk-sts-3.0.0.jar aliyun-java-sdk-sts-3.0.0.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-sdk-oss-3.4.1.jar aliyun-sdk-oss-3.4.1.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/httpclient-4.5.2.jar httpclient-4.5.2.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/httpcore-4.4.4.jar httpcore-4.4.4.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/jdom-1.1.jar jdom-1.1.jar
  5. Masuk ke direktori ${CDH_HOME}/lib/hadoop-yarn/bin/ pada node tempat Resource Manager diterapkan. Ganti CLASSPATH=${CLASSPATH}:$HADOOP_YARN_HOME/${YARN_DIR}/* CLASSPATH=${CLASSPATH}:$HADOOP_YARN_HOME/${YARN_LIB_JARS_DIR}/* dalam file yarn dengan CLASSPATH=$HADOOP_YARN_HOME/${YARN_DIR}/*:${CLASSPATH}CLASSPATH=$HADOOP_YARN_HOME/${YARN_LIB_JARS_DIR}/*:${CLASSPATH}.
  6. Masuk ke direktori ${CDH_HOME}/lib/hadoop-yarn/lib pada node tempat Resource Manager diterapkan. Jalankan perintah berikut:
    [root@cdh-master lib]# ln -s .. /.. /../jars/httpclient-4.2.5.jar httpclient-4.2.5.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/httpcore-4.2.5.jar httpcore-4.2.5.jar
  7. Gunakan alat manajemen kluster CM untuk menambahkan konfigurasi.
    Jika tidak ada kluster yang dikelola oleh CM, ubah file core-site.xml. Tabel berikut menjelaskan parameter yang dapat Anda konfigurasikan di CM sebagai contoh.
    ParameterMetode konfigurasi
    fs.oss.endpointTentukan titik akhir yang digunakan untuk mengakses wilayah tempat bucket berada.

    Sebagai contoh, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi oss-cn-hangzhou.aliyuncs.com. Untuk informasi lebih lanjut tentang titik akhir wilayah lainnya, lihat Wilayah dan titik akhir.

    fs.oss.accessKeyIdTentukan ID AccessKey yang digunakan untuk mengakses OSS. Untuk informasi lebih lanjut tentang cara mendapatkan ID AccessKey, lihat Dapatkan pasangan AccessKey
    fs.oss.accessKeySecretTentukan rahasia AccessKey yang digunakan untuk mengakses OSS. Untuk informasi lebih lanjut tentang cara mendapatkan rahasia AccessKey, lihat Dapatkan pasangan AccessKey.
    fs.oss.implTentukan kelas yang digunakan untuk mengimplementasikan sistem file OSS berdasarkan Hadoop. Atur parameter ini menjadi org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem.
    fs.oss.buffer.dirTentukan nama direktori yang digunakan untuk menyimpan file sementara.

    Kami merekomendasikan Anda mengatur parameter ini menjadi /tmp/oss.

    fs.oss.connection.secure.enabledTentukan apakah akan mengaktifkan HTTPS. Jika HTTPS diaktifkan, performa sistem menurun.

    Kami merekomendasikan Anda mengatur parameter ini menjadi false.

    fs.oss.connection.maximumTentukan jumlah maksimum koneksi ke OSS.

    Kami merekomendasikan Anda mengatur parameter ini menjadi 2048.

    Untuk informasi lebih lanjut tentang parameter, kunjungi Modul Hadoop-Aliyun.

  8. Mulai ulang kluster sesuai petunjuk.
  9. Uji membaca data dari dan menulis data ke OSS.
    • Jalankan perintah berikut untuk menguji membaca data dari OSS:
      hadoop fs -ls oss://${your-bucket-name}/
    • Jalankan perintah berikut untuk menguji menulis data ke OSS:
      hadoop fs -mkdir oss://${your-bucket-name}/hadoop-test

      Jika data uji dapat dibaca dari dan ditulis ke OSS, itu menunjukkan bahwa konfigurasi sudah benar. Jika tidak, periksa konfigurasi Anda.

Langkah 2: Konfigurasikan dukungan OSS untuk Impala

Impala dapat digunakan untuk menanyakan data yang disimpan di Hadoop Distributed File System (HDFS). Setelah Anda mengonfigurasi CDH 5 untuk mendukung OSS, Anda dapat menggunakan Impala untuk menanyakan data yang disimpan di OSS. SDK OSS memerlukan versi yang lebih baru dari komponen httpclient dan httpcore. Oleh karena itu, Anda harus melakukan langkah-langkah berikut pada node tempat Impala diterapkan:

  1. Masuk ke direktori ${CDH_HOME}/lib/impala/lib. Jalankan perintah berikut:
    [root@cdh-master lib]# rm -f httpclient-4.2.5.jar httpcore-4.2.5.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/httpclient-4.5.2.jar httpclient-4.5.2.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/httpcore-4.4.4.jar httpcore-4.4.4.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/hadoop-aliyun-2.6.0-cdh5.14.4.jar hadoop-aliyun.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-java-sdk-core-3.4.0.jar aliyun-java-sdk-core-3.4.0.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-java-sdk-ecs-4.2.0.jar aliyun-java-sdk-ecs-4.2.0.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-java-sdk-ram-3.0.0.jar aliyun-java-sdk-ram-3.0.0.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-java-sdk-sts-3.0.0.jar aliyun-java-sdk-sts-3.0.0.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/aliyun-sdk-oss-3.4.1.jar aliyun-sdk-oss-3.4.1.jar
    [root@cdh-master lib]# ln -s .. /.. /../jars/jdom-1.1.jar jdom-1.1.jar
  2. Masuk ke direktori ${CDH_HOME}/bin, tambahkan konten berikut sebelum perintah exec di baris terakhir file impalad, statestored, dan catalogd.
    export CLASSPATH=$CLASSPATH:${IMPALA_HOME}/lib/httpclient-4.5.2.jar:${IMPALA_HOME}/lib/httpcore-4.4.4.jar:${IMPALA_HOME}/lib/hadoop-aliyun.jar:${IMPALA_HOME}/lib/aliyun-java-sdk-core-3.4.0.jar:${IMPALA_HOME}/lib/aliyun-java-sdk-ecs-4.2.0.jar:${IMPALA_HOME}/lib/aliyun-java-sdk-ram-3.0.0.jar:${IMPALA_HOME}/lib/aliyun-java-sdk-sts-3.0.0.jar:${IMPALA_HOME}/lib/aliyun-sdk-oss-3.4.1.jar:${IMPALA_HOME}/lib/jdom-1.1.jar
  3. Mulai ulang proses terkait Impala di semua node.
    Anda kemudian dapat menggunakan Impala untuk menanyakan data OSS.

Verifikasi konfigurasi

Benchmark TPC-DS menggunakan tabel bernama call_center. Jika tabel ini disimpan di OSS, Anda dapat membuat tabel eksternal yang memetakan ke call_center dan menanyakan jumlah rekaman dalam tabel berdasarkan cc_country.
[root@cdh-master ~]# impala-shell -i cdh-slave01:21000
Memulai Impala Shell tanpa otentikasi Kerberos
Terhubung ke cdh-slave01:21000
Versi Server: impalad versi 2.11.0-cdh5.14.4 RELEASE (build20e635646a13347800fad36a7d0b1da25ab32404)
***********************************************************************************
Selamat datang di Impala shell.
(Impala Shell v2.11.0-cdh5.14.4 (20e6356) dibangun pada Tue Jun 1203:43:08 PDT 2018)

Perintah HISTORY mencantumkan semua perintah shell secara kronologis.
***********************************************************************************
[cdh-slave01:21000] > droptableifexists call_center;
Query: droptableifexists call_center
[cdh-slave01:21000] >
[cdh-slave01:21000] > createexternaltable 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
                    > )
                    > rowformatdelimitedfieldsterminatedby'|'
                    > location 'oss://${your-bucket-name}/call_center';
Query: createexternaltable 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
)
rowformatdelimitedfieldsterminatedby'|'
location 'oss://${your-bucket-name}/call_center'
Fetched 0row(s) in0.07s

[cdh-slave01:21000] > select cc_country, count(*) from call_center groupby cc_country;
Query: select cc_country, count(*) from call_center groupby cc_country
Query submitted at: 2018-10-2816:21:13 (Coordinator: http://cdh-slave01:25000)
Progress query dapat dipantau di: http://cdh-slave01:25000/query_plan?query_id=fb4e09977145f367:3bdfe4d600000000
+---------------+----------+
| cc_country    | count(*) |
+---------------+----------+
| United States | 30       |
+---------------+----------+
Fetched 1 row(s) in 4.71s

Referensi

Untuk informasi lebih lanjut tentang Hadoop, kunjungi Hadoop Mendukung OSS.