Bit - loader

Microsoft Big Data Solutions: SQL Server PolyBase

   Artículo | Microsoft SQL Server 2016 Bit - Microsoft Big Data Solutions: SQL Server PolyBase
Xavier Saladié | 25/10/17

Ya hemos hablado por aquí en varias ocasiones (Big Data en Azure, Machine Learning en Azure, IoT en Azure) sobre soluciones Big Data en Microsoft Azure, pero hace relativamente poco que Microsoft nos permite traernos datos desde Azure a SQL Server utilizando una funcionalidad llamada PolyBase.

PolyBase es una característica opcional de SQL Server (a partir de SQL Server 2016) que, para una funcionalidad completa, necesita la versión Enterprise y que, en esencia, posibilita lanzar consultas relacionales que accedan a estructuras de datos almacenadas fuera de nuestro servidor SQL.

Soporta escalabilidad y por ello disponemos de diferentes opciones de instalación dependiendo de si necesitaremos un único nodo (Head Node) o un grupo de escalado horizontal (Scale-out group). La elección es importante dado que la única manera de cambiarla (por ahora) es desinstalando y volviendo a instalar.

La instalación crea 2 servicios en el equipo y, en instalación Scale-out, un conjunto de reglas de firewall para permitir las conexiones entrantes.

 

Detalle de los servicios que instala Polybase

 

Debemos especificar los orígenes de datos con los que necesitaremos conectividad desde Polybase.

 

sp_configure 'hadoop connectivity', 7

GO 

RECONFIGURE 

GO

El código numérico especifica si la conectividad es contra Hadoop (con el proveedor de Hortonworks o de Cloudera) o Azure BLOB Storage. Puedes consultar los códigos aquí. Cabe destacar que, aunque algunos códigos son para múltiples orígenes de datos, no existe un valor comodín que los soporte todos, eso sí, podemos cambiar de fuentes de datos ejecutando un nuevo comando sp_configure tantas veces como sea necesario.

Para comprobar que la funcionalidad ha sido correctamente instalada se puede lanzar la siguiente consulta que debe devolver como resultado el valor 1.

 

SELECT SERVERPROPERTY ('IsPolybaseInstalled')

A continuación, procederemos a crear los objetos SQL necesarios para apuntar a nuestra fuente de datos. Obviamente, la configuración es distinta (ligeramente) en función del tipo de origen, pero en cualquier caso habrá que crear los siguientes objetos:

  • CREDENTIAL con la clave de acceso al BLOB Storage o la contraseña del clúster
  • EXTERNAL DATA SOURCE que apunte al BLOB o a Hadoop.
  • EXTERNAL FILE FORMAT para especificar el formato del fichero.
  • EXTERNAL TABLE para especificar los nombres de los campos y sus tipos de datos.
  • STATISTICS para llevar a cabo las optimizaciones de las consultas.

A partir de este momento podremos lanzar consultas contra la fuente externa e incluso exportar información desde la Base de datos local hacia el repositorio (o repositorios) que hayamos configurado. Una de las ventajas es que, una vez configurado, la sintaxis es 100% transparente y podremos ejecutar las consultas SQL utilizando las cláusulas habituales JOIN, WHERE, ORDER BY, …

Por otro lado, la utilización de estos repositorios masivos externos sobre los que ejecutamos consultas para recuperar subconjuntos de información tiene una limitación de rendimiento a tener muy en cuenta y es que, en el caso de que las consultas no sean demasiado selectivas, el tiempo de respuesta puede hacerlas inviables. Si al contrario, recuperamos un pequeño porcentaje del total, el resultado puede ser francamente interesante ya que la consulta (excepto en el caso de los repositorios BLOB Storage) puede procesarse y filtrarse en el origen para que, de este modo,  el tráfico de datos sea el mínimo necesario.

Para poder filtrar los datos directamente en Hadoop, Microsoft ha implementado una técnica llamada Pushdown computation. Esta técnica permite que las búsquedas que cumplan ciertas condiciones en sus filtros, se ejecuten en Hadoop. Esencialmente,  estas condiciones tienen que ver con los tipos de datos especificados en la cláusula WHERE y los operadores implicados. El Pushdown crea Jobs de tipo MapReduce para así poder exprimir al máximo las capacidades de procesamiento distribuido de los clústeres Hadoop.

 

En definitiva, PolyBase nos permite integrar datos de la nube con datos locales en la misma solución sin tener que importar/exportar/refrescar con una determinada periodicidad, garantizando de este modo que podremos disponer de datos frescos y en tiempo real para que los análisis sean más rápidos y realistas.

Por poco más de 1€/h puedes tener funcionando un clúster Hadoop con 4 máquinas A3 para llevar a cabo diferentes simulaciones y pruebas de concepto que te ayuden a determinar configuraciones óptimas, umbrales y viabilidad de la solución.

El acceso a BLOB resulta mucho más económico ya que puedes disponer de 1 TB a partir de unos 10€   mensuales (dependiendo del número de accesos que realices al repositorio).

Si quieres cualquiera de los dos posibles escenarios a coste cero, siempre puedes crear una cuenta de prueba con 170€ de crédito a consumir en 30 días. También tienes una prueba de SQL Server Enterprise totalmente operativa durante 6 meses. Recuerda que a partir de esta versión, Microsoft ha separado el ciclo de actualizaciones de Management Studio y por tanto la descarga del entorno de administración debe hacerse por separado.


Entradas relacionadas

Cursos relacionados
Nuestro sitio utiliza cookies para análisis. Si no estás seguro de ello, echa un vistazo a nuestra política de privacidad.