Fermer

avril 23, 2018

Performances BCP sur Sqoop EXPORT vers SQL Server depuis Hadoop


Dans ce didacticiel, vous apprendrez comment exporter des données hors de Hadoop pour augmenter le débit à l'aide du pilote JDBC DataDirect SQL Server et Apache Sqoop . tout le monde s'est connecté à SQL Server en utilisant le support exclusif de Progress DataDirect pour l'authentification NTLM et Kerberos depuis Linux avec Sqoop. Maintenant, nous prévoyons de faire sauter vos esprits avec des performances d'insertion en vrac à haute volée dans SQL Server en utilisant Generic JDBC Connector de Sqoop. Les clients Linux obtiendront un débit similaire à celui de l'outil Microsoft BCP.

 sqoop-logo "title =" logo_sqoop "align =" middle "/></p data-recalc-dims=

Jusqu'ici, Cloudera et HortonWorks ont pointé les magasins vers la haute performance Pilote JDBC DataDirect SQL Server pour aider à charger des volumes de données de 10 Go à 1 To dans des datacenters SQL Server
Entrepôts. Il est courant que le pilote DataDirect SQL Server JDBC accélère les temps de chargement de 15 à 20 fois; et Sqoop verra une amélioration similaire, car il exploite les lots JDBC que nous convertissons de manière transparente dans le protocole de chargement en bloc natif de SQL Server . Le transfert de données hors de Hadoop et dans des sources JDBC externes est un projet passionnant qui représente la démocratisation de Big Data pour les utilisateurs d'applications en aval. Vous êtes en train de faire quelque chose correctement si vous êtes prêt à lire!

Commencer avec les performances rapides pour Sqoop EXPORT vers SQL Server

  1. Télécharger les pilotes DataDirect Connect pour JDBC pour et suivre les guides de démarrage rapide fournis avec le téléchargement.
  2. Copiez le fichier sqlserver.jar dans le répertoire $ SQOOP_HOME / lib sur votre ordinateur client. (Ce sera / usr / lib / sqoop / lib si vous avez installé à partir d'un paquet RPM ou Debian). Le pilote JDBC doit être installé uniquement sur la machine sur laquelle Sqoop est exécuté. et non sur chaque nœud de votre cluster Hadoop.
  3. Vérifiez le mode de récupération de la base de données conformément à l'article msdn sur Considérations pour la commutation à partir du modèle de récupération complet ou en masse . Pour vérifier le mode de récupération, l'utilisateur de la base de données peut exécuter la requête suivante:
     SELECT name, recovery_model_desc
    À partir de sys.databases
    WHERE name = 'database_name'; 

    Notez le recovery_model_desc retourné par cette requête (attendez-vous à retourner, 'BULK_LOGGED').

        

  4. Depuis la ligne de commande, exécutez la commande d'exportation Sqoop en utilisant les propriétés similaires ci-dessous. Ou spécifiez l'équivalent en utilisant l'interface utilisateur Web Hue pour les travaux Sqoop .
         sqoop export --connect 'jdbc: datadirect: sqlserver: // nc-sqlserver: 1433; base de données = test; utilisateur = test01; motdepasse = test01; EnableBulkLoad = true; BulkLoadBatchSize = 1024; BulkLoadOptions = 0' --driver com.ddtek.jdbc.sqlserver.SQLServerDriver --table 'blah_1024MB' --export-dir / utilisateur / hdfs / blah_1024MB / --input-lines-terminated-par "n" --input-fields-terminé-par ', '--batch -m 10

Notes

  • – le mode batch est utilisé pour l'exécution de l'instruction insert sous-jacente
  • – driver doit être spécifié lors de l'utilisation d'un connecteur JDBC générique .
  • – connect est l'URL JDBC. "EnableBulkLoad = true" autorise le pilote DataDirect SQL Server à utiliser le protocole de chargement en bloc pour l'insertion de lignes. La valeur "BulkLoadBatchSize" indique au pilote le nombre de lignes qu'il tentera de charger en bloc sur un seul aller-retour au serveur. Si cette valeur est inférieure à la valeur sqoop.export.records.per.statement, chaque appel à "executeBatch" entraînera plus d'un aller-retour vers le serveur afin d'insérer le lot de lignes.
  • – table : table à renseigner dans la base de données relationnelle cible lorsque les données sont transférées depuis HDFS
  • – rép-export : identifie le répertoire HDFS qui contient la table Hadoop à exporté
  • – input-lines-ended-by : identifie le caractère qui sépare les lignes dans les fichiers HDFS.
  • – input-fields-ended-by : identifie le caractère qui sépare les colonnes dans les fichiers HDFS
  • -D sqoop.export.records.per.statement n'est pas recommandé ni l'équivalent de la taille de lot JDBC. Il spécifie plutôt le nombre de lignes par instructions SQL pour les sources de données qui prennent en charge les insertions à plusieurs lignes telles que Postgres.
 INSERT INTO films (code, titre, did, date_prod, kind) VALEURS
  («B6717», «Tampopo», 110, «1985-02-10», «Comédie»),
  ('HG120', 'The Dinner Game', 140, DÉFAUT, 'Comédie');

Voir le guide d'utilisateur Sqoop pour référence complète .

Un merci spécial à Mike Spinak, ingénieur logiciel principal et Danh Huynh, administrateur système avec leur aide à l'installation et les tests dans le 6 nœuds CDH5 Cloudera. 2.0-1.cdh5.2.0.p0.36 cluster pour exporter des données dans SQL Server 2008 R2

Montrez-moi les numéros

Les résultats arrivent toujours de plusieurs magasins et le meilleur à ce jour est une charge de 40 Go dans SQL Server dans les 10 minutes. Dans le système ci-dessus, nous étions en train de charger 37 Go en 18,5 minutes. Il existe plusieurs propriétés dans Hadoop, Sqoop, le pilote JDBC et SQL Server que vous pouvez optimiser pour améliorer encore les performances.

Téléchargez votre pilote d'essai aujourd'hui et tweetez vos temps de chargement sur @DataDirect_News . Si vous avez des questions, s'il vous plaît contactez-nous ; ou appelez-nous au 1-800-876-3101.

Télécharger essai gratuit






Source link