Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:CDH 5 Hadoop ile OSS Verilerini Okuma ve Yazma

Son Güncelleme:Oct 01, 2026

CDH (Cloudera's Distribution including Apache Hadoop), Hadoop'ın popüler bir dağıtımıdır. CDH 6.0.1 (Hadoop 3.0.0 ile) gibi daha yeni sürümler OSS'i yerel olarak desteklese de CDH 5 (Hadoop 2.6 ile) gibi eski sürümler desteklemez. Bu konuda, bir CDH 5 kümesini OSS'ten veri okuyacak ve OSS'e veri yazacak şekilde nasıl yapılandıracağınız açıklanmaktadır.

Önkoşullar

Çalışan bir CDH 5 kümeniz olmalıdır. Bu konuda örnek olarak CDH 5.14.4 kullanılmaktadır. Bir CDH 5 kümesinin nasıl kurulacağına ilişkin talimatlar için resmi belgelere bakın.

Arka plan bilgileri

CDH 5, Kaynak Yöneticisi'nin gereksinim duyduğu httpclient ve httpcore kitaplıklarının daha eski bir sürümünü (sürüm 4.2.5) kullanır. Ancak OSS SDK bu kitaplıkların daha yeni sürümlerini gerektirir. Bu konu, söz konusu bağımlılık çakışmasını gidermek için bir geçici çözüm sunmaktadır.

Adım 1: OSS yapılandırmalarını ekleme

Aşağıdaki adımları CDH kümenizdeki tüm düğümlerde uygulayın:

  1. CDH 5 kurulumunuzun ${CDH_HOME} konumunda bulunan dizin yapısını kontrol edin:

    [root@cdh-master CDH-5.14.4-1.cdh5.14.4.p0.3]# ls -lh
    total 100K
    drwxr-xr-x  2 root root 4.0K Jun  12 21:03 bin
    drwxr-xr-x 27 root root 4.0K Jun  12 20:57 etc
    drwxr-xr-x  5 root root 4.0K Jun  12 20:57 include
    drwxr-xr-x  2 root root  68K Jun  12 21:09 jars
    drwxr-xr-x 38 root root 4.0K Jun  12 21:03 lib
    drwxr-xr-x  3 root root 4.0K Jun  12 20:57 lib64
    drwxr-xr-x  3 root root 4.0K Jun  12 20:51 libexec
    drwxr-xr-x  2 root root 4.0K Jun  12 21:02 meta
    drwxr-xr-x  4 root root 4.0K Jun  12 21:03 share                    
    Not

    Bu konuda, ${} içine alınan öğeler ortam değişkenleridir. Bunları kendi ortamınıza uygun değerlerle değiştirin.

  2. CDH 5.14.4 için OSS destek paketini indirin ve CDH 5 kurulum dizininizin jars klasörüne kaydedin.

    Bu paket, CDH 5.14.4 içindeki Hadoop sürümüne göre derlenmiştir ve OSS desteği için gerekli yamayı içerir. Diğer CDH sürümleri için paketleri aşağıdaki bağlantılardan indirebilirsiniz:

    • CDH 5.8.5

    • CDH 5.4.4

    • CDH 6.3.2

      Not

      CDH 6.3.2 için paket dosyalarını CDH 6 kurulum dizininizin jars klasörüne kopyalayın. Ardından paketi dağıtmak üzere sonraki adımları izleyin. Bu işlem, aliyun-sdk-oss-3.4.1.jar dosyasını güncellemeyi ve aliyun-java-sdk-*.jar dosyaları için ilgili konumlara sembolik bağlantılar oluşturmayı içerir.

  3. Paketi çıkarın.

    [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. ${CDH_HOME}/lib/hadoop dizinine gidin ve aşağıdaki komutları çalıştırın:

    [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. Kaynak Yöneticisinin dağıtıldığı düğümde ${CDH_HOME}/lib/hadoop-yarn/bin/yarn dizinine gidin. Betiği açın ve CLASSPATH=${CLASSPATH}:$HADOOP_YARN_HOME/${YARN_DIR}/* CLASSPATH=${CLASSPATH}:$HADOOP_YARN_HOME/${YARN_LIB_JARS_DIR}/* ifadesini CLASSPATH=$HADOOP_YARN_HOME/${YARN_DIR}/*:${CLASSPATH}CLASSPATH=$HADOOP_YARN_HOME/${YARN_LIB_JARS_DIR}/*:${CLASSPATH} ile değiştirin.

  6. Kaynak Yöneticisinin dağıtıldığı düğümde ${CDH_HOME}/lib/hadoop-yarn/lib dizinine gidin ve aşağıdaki komutları çalıştırın:

    [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. Gerekli yapılandırmaları Cloudera Manager kullanarak ekleyin.

    Kümeniz Cloudera Manager tarafından yönetilmiyorsa core-site.xml dosyasını doğrudan değiştirebilirsiniz. Cloudera Manager'da HDFS hizmetinin Cluster-wide Advanced Configuration Snippet (Safety Valve) for core-site.xml sayfasına gidin ve OSS ile ilgili parametreleri ekleyin.


    Parametre


    Değer


    fs.oss.endpoint

    OSS için bağlantı uç noktası.

    Örneğin Çin (Hangzhou) bölgesi için uç nokta oss-cn-hangzhou.aliyuncs.com şeklindedir. Uç noktalar hakkında daha fazla bilgi için bkz. Bölgeler ve uç noktalar.


    fs.oss.accessKeyId


    AccessKey ID'niz. Bir AccessKey çiftinin nasıl elde edileceğini öğrenmek için bkz. AccessKey çifti oluşturma.


    fs.oss.accessKeySecret


    AccessKey Secret'ınız. Bir AccessKey çiftinin nasıl elde edileceğini öğrenmek için bkz. AccessKey çifti oluşturma.


    fs.oss.impl


    Hadoop OSS dosya sistemi için uygulama sınıfı. Bu değeri org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem olarak ayarlayın.


    fs.oss.buffer.dir

    Geçici dosya dizini.

    Önerilen değer: /tmp/oss


    fs.oss.connection.secure.enabled

    HTTPS'in etkinleştirilip etkinleştirilmeyeceğini belirtir. HTTPS'in etkinleştirilmesi performansı etkileyebilir.

    Önerilen değer: false


    fs.oss.connection.maximum

    OSS'e yönelik maksimum bağlantı sayısı.

    Önerilen değer: 2048

    Parametreler hakkında daha fazla bilgi için bkz. Hadoop-Aliyun modülü.

  8. Cloudera Manager'ın istemi üzerine kümeyi yeniden başlatın.

  9. OSS'ten okuma ve OSS'e yazma işlemlerini test edin.

    • Veri okumayı test etme:

      hadoop fs -ls oss://${your-bucket-name}/
    • Veri yazmayı test etme:

      hadoop fs -mkdir oss://${your-bucket-name}/hadoop-test

      OSS'ten okuma ve OSS'e yazma yapabiliyorsanız kurulum başarılıdır. Aksi takdirde yapılandırmanızı gözden geçirin.

Adım 2: Impala'yı OSS'i destekleyecek şekilde yapılandırma

Impala HDFS'de depolanan verileri doğrudan sorgulayabilir. CDH 5 kümeniz için OSS desteğini etkinleştirdikten sonra OSS'teki verileri sorgulamak için de Impala'yı kullanabilirsiniz. OSS SDK httpclient ve httpcore kitaplıklarının daha yeni sürümlerini gerektirdiğinden Impala'nın dağıtıldığı tüm düğümlerde aşağıdaki adımları uygulayın:

  1. ${CDH_HOME}/lib/impala/lib dizinine gidin ve aşağıdaki komutları çalıştırın:

    [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. ${CDH_HOME}/bin dizinine gidin. impalad, statestored ve catalogd betiklerini değiştirin. Her dosyada son exec komutundan önce aşağıdaki satırı ekleyin:

    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. Tüm düğümlerde Impala ile ilgili tüm işlemleri yeniden başlatın.

    Yeniden başlatma işleminden sonra OSS'teki verileri sorgulamak için Impala'yı kullanabilirsiniz.

Yapılandırmayı doğrulama

Örneğin OSS'te depolanan ve call_center adlı bir TPC-DS kıyaslama tablosunu ele alalım. Bu verilere işaret eden bir harici tablo oluşturabilir ve ardından kayıtları cc_country alanına göre gruplandırarak saymak için bir sorgu çalıştırabilirsiniz.

[root@cdh-master ~]# impala-shell -i cdh-slave01:21000
Starting Impala Shell without Kerberos authentication
Connected to cdh-slave01:21000
Server version: impalad version 2.11.0-cdh5.14.4 RELEASE (build20e635646a13347800fad36a7d0b1da25ab32404)
***********************************************************************************
Welcome to the Impala shell.
(Impala Shell v2.11.0-cdh5.14.4 (20e6356) built on Tue Jun 1203:43:08 PDT 2018)
The HISTORY command lists all shell commands in chronological order.
***********************************************************************************
[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)
Query progress can be monitored at: http://cdh-slave01:25000/query_plan?query_id=fb4e09977145f367:3bdfe4d600000000
+---------------+----------+
| cc_country    | count(*) |
+---------------+----------+
| United States | 30       |
+---------------+----------+
Fetched 1 row(s) in 4.71s