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:
- 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 shareCatatan Dalam topik ini, semua konten yang diapit dengan ${} adalah variabel lingkungan. Ubah variabel lingkungan sesuai dengan lingkungan aktual. - 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:
- 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 - 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 - 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 denganCLASSPATH=$HADOOP_YARN_HOME/${YARN_DIR}/*:${CLASSPATH}CLASSPATH=$HADOOP_YARN_HOME/${YARN_LIB_JARS_DIR}/*:${CLASSPATH}. - 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 - 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.
Parameter Metode konfigurasi fs.oss.endpoint Tentukan 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.accessKeyId Tentukan ID AccessKey yang digunakan untuk mengakses OSS. Untuk informasi lebih lanjut tentang cara mendapatkan ID AccessKey, lihat Dapatkan pasangan AccessKey fs.oss.accessKeySecret Tentukan rahasia AccessKey yang digunakan untuk mengakses OSS. Untuk informasi lebih lanjut tentang cara mendapatkan rahasia AccessKey, lihat Dapatkan pasangan AccessKey. fs.oss.impl Tentukan kelas yang digunakan untuk mengimplementasikan sistem file OSS berdasarkan Hadoop. Atur parameter ini menjadi org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem.fs.oss.buffer.dir Tentukan nama direktori yang digunakan untuk menyimpan file sementara. Kami merekomendasikan Anda mengatur parameter ini menjadi
/tmp/oss.fs.oss.connection.secure.enabled Tentukan apakah akan mengaktifkan HTTPS. Jika HTTPS diaktifkan, performa sistem menurun. Kami merekomendasikan Anda mengatur parameter ini menjadi false.
fs.oss.connection.maximum Tentukan jumlah maksimum koneksi ke OSS. Kami merekomendasikan Anda mengatur parameter ini menjadi 2048.
Untuk informasi lebih lanjut tentang parameter, kunjungi Modul Hadoop-Aliyun.
- Mulai ulang kluster sesuai petunjuk.
- 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-testJika data uji dapat dibaca dari dan ditulis ke OSS, itu menunjukkan bahwa konfigurasi sudah benar. Jika tidak, periksa konfigurasi Anda.
- Jalankan perintah berikut untuk menguji membaca data dari OSS:
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:
- 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 - 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 - Mulai ulang proses terkait Impala di semua node.Anda kemudian dapat menggunakan Impala untuk menanyakan data OSS.
Verifikasi konfigurasi
[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.71sReferensi
Untuk informasi lebih lanjut tentang Hadoop, kunjungi Hadoop Mendukung OSS.