Accéder au contenu principal Passer au contenu complémentaire

Configuration d'une connexion à Hive sécurisée par Kerberos

Hive est l'une des nombreuses bases de données pouvant être ajoutées à la liste des sources de données disponibles pour Talend Data Preparation.

Dans la page Ajout d'un nouveau type de base de données (uniquement en anglais), vous avez appris à ajouter de nouveaux pilotes JDBC afin d'enrichir la liste des bases de données disponibles depuis Talend Data Preparation. Cependant, l'exemple suivant est centré sur la configuration d'une connexion directe entre votre base de données Hive et Talend Data Preparation. Une étape de configuration supplémentaire vous permettra de sécuriser cette connexion avec Kerberos.

Avant de commencer

Vous avez téléchargé et ajouté le pilote Hive à votre dossier <components_catalog_path>.m2/jdbc-drivers/<database_name>/<jdbc_version>, comme décrit dans la page.

Procédure

  1. Dans le dossier d'installation de Components Catalog, ouvrez le fichier config/settings.xml.
    Par défaut, le dossier d'installation de Components Catalog et situé dans <TDP_installation_folder>/services/.
  2. Ajoutez le référentiel Cloudera au fichier settings.xml (uniquement en anglais).
    <settings>
        <profile>
            <id>cloudera</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <repositories>
                <repository>
                    <id>cloudera</id>
                    <name>Cloudera repository</name>
                    <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
                    <layout>default</layout>
                </repository>
            </repositories>
        </profile>
    </settings>
  3. Ouvrez <components_catalog_path>/config/jdbc_config.json et ajoutez le pilote Hive.
    Les versions compatibles mentionnées pouvant être sujettes à modification, n'utilisez le code suivant qu'à des fins d'exemple. Pour plus d'informations, consultez la documentation de Cloudera (uniquement en anglais) (en anglais).
    {
        "id": "Hive",
        "class": "org.apache.hive.jdbc.HiveDriver",
        "url": "jdbc:hive2://host:10000/default;principal=<your
        principal>",
        "paths": [
            {"path": "mvn:org.apache.hive/hive-jdbc/3.1.2"},
                            {"path": "mvn:commons-el/commons-el/1.0"},
                            {"path": "mvn:org.datanucleus/datanucleus-core/4.1.6"},
                            {"path": "mvn:asm/asm-commons/5.0.1"},
                            {"path": "mvn:tomcat/jasper-compiler/5.5.23"},
                            {"path": "mvn:org.apache.derby/derby/10.14.1.0"},
                            {"path": "mvn:jline/jline/2.12"},
                            {"path": "mvn:org.apache.commons/commons-compress/1.11"},
                            {"path": "mvn:com.fasterxml.jackson.core/jackson-annotations/2.9.5"},
                            {"path": "mvn:org.apache.hive/hive-metastore/2.1.1-cdh6.1.1"},
                            {"path": "mvn:org.apache.hive/hive-shims/0.23-2.1.1-cdh6.1.1"},
                            {"path": "mvn:org.apache.hive/hive-shims/2.1.1-cdh6.1.1"},
                            {"path": "mvn:joda-time/joda-time/2.9.9"},
                            {"path": "mvn:org.codehaus.jackson/jackson-mapper-asl/1.9.13-cloudera.1"},
                            {"path": "mvn:com.google.code.findbugs/jsr305/3.0.0"},
                            {"path": "mvn:org.apache.zookeeper/zookeeper/3.4.6"},
                            {"path": "mvn:commons-pool/commons-pool/1.6"},
                            {"path": "mvn:org.apache.avro/avro/1.8.2-cdh6.1.1"},
                            {"path": "mvn:com.twitter/parquet-hadoop-bundle/1.9.0-cdh6.1.1"},
                            {"path": "mvn:com.sun.jersey/jersey-servlet/1.19"},
                            {"path": "mvn:commons-dbcp/commons-dbcp/1.4"},
                            {"path": "mvn:org.slf4j/slf4j-api/1.7.25"},
                            {"path": "mvn:javax.servlet.jsp/jsp-api/2.1"},
                            {"path": "mvn:com.codahale.metrics/metrics-jvm/3.1.5"},
                            {"path": "mvn:com.thoughtworks.paranamer/paranamer/2.8"},
                            {"path": "mvn:tomcat/jasper-runtime/5.5.23"},
                            {"path": "mvn:com.fasterxml.jackson.core/jackson-databind/2.9.5"},
                            {"path": "mvn:asm/asm-tree/5.0.4"},
                            {"path": "mvn:com.codahale.metrics/metrics-core/3.2.1"},
                            {"path": "mvn:com.sun.jersey/jersey-core/1.19"},
                            {"path": "mvn:org.apache.hive/hive-service/2.1.1-cdh6.1.1"},
                            {"path": "mvn:org.jamon/jamon-runtime/2.4.1"},
                            {"path": "mvn:com.sun.jersey/jersey-server/1.19"},
                            {"path": "mvn:org.apache.commons/commons-lang3/3.8.1"},
                            {"path": "mvn:com.codahale.metrics/metrics-json/3.2.1"},
                            {"path": "mvn:org.apache.commons/commons-configuration2/2.1.1"},
                            {"path": "mvn:org.apache.hive/hive-common/2.1.1-cdh6.1.1"},
                            {"path": "mvn:org.apache.curator/curator-client/4.0.0"},
                            {"path": "mvn:org.apache.thrift/libfb303/0.9.3"},
                            {"path": "mvn:org.apache.thrift/libthrift/0.9.3"},
                            {"path": "mvn:net.sf.opencsv/opencsv/2.3"},
                            {"path": "mvn:commons-lang/commons-lang/2.6"},
                            {"path": "mvn:com.fasterxml.jackson.core/jackson-core/2.9.5"},
                            {"path": "mvn:org.tukaani/xz/1.6"},
                            {"path": "mvn:com.jolbox/bonecp/0.8.0.RELEASE"},
                            {"path": "mvn:org.apache.httpcomponents/httpcore/4.4.10"},
                            {"path": "mvn:org.apache.hive/hive-serde/2.1.1-cdh6.1.1"},
                            {"path": "mvn:commons-cli/commons-cli/1.4"},
                            {"path": "mvn:com.google.guava/guava/14.0.1"},
                            {"path": "mvn:org.apache.httpcomponents/httpclient/4.5.6"},
                            {"path": "mvn:commons-codec/commons-codec/1.11"},
                            {"path": "mvn:log4j/log4j/1.2-api-2.17.1"},
                            {"path": "mvn:org.apache.ant/ant/1.9.1"},
                            {"path": "mvn:org.datanucleus/datanucleus-rdbms/4.1.7"},
                            {"path": "mvn:javax.transaction/jta/1.1"},
                            {"path": "mvn:commons-logging/commons-logging/1.2"},
                            {"path": "mvn:javax.servlet/servlet-api/2.5"},
                            {"path": "mvn:org.apache.ant/ant-launcher/1.9.1"},
                            {"path": "mvn:net.sf.jpam/jpam/1.1"},
                            {"path": "mvn:org.codehaus.jackson/jackson-core-asl/1.9.13"},
                            {"path": "mvn:org.datanucleus/datanucleus-api-jdo/4.2.1"},
                            {"path": "mvn:org.apache.hive.shims/hive-shims-common/2.1.1-cdh6.1.1"},
                            {"path": "mvn:javax.jdo/jdo-api/3.0.1"},
                            {"path": "mvn:org.xerial.snappy/snappy-java/1.1.7.1"},
                            {"path": "mvn:org.apache.curator/curator-framework/4.0.0"},
                            {"path": "mvn:asm/asm/5.0.4"},
                            {"path": "mvn:org.apache.hadoop/hadoop-yarn-server-resourcemanager:3.0.0-cdh6.1.1"},
                            {"path": "mvn:org.apache.hadoop/hadoop-yarn-server-applicationhistoryservice:3.0.0-cdh6.1.1"},
                            {"path": "mvn:org.apache.hadoop/hadoop-annotations/3.0.0-cdh6.1.1"},
                            {"path": "mvn:org.apache.hadoop/hadoop-yarn-common/3.0.0-cdh6.1.1"},
                            {"path": "mvn:org.apache.hadoop/hadoop-yarn-api/3.0.0-cdh6.1.1"},
                            {"path": "mvn:org.apache.hadoop/hadoop-yarn-server-common/3.0.0-cdh6.1.1"},
                            {"path": "mvn:org.apache.hadoop/hadoop-yarn-server-web-proxy/3.0.0-cdh6.1.1"},
                            {"path": "mvn:org.apache.hadoop/hadoop-common/3.0.0-cdh6.1.1"},
                            {"path": "mvn:org.apache.hadoop/hadoop-auth/3.0.0-cdh6.1.1"},
                            {"path": "mvn:org.apache.hive/hive-service-rpc/2.1.1-cdh6.1.1"},
                            {"path": "mvn:com.fasterxml.woodstox/woodstox-core/5.1.0"},
                            {"path": "mvn:org.codehaus.woodstox/stax2-api/3.1.4"}
        ]
    }
  4. Ouvrez <components_catalog_path>/start.sh et ajoutez la propriété suivante dans les propriétés système : javax.security.auth.useSubjectCredsOnly=false.
    THE_CMD="$JAVA_BIN $JAVA_OPTS -
    Djavax.security.auth.useSubjectCredsOnly=false -cp
    \"$APP_CLASSPATH\" $APP_CLASS $*"
  5. Ouvrez <components_catalog_path>/config/application.properties et configurez la propriété krb5.config pour qu'elle pointe vers le fichier où est installé le serveur Components Catalog :

    Exemple

    krb5.config=/etc/krb5.conf
  6. Créez un fichier nommé sun.conf dans /config/org/talend/daikon/sandbox/properties/.
    Ce fichier est nécessaire pour permettre au composant Hive d'accéder à des propriétés système spécifiques.
    Note InformationsAvertissement : Si les répertoires dans le chemin org/talend/daikon/sandbox/properties/ n'existent pas dans <components_catalog_path>/config, créez les.
  7. Ajoutez le contenu suivant dans le fichier sun.conf.
    #
    # This file contains all Sun/Oracle specific system properties
    #
    java.runtime.name
    sun.boot.library.path
    java.vm.version
    java.vm.vendor
    java.vendor.url
    path.separator
    java.vm.name
    file.encoding.pkg
    sun.java.launcher
    user.country
    sun.os.patch.level
    java.vm.specification.name
    user.dir
    java.runtime.version
    java.awt.graphicsenv
    java.endorsed.dirs
    os.arch
    java.io.tmpdir
    line.separator
    java.vm.specification.vendor
    os.name
    sun.jnu.encoding
    java.library.path
    java.specification.name
    java.class.version
    sun.management.compiler
    os.version
    user.home
    user.timezone
    java.awt.printerjob
    idea.launcher.bin.path
    file.encoding
    java.specification.version
    java.class.path
    user.name
    java.vm.specification.version
    sun.java.command
    java.home
    sun.arch.data.model
    user.language
    java.specification.vendor
    java.vm.info
    java.version
    java.ext.dirs
    sun.boot.class.path
    sun.java.command
    java.home
    sun.arch.data.model
    user.language
    java.specification.vendor
    java.vm.info
    java.version
    java.ext.dirs
    sun.boot.class.path
    java.vendor
    file.separator
    java.vendor.url.bug
    sun.io.unicode.encoding
    sun.cpu.endian
    sun.desktop
    sun.cpu.isalist
    java.security.krb5.conf
    sun.security.krb5.debug
    java.security.krb5.kdc
    java.security.krb5.realm
    java.security.auth.login.config
    javax.security.auth.useSubjectCredsOnly
  8. Redémarrez le service Components Catalog.

Résultats

Dans Talend Data Preparation, la base de données Hive est maintenant disponible dans la liste déroulante Database type (Type de base de données) du formulaire d'import de jeu de données d'une base de données.

Note InformationsImportant : Les champs Username et Password sont obligatoires. Cependant, comme l'authentification est effecuée à l'aide de Kerberos, ils peuvent être renseignés avec des valeurs factices.

Lorsque vous exportez une préparation effectuée sur des données stockées dans votre base de données Hive, vous pouvez traiter les données sur le serveur Talend Data Preparation.

Pour plus d'informations concernant l'import de données depuis d'une base de données, consultez Ajout d'un jeu de données depuis une base de données (uniquement en anglais).

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !