Polybase est une des fonctionnalités majeures de la version SQL Server 2016. Polybase permet de répondre aux nouveaux défis de la BI contemporaine. Comment traiter des volumes de données de plus en plus grands, avec des structures que l’on ne sait pas encore exploiter aujourd’hui ?

Avec l’augmentation des capacités de stockage, la diminution des coûts, l’augmentation des puissances de calculs, des temps d’accès aux données toujours plus performants,  l’apparition de solutions de traitement de grand volume de données, distribuées et scalables, comme Hadoop, le monde de la BI traditionnelle, avec le datawarehouse classique, est à reconsidérer.

Avec la BI traditionnelle, il faut prévoir la modélisation en début de projet. Il faut définir le niveau de granularité des tables de faits ou d’agrégats et le type, le mode et le niveau d’historisation que l’on souhaite mettre en place. Tout manquement de la modélisation ne permet pas toujours de revenir en arrière. Une donnée dont l’historisation n’a pas été prévue et une donnée perdue. En ce sens, la notion de lac de données avec la possibilité de repousser la modélisation à plus tard est un avantage de choix qui va être utile dans un grand nombre de cas. Vous pourrez récupérer une masse d’information comme des logs ou bien des modifications de statut afin d’en repousser l’exploitation quand vous aurez gagné en maturité dans le traitement de l’information.

Qu’est-ce que Polybase ?

Polybase est un moteur qui sert de passerelle entre un moteur SQL Server et un cluster Hadoop ou un stockage Azure Blob Storage. C’est une couche d’abstraction entre le SQL et des données externes stockées sur un système de fichier autres (HDFS, …) .

polybase

Le moteur Polybase permet d’interroger une source externe à la base relationnelle SQL au sein d’une même requête. Pour ce faire :

  • Polybase génère des maps, c’est à dire décompose un problème en sous-problème pour l’envoyer à un système distribué, tel que HDFS, et de paralléliser le traitement sur tous les noeuds (compute node).
  • Il peut pousser les prédicats (pushdown computation) vers Hadoop (YARN) afin d’optimiser le temps d’extraction des données en faisant porter le poids des filtres sur la source au lieu d’appliquer le filtre après import de la totalité des données dans le moteur SQL.

Les pré-requis à l’installation de Polybase :

Pour commencer avec Polybase il vous faudra vérifier plusieurs choses :

  • Avoir une édition 64-bit de SQL Server 2016
  • Avoir au minimum la version 4.0 du Framework .NET
  • Installer Oracle Java SE RunTime Environment (JRE) version 7.51 ou supérieur (64-bit), oui je sais, c’est pas forcément plaisant de devoir installer un produit concurrent sur un serveur Windows.

Polybase supporte actuellement les formats suivants :

  • Delimited text,
  • Hive RCFile,
  • Hive ORC

Ces fichiers peuvent être lu directement compressés.

Le fait de lire les fichiers directement compressés, bien que pas nouveau, est une fonctionnalité vraiment intéressante. Cela permet de stocker encore plus de données dans notre cluster Hadoop.

Polybase supporte, actuellement, les distributions suivantes :

  • Hortonworks HDP 1.3 on Linux/Windows Server
  • Hortonworks HDP 2.0 on Linux/Windows Server
  • Hortonworks HDP 2.1 on Linux
  • Hortonworks HDP 2.2 on Linux/Windows Server
  • Cloudera CDH 4.3 on Linux
  • Cloudera CDH 5.1 on Linux
  • Azure blob storage
-- example: Comment activer la connectivité de l'instance pour Hortonworks 2.2 on Linux.
sp_configure 'hadoop connectivity', 5;
reconfigure

Exemple d’une requête d’import de données à partir d’Hadoop.

--Création d'une table externe à partir d'une source de données externe et d'un format de fichier.
CREATE EXTERNAL TABLE [dbo].[FastCustomers2009] (
        [FirstName] char(25) NOT NULL, 
        [LastName] char(25) NOT NULL, 
        [YearlyIncome] float NULL, 
        [MaritalStatus] char(1) NOT NULL
)
WITH (
        LOCATION='/old_data/2009/customerdata.tbl',
        DATA_SOURCE = HadoopHDP2,
        FILE_FORMAT = TextFileFormat,
        REJECT_TYPE = VALUE,
        REJECT_VALUE = 0
);

INSERT INTO dbo.FastCustomer2009(
[FirstName],
[LastName],
[YearlyIncome],
[MaritalStatus]
)
SELECT T1.[FirstName],
T1.[LastName],
T1.[YearlyIncome],
T1.[MaritalStatus]
 FROM Insured_Customers T1 JOIN CarSensor_Data T2
ON (T1.CustomerKey = T2.CustomerKey)
WHERE T2.YearMeasured = 2009 and T2.Speed > 40;

Polybase : une architecture scalable :

Polybase peut s’installer en mode standalone ou bien dans une architecture scalable sous forme d’un cluster d’instance SQL/Polybase. Cette architecture scalable permettra de synchroniser les Datas Nodes du cluster Hadoop avec les Computes Nodes du cluster SQL Server et d’éviter le goulet d’étranglement entre N Datas Nodes et 1 seul Compute Node. Ainsi il est possible de monter en charge.

Pour ce faire il suffit de d’installer SQL et Polybase sur N machines sur un même domaine et de démarrer le compte de service polybase à partir d’un compte du domaine.

Pour en savoir plus : https://msdn.microsoft.com/en-us/library/mt607030.aspx

Conclusion :

Polybase est, à mon sens, une réelle chance pour la BI. C’est une ouverture vers la BigData. Une possibilité de plus pour traiter les très fortes volumétries et d’autant plus dans des scénarios temps réels.

Tous les sujets produisant des masses importantes de données, tels que les sujets de webanalytics ou d’analyses des usages de toutes sortes, les sujets d’analyses sur les données collectées de capteurs, pourront être abordés de manière différente, sans agrégation préalable des données et en offrant plus de souplesse dans la modélisation.

Polybase est une opportunité pour tout ceux qui possèdent déjà un cluster hadoop et comptent passer sur SQL Server 2016.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.