Configurer une connexion à Hive sécurisée par Kerberos - 2.1

Guide utilisateur de Talend Data Preparation

author
Talend Documentation Team
EnrichVersion
6.4
2.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Real-Time Big Data Platform
task
Qualité et préparation de données > Nettoyage de données
EnrichPlatform
Talend Data Preparation

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.

La section Ajout d'un nouveau type de base de données, explique comment 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 permet de sécuriser cette connexion avec Kerberos.

Avertissement : Si vous utilisez Talend Data Preparation en version 6.4, vous devez installer le patch lié au ticket https://jira.talendforge.org/browse/TDI-40793 afin de créer cette connexion sécurisée à Hive. Contactez votre représentant du Support Talend pour avoir accès au patch à installer.

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 à settings.xml :
    <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 :
    {
        "id": "Hive",
        "class": "org.apache.hive.jdbc.HiveDriver",
        "url": "jdbc:hive2://host:10000/default;principal=<your
        principal>",
        "paths": [
            {
                "path": "mvn:commons-el/commons-el/1.0"
            },
            {
                "path": "mvn:org.datanucleus/datanucleus-core/3.2.10"
            },
            {
                "path": "mvn:asm/asm-commons/3.1"
            },
            {
                "path": "mvn:tomcat/jasper-compiler/5.5.23"
            },
            {
                "path": "mvn:org.apache.derby/derby/10.11.1.1"
            },
            {
                "path": "mvn:jline/jline/2.12"
            },
            {
                "path": "mvn:org.apache.commons/commons-compress/1.4.1"
            },
            {
                "path": "mvn:com.fasterxml.jackson.core/jackson-annotations/2.2.2"
            },
            {
                "path": "mvn:org.apache.hive/hive-metastore/1.1.0-cdh5.13.1"
            },
            {
                "path": "mvn:org.apache.hive/hive-shims/1.1.0-cdh5.13.1"
            },
            {
                "path": "mvn:org.apache.hive/hive-shims/1.1.0-cdh5.13.1"
            },
            {
                "path": "mvn:joda-time/joda-time/1.6"
            },
            {
                "path": "mvn:org.codehaus.jackson/jackson-mapper-asl/1.9.2"
            },
            {
                "path": "mvn:com.google.code.findbugs/jsr305/3.0.0"
            },
            {
                "path": "mvn:org.apache.zookeeper/zookeeper/3.4.5-cdh5.13.1"
            },
            {
                "path": "mvn:antlr/antlr/2.7.7"
            },
            {
                "path": "mvn:commons-pool/commons-pool/1.5.4"
            },
            {
                "path": "mvn:org.apache.avro/avro/1.7.6-cdh5.13.1"
            },
            {
                "path": "mvn:org.antlr/stringtemplate/3.2.1"
            },
            {
                "path": "mvn:org.slf4j/slf4j-log4j12/1.7.5"
            },
            {
                "path": "mvn:org.eclipse.jetty.aggregate/jetty-all/7.6.0.v20120127"
            },
            {
                "path": "mvn:com.twitter/parquet-hadoop-bundle/1.5.0-cdh5.13.1"
            },
            {
                "path": "mvn:com.sun.jersey/jersey-servlet/1.14"
            },
            {
                "path": "mvn:commons-dbcp/commons-dbcp/1.4"
            },
            {
                "path": "mvn:org.slf4j/slf4j-api/1.7.5"
            },
            {
                "path": "mvn:javax.servlet.jsp/jsp-api/2.1"
            },
            {
                "path": "mvn:com.codahale.metrics/metrics-jvm/3.0.2"
            },
            {
                "path": "mvn:com.thoughtworks.paranamer/paranamer/2.3"
            },
            {
                "path": "mvn:tomcat/jasper-runtime/5.5.23"
            },
            {
                "path": "mvn:com.fasterxml.jackson.core/jackson-databind/2.2.2"
            },
            {
                "path": "mvn:asm/asm-tree/3.1"
            },
            {
                "path": "mvn:com.codahale.metrics/metrics-core/3.0.2"
            },
            {
                "path": "mvn:com.sun.jersey/jersey-core/1.14"
            },
            {
                "path": "mvn:org.apache.hive/hive-service/1.1.0-cdh5.13.1"
            },
            {
                "path": "mvn:org.jamon/jamon-runtime/2.3.1"
            },
            {
                "path": "mvn:com.sun.jersey/jersey-server/1.14"
            },
            {
                "path": "mvn:org.apache.commons/commons-lang3/3.1"
            },
            {
                "path": "mvn:com.codahale.metrics/metrics-json/3.0.2"
            },
            {
                "path": "mvn:org.apache.hive/hive-common/1.1.0-cdh5.13.1"
            },
            {
                "path": "mvn:org.apache.curator/curator-client/2.6.0"
            },
            {
                "path": "mvn:org.apache.thrift/libfb303/0.9.3"
            },
            {
                "path": "mvn:org.apache.thrift/libthrift/0.9.3"
            },
            {
                "path": "mvn:org.apache.geronimo.specs/geronimo-annotation_1.0_spec/1.1.1"
            },
            {
                "path": "mvn:net.sf.opencsv/opencsv/2.3"
            },
            {
                "path": "mvn:org.apache.geronimo.specs/geronimo-jaspic_1.0_spec/1.0"
            },
            {
                "path": "mvn:commons-lang/commons-lang/2.6"
            },
            {
                "path": "mvn:com.fasterxml.jackson.core/jackson-core/2.2.2"
            },
            {
                "path": "mvn:javax.mail/mail/1.4.1"
            },
            {
                "path": "mvn:javax.activation/activation/1.1"
            },
            {
                "path": "mvn:org.tukaani/xz/1.0"
            },
            {
                "path": "mvn:com.jolbox/bonecp/0.8.0.RELEASE"
            },
            {
                "path": "mvn:org.apache.httpcomponents/httpcore/4.2.5"
            },
            {
                "path": "mvn:org.apache.hive/hive-serde/1.1.0-cdh5.13.1"
            },
            {
                "path": "mvn:commons-cli/commons-cli/1.2"
            },
            {
                "path": "mvn:com.google.guava/guava/14.0.1"
            },
            {
                "path": "mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1"
            },
            {
                "path": "mvn:org.apache.httpcomponents/httpclient/4.2.5"
            },
            {
                "path": "mvn:commons-codec/commons-codec/1.4"
            },
            {
                "path": "mvn:log4j/log4j/1.2.16"
            },
            {
                "path": "mvn:org.apache.ant/ant/1.9.1"
            },
            {
                "path": "mvn:org.datanucleus/datanucleus-rdbms/3.2.9"
            },
            {
                "path": "mvn:javax.transaction/jta/1.1"
            },
            {
                "path": "mvn:commons-logging/commons-logging/1.1.3"
            },
            {
                "path": "mvn:log4j/apache-log4j-extras/1.2.17"
            },
            {
                "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.2"
            },
            {
                "path": "mvn:org.datanucleus/datanucleus-api-jdo/3.2.6"
            },
            {
                "path": "mvn:org.apache.hive.shims/hive-shims-common/1.1.0-cdh5.13.1"
            },
            {
                "path": "mvn:javax.jdo/jdo-api/3.0.1"
            },
            {
                "path": "mvn:org.xerial.snappy/snappy-java/1.0.4.1"
            },
            {
                "path": "mvn:org.apache.curator/curator-framework/2.6.0"
            },
            {
                "path": "mvn:asm/asm/3.2"
            },
            {
                "path": "mvn:org.apache.hive/hive-jdbc/1.1.0-cdh5.13.1"
            },
            {
                "path": "mvn:org.apache.hadoop:hadoop-yarn-server-resourcemanager:2.6.0"
            },
            {
                "path": "mvn:org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:2.6.0"
            },
            {
                "path": "mvn:org.apache.hadoop/hadoop-annotations/2.6.0"
            },
            {
                "path": "mvn:org.apache.hadoop/hadoop-yarn-common/2.6.0"
            },
            {
                "path": "mvn:org.apache.hadoop/hadoop-yarn-api/2.6.0"
            },
            {
                "path": "mvn:org.apache.hadoop/hadoop-yarn-server-common/2.6.0"
            },
            {
                "path": "mvn:org.apache.hadoop/hadoop-yarn-server-web-proxy/2.6.0"
            },
            {
                "path": "mvn:org.apache.hadoop/hadoop-common/2.7.1"
            },
            {
                "path": "mvn:org.apache.hadoop/hadoop-auth/2.7.1"
            },
            {
                "path": "mvn:org.apache.hadoop/hadoop-core/1.2.1"
            },
            {
                "path": "mvn:org.apache.hive.shims/hive-shims-0.23/1.1.0"
            }
        ]
    }
  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 :
    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.
    Avertissement : Si les répertoires org/talend/daikon/sandbox/properties/ n'existent pas dans <components_catalog_path>/config, créez-les.
  7. Ajoutez le contenu suivant au 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.

Même si les champs Username (Nom d'utilisateur) et Password (Mot de passe) sont marqués comme obligatoires, vous pouvez les laisser vide dans ce cas. L'authentification est effectuée avec Kerberos.

Si vous obtenez une erreur Method not supported (Méthode non supportée) en cliquant sur le bouton Test connection (Tester la connexion), assurez vous que le patch lié au ticket https://jira.talendforge.org/browse/TDI-40793 est correctement appliqué au serveur Components Catalog.

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 sur l'import de données depuis une base de données, consultez Ajout d'un jeu de données depuis une base de données.