Qu'est-ce que SQOOP dans Hadoop?
Apache SQOOP (SQL-to-Hadoop) est un outil conçu pour prendre en charge l'exportation et l'importation en masse de données dans HDFS à partir de magasins de données structurés tels que des bases de données relationnelles, des entrepôts de données d'entreprise et des systèmes NoSQL. Il s'agit d'un outil de migration de données basé sur une architecture de connecteur qui prend en charge des plugins pour fournir une connectivité à de nouveaux systèmes externes.
Un exemple de cas d'utilisation de Hadoop Sqoop est une entreprise qui exécute une importation Sqoop de nuit pour charger les données du jour à partir d'un SGBDR transactionnel de production dans un entrepôt de données Hive pour une analyse plus approfondie.
Ensuite, dans ce didacticiel Apache Sqoop, nous en apprendrons davantage sur l'architecture d'Apache Sqoop.
Architecture de Sqoop
Tous les systèmes de gestion de base de données existants sont conçus avec la norme SQL à l'esprit. Cependant, chaque SGBD diffère dans une certaine mesure en ce qui concerne le dialecte. Cette différence pose donc des problèmes en ce qui concerne les transferts de données entre les systèmes. Les connecteurs Sqoop sont des composants qui aident à surmonter ces défis.
Le transfert de données entre Sqoop Hadoop et le système de stockage externe est rendu possible grâce aux connecteurs de Sqoop.
Sqoop dispose de connecteurs pour travailler avec une gamme de bases de données relationnelles populaires, notamment MySQL, PostgreSQL, Oracle, SQL Server et DB2. Chacun de ces connecteurs sait comment interagir avec son SGBD associé. Il existe également un connecteur JDBC générique pour la connexion à toute base de données prenant en charge le protocole JDBC de Java. De plus, Sqoop Big data fournit des connecteurs MySQL et PostgreSQL optimisés qui utilisent des API spécifiques aux bases de données pour effectuer des transferts en masse de manière efficace.
En plus de cela, Sqoop dans le Big Data dispose de divers connecteurs tiers pour les magasins de données, allant des entrepôts de données d'entreprise (y compris Netezza, Teradata et Oracle) aux magasins NoSQL (tels que Couchbase). Cependant, ces connecteurs ne sont pas fournis avec le bundle Sqoop; ceux-ci doivent être téléchargés séparément et peuvent être ajoutés facilement à une installation Sqoop existante.
Pourquoi avons-nous besoin de Sqoop?
Le traitement analytique à l'aide de Hadoop nécessite le chargement d'énormes quantités de données provenant de diverses sources dans des clusters Hadoop. Ce processus de chargement de données en masse dans Hadoop, à partir de sources hétérogènes, puis de traitement, comporte un certain nombre de défis. Maintenir et garantir la cohérence des données et garantir une utilisation efficace des ressources sont des facteurs à prendre en compte avant de choisir la bonne approche pour le chargement des données.
Problèmes majeurs:
1. Chargement des données à l'aide de scripts
L'approche traditionnelle consistant à utiliser des scripts pour charger des données n'est pas adaptée au chargement de données en masse dans Hadoop; cette approche est inefficace et prend beaucoup de temps.
2. Accès direct aux données externes via l'application Map-Reduce
Fournir un accès direct aux données résidant sur des systèmes externes (sans chargement dans Hadoop) pour les applications de réduction de carte complique ces applications. Donc, cette approche n'est pas faisable.
3. En plus d'avoir la capacité de travailler avec d'énormes données, Hadoop peut travailler avec des données sous plusieurs formes différentes. Ainsi, pour charger ces données hétérogènes dans Hadoop, différents outils ont été développés. Sqoop et Flume sont deux de ces outils de chargement de données.
Ensuite, dans ce didacticiel Sqoop avec des exemples, nous découvrirons la différence entre Sqoop, Flume et HDFS.
Sqoop vs Flume vs HDFS dans Hadoop
Sqoop | Buse | HDFS |
---|---|---|
Sqoop est utilisé pour importer des données à partir de sources de données structurées telles que le SGBDR. | Flume est utilisé pour déplacer des données de diffusion en masse vers HDFS. | HDFS est un système de fichiers distribué utilisé par l'écosystème Hadoop pour stocker des données. |
Sqoop a une architecture basée sur des connecteurs. Les connecteurs savent comment se connecter à la source de données respective et récupérer les données. | Flume a une architecture basée sur des agents. Ici, un code est écrit (appelé «agent») qui s'occupe de récupérer les données. | HDFS a une architecture distribuée où les données sont distribuées sur plusieurs nœuds de données. |
HDFS est une destination pour l'importation de données à l'aide de Sqoop. | Les données circulent vers HDFS via zéro ou plusieurs canaux. | HDFS est une destination ultime pour le stockage de données. |
Le chargement des données Sqoop n'est pas piloté par les événements. | La charge de données Flume peut être pilotée par un événement. | HDFS ne stocke que les données qui lui sont fournies par quelque moyen que ce soit. |
Pour importer des données à partir de sources de données structurées, il faut utiliser uniquement les commandes Sqoop, car ses connecteurs savent comment interagir avec des sources de données structurées et en extraire des données. | Afin de charger des données de streaming telles que des tweets générés sur Twitter ou des fichiers journaux d'un serveur Web, Flume doit être utilisé. Les agents Flume sont conçus pour récupérer des données en continu. | HDFS a ses propres commandes shell intégrées pour y stocker des données. HDFS ne peut pas importer de données en streaming |