Post on 02-Oct-2020
transcript
TecnologíasdeProcesamientoBigData
Tecnologías de procesamiento Big Data
ApacheSQOOP
Tecnologías de procesamiento Big Data
ApacheSqoop
qDocumentación de Apache
https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html
qLibro de referencia
Kathleen Ting, Jarek Jarcec(2013) “Apache Sqoop Cookbook”
qVersión estable 1.4.6
Tecnologías de procesamiento Big Data
Topics delcapítulo
q Introducción a Sqoopq Herramientas disponibles en Sqoopq Importar tablas a HDFSq Paralelismoq Importar tablas a Hiveq Importar tablas a HBaseq Import incrementalq Sqoop Jobq Sqoop Export
Tecnologías de procesamiento Big Data
Sqoop enelecosistemaHadoop
HerramientasdeIngesta
ProcesamientoBatch
Coordinación
BDnosql
Buscador(indexación)
ProcesamientoNRT
Workflow
Tecnologías de procesamiento Big Data
IntroducciónaSqoop
q Las empresas almacenan sus datos en sistemas de almacenamiento
tradicionalesà Bases de datos relacionales.
q Con la aparición de Hadoop surge la necesidad de una herramienta que
permita migrar datos desde sistemas tradicionales a un cluster de Hadoop
(HDFS).
q Apache Sqoop cubre esta necesidad.
Elegimosunorigen(MySQL)
Elegimosundestino(HDFS)
Sqooptransfiere
nuestrosdatos
Tecnologías de procesamiento Big Data
IntroducciónaSqoop
RDBMS(MySQL,Oracle,
Teradata)
Hadoop FileSystem(HDFS,
Hbase,Hive)
IMPORT
EXPORT
CLUSTERHADOOP
SQOOP
LaherramientaIMPORT deSqoop importacadatabladesdeunRDBMSaHadoop.CadafiladelatablaseimportacomounregistroenHDFS..
LaherramientaEXPORT deSqoop exportalosficherosdeHadoop atablasdeunRDBMS.CadaregistrodeunficherodeHDFSseráunafiladelatablaenelRDBMS.
AunqueSqoop disponedemuchasfuncionalidadeslasmásimportantessonIMPORTyEXPORT:
Tecnologías de procesamiento Big Data
IntroducciónaSqoop
q Un proceso de Sqoop (tanto IMPORT como EXPORT) lanza un job de Map
Reduce y por tanto es un proceso BATCH.
q Sqoop no hace réplicas del origen en tiempo real, sino que hace una copia de
los sistemas origen en un momento dado.
q ¿Existen herramientas que hagan de espejo origen-destino?
Tecnologías de procesamiento Big Data
Topics delcapítulo
q Introducción a Sqoopq Herramientas disponibles en Sqoopq Importar tablas a HDFSq Paralelismoq Importar tablas a Hiveq Importar tablas a HBaseq Import incrementalq Sqoop Jobq Sqoop Export
Tecnologías de procesamiento Big Data
HerramientasdisponiblesenSqoop
bash-4.1$ sqoop helpWarning: /opt/cloudera/parcels/CDH-5.11.1-1.cdh5.11.1.p0.4/bin/../lib/sqoop/../accumulo does notexist! Accumulo imports will fail.Please set $ACCUMULO_HOME to the root of your Accumulo installation.17/09/22 19:21:33 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.11.1usage: sqoop COMMAND [ARGS]
Available commands:codegen Generate code to interact with database recordscreate-hive-table Import a table definition into Hiveeval Evaluate a SQL statement and display the resultsexport Export an HDFS directory to a database tablehelp List available commandsimport Import a table from a database to HDFSimport-all-tables Import tables from a database to HDFSimport-mainframe Import datasets from a mainframe server to HDFSjob Work with saved jobslist-databases List available databases on a serverlist-tables List available tables in a databasemerge Merge results of incremental importsmetastore Run a standalone Sqoop metastoreversion Display version information
See 'sqoop help COMMAND' for information on a specific command.
Comprobamosqueestáinstaladalaherramientadesqoop yejecutamossqoop help
Tecnologías de procesamiento Big Data
Import.Funcionalidadesdisponibles
bash-4.1$ sqoop help importWarning: /opt/cloudera/parcels/CDH-5.11.1-1.cdh5.11.1.p0.4/bin/../lib/sqoop/../accumulodoes not exist! Accumulo imports will fail.Please set $ACCUMULO_HOME to the root of your Accumulo installation.17/09/22 19:37:12 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.11.1usage: sqoop import [GENERIC-ARGS] [TOOL-ARGS]
Common arguments:--connect <jdbc-uri> --connection-manager <class-name>--connection-param-file <properties-file>--driver <class-name>--hadoop-home <hdir> --hadoop-mapred-home <dir> --help --metadata-transaction-isolation-level <isolationlevel>
…
At minimum, you must specify --connect and --tableArguments to mysqldump and other subprograms may be suppliedafter a '--' on the command line.
Ejecutamossqoop help import
Tecnologías de procesamiento Big Data
Topics delcapítulo
q Introducción a Sqoopq Herramientas disponibles en Sqoopq Importar tablas a HDFSq Paralelismoq Importar tablas a Hiveq Importar tablas a HBaseq Import incrementalq Sqoop Jobq Sqoop Export
Tecnologías de procesamiento Big Data
ImportartablasaHDFS
¿ Qué parámetros pueden ser necesarios en un IMPORT?
Tecnologías de procesamiento Big Data
ImportartablasaHDFS
sqoop import--connect--username--password--table--target-dir
sqoop import (generic args) (import args)
Tecnologías de procesamiento Big Data
ImportartablasaHDFS
customerID
contactName
address
city
postalCode
phoneNumber
orderID
customerID
orderDate
product
quantity
price
q Los ejemplos los veremos usando un caso típico: la tabla customers y orders.
Tecnologías de procesamiento Big Data
ImportartablasaHDFS
sqoop import \--connect jdbc:mysql://localhost/database \--username alumno \--password alumno \--table customers \--target-dir /data/customers
q Usa --target-dir para especificar la ruta de destino final en HDFS
sqoop import \--connect jdbc:mysql://localhost/database \--username alumno --password-file ${user.home}/.password \--table customers \--warehouse-dir /data
q Usa --warehouse-dir para especificar la ruta destino padre en HDFS. Sqoopcreará un subdirectorio con el nombre de la tabla
q Recomendación : securiza la password usando --password-file
Tecnologías de procesamiento Big Data
HANDSON
q EJERCICIO 1
En este ejercicio vamos a ver la diferencia de usar el comando target-dir y
warehouse-dir.
Tecnologías de procesamiento Big Data
ImportartablasaHDFS
sqoop import \--connect jdbc:mysql://localhost/database \--username alumno \--password alumno \--table customers \--columns ordersID,product,price--where ‘price > 100’--target-dir /data/customers
q Usa --columns y --where para importar datos parciales de la tabla.
Tecnologías de procesamiento Big Data
HANDSON
q EJERCICIO 2
En este ejercicio importaremos sólo un subconjunto de la tabla origen.
q EJERCICIO 3
Ejecución a través de un shell script.
Permisos:Unixdisponedetrespermisos, lectura(r), escritura(w) y ejecución(x).Entotaltendremosnuevebitsqueindicanlosdistintospermisoenelsiguienteorden: usuario,grupo,otros:
usuario 7=111=rwxgrupo 7=111=rwxotros 5=101=r-x
Tecnologías de procesamiento Big Data
Topics delcapítulo
q Introducción a Sqoopq Herramientas disponibles en Sqoopq Importar tablas a HDFSq Paralelismoq Importar tablas a Hiveq Importar tablas a HBaseq Import incrementalq Sqoop Jobq Sqoop Export
Tecnologías de procesamiento Big Data
ParalelismoenSqoop
Id :[0-50]
Id:[51-100]
Id:[101-200]
Id:[201-250]
q Usa –split-by y --m para optimizar el import en Sqoop.q Por defecto se usan 4 mappers.q Recomendación: para no sobrecargar la BD origen elegir un número pequeño de
mappers e ir subiendo hasta llegar al óptimo.q Por defecto split-by escoge la clave primaria pero no tiene porqué ser el campo
óptimo para el split (histograma).
m1
m2
m3
m4
Tecnologías de procesamiento Big Data
HANDSON
q EJERCICIO 4. Paralelismo en Sqoop con los parámetros de mappers y split-by.
Tecnologías de procesamiento Big Data
Free-form query
sqoop import \--connect jdbc:mysql://localhost/database \--username alumno \--password alumno \--query 'SELECT a.order_date FROM orders a JOIN customers b on a.customerID = b.customerID WHERE $CONDITIONS' \--split-by customerID \--target-dir /data/orders_date
q Usa --query cuando quieres traerte datos de dos tablas distintas. “Free-formquery”Obligatorio el uso de --split-by y --target-dir (alternativa --m 1).No compatible con --warehouse-dir .
Tecnologías de procesamiento Big Data
ImportartablasaHDFS
q En el caso de la “free-form query” Sqoop calcula el max(customerID) y el
min(customerID) sobre los datos de la query. Esta query puede disminuir
mucho el rendimiento.
q Como alternativa ofrece añadir el parámetro --boundary-query.
q Este parámetro puede ser una query arbitraria con los parámetros mínimo y
máximo definidos como constantes en caso de conocerlos aproximadamente
de antemano.
Tecnologías de procesamiento Big Data
ImportartablasaHDFS
sqoop import \--connect jdbc:mysql://localhost/database \--username alumno \--password alumno \--query 'SELECT a.order_date FROM orders a JOIN customers b on a.customerID = b.customerID WHERE $CONDITIONS' \--split-by customerID \--target-dir /data/orders_date--boundary-query ’select min(customerID),max(customerID) from customers’
sqoop import \--connect jdbc:mysql://localhost/database \--username alumno \--password alumno \--query 'SELECT a.order_date FROM orders a JOIN customers b on a.customerID = b.customerID WHERE $CONDITIONS' \--split-by customerID \--target-dir /data/orders_date--boundary-query ’select 20,500 from customers’
Tecnologías de procesamiento Big Data
HANDSON
q EJERCICIO 5. Importar datos de varias tablas.
Tecnologías de procesamiento Big Data
Topics delcapítulo
q Introducción a Sqoopq Herramientas disponibles en Sqoopq Importar tablas a HDFSq Paralelismoq Importar tablas a Hiveq Importar tablas a HBaseq Import incrementalq Sqoop Jobq Sqoop Export
Tecnologías de procesamiento Big Data
ImportartablasaHIVE
q Podemos importar datos directamente a HIVE.
sqoop import \--connect jdbc:mysql://localhost/database \--username alumno --password alumno \--table orders \--hive-import \--create-hive-table \--hive-table database.orders
q El comando anterior crea una tabla nueva en Hive .
Tecnologías de procesamiento Big Data
HANDSON
q EJERCICIO 6. Importar datos a HIVE.
Tecnologías de procesamiento Big Data
Topics delcapítulo
q Introducción a Sqoopq Herramientas disponibles en Sqoopq Importar tablas a HDFSq Paralelismoq Importar tablas a Hiveq Importar tablas a HBaseq Import incrementalq Sqoop Jobq Sqoop Export
Tecnologías de procesamiento Big Data
Topics delcapítulo
q Introducción a Sqoopq Herramientas disponibles en Sqoopq Importar tablas a HDFSq Paralelismoq Importar tablas a Hiveq Importar tablas a HBaseq Import incrementalq Sqoop Jobq Sqoop Export
Tecnologías de procesamiento Big Data
Import incremental
orderID product quantity
37 Product_A 2
38 Product_B 1
39 Product_C 1
orderID product quantity
37 Product_A 2
38 Product_B 1
39 Product_C 1
40 Product_C 1
41 Product_D 5
orderID product quantity
37 Product_A 2
38 Product_B 1
39 Product_C 1
orderID product quantity
37 Product_A 2
38 Product_B 6
39 Product_C 1
40 Product_C 1
append
last-modified
Tecnologías de procesamiento Big Data
Import incrementalconappend
sqoop import \--connect jdbc:mysql://localhost/database \--username alumno --password alumno \--table orders \--warehouse-dir /data \--incremental append \--check-column orderId \--last-value 39
q Hacemos import incrementales, es decir copiamos sólo los nuevos registros
que haya en la tabla que queremos migrar.
q Usamos --incremental append , --check-column --last-value.
q Esta opción sólo vale cuando únicamente se hace append en la base de
datos.
q En este caso se copiarán aquellas filas cuyo order_id sea mayor que el
indicado en el last_value (39).
Tecnologías de procesamiento Big Data
Import incrementalconlast modified
sqoop import \--connect jdbc:mysql://localhost/database \--username alumno --password alumno \--table orders \--warehouse-dir /data \--incremental lastmodified \--check-column updateDate \--last-value "2017-09-20 08:37:59"
q En este caso sí se hacen updates en el base de datos.
q Usamos --incremental lastmodified,--check-column y --last-value.
q La tabla tiene que tener un campo timestamp que se tiene que actualizar en
cada inserción.
q Se copian aquellas filas cuyo updateDate sea mayor que el last-value.
Tecnologías de procesamiento Big Data
HANDSON
q EJERCICIO 7. Importar datos incrementales.
Tecnologías de procesamiento Big Data
Topics delcapítulo
q Introducción a Sqoopq Herramientas disponibles en Sqoopq Importar tablas a HDFSq Paralelismoq Importar tablas a Hiveq Importar tablas a HBaseq Import incrementalq Sqoop Jobq Sqoop Export
Tecnologías de procesamiento Big Data
Sqoop Jobs
q ¿Cómo sabemos cuál fue el último registro que copiamos de la tabla de
origen a hadoop? ¿Lo apuntamos en una libreta de papel?à Automatizamos
con Sqoop JobJ
q Sqoop te permite crear jobs y programarlos en el tiempo.
q Sqoop almacena el último registro que copiamos a HDFS de forma que la
siguiente vez que ejecutamos el job no nos tenemos que preocupar por nada.
q Se pueden programar import y export.
sqoop job (generic args) (job args)
Tecnologías de procesamiento Big Data
Sqoop Jobs
sqoop job --list
q Usamos el comando --list para listar los jobs que hay programados.
q Usamos el comando --show para obtener los detalles de un job que esté
programado.
sqoop job --show myjob
q Para ejecutar un job de la lista usamos --exec.
sqoop job --exec myjob
Tecnologías de procesamiento Big Data
Sqoop Jobs
sqoop job --create myjob \-- import \--connect jdbc:mysql://localhost/database \--username alumno \--password alumno \--table customers \--delete-target-dir \--target-dir /data/customers
q ¿Cómo creamos un job?
q Para borrar un job usamos el comando --delete.
sqoop job --delete myjob
Tecnologías de procesamiento Big Data
HANDSON
q EJERCICIO 8. Creación de un job de sqoop.
Tecnologías de procesamiento Big Data
Topics delcapítulo
q Introducción a Sqoopq Herramientas disponibles en Sqoopq Importar tablas a HDFSq Paralelismoq Importar tablas a Hiveq Importar tablas a HBaseq Import incrementalq Sqoop Jobq Sqoop Export
Tecnologías de procesamiento Big Data
Export.Funcionalidadesdisponibles
$ sqoop help exportWarning: /opt/cloudera/parcels/CDH-5.11.1-1.cdh5.11.1.p0.4/bin/../lib/sqoop/../accumulodoes not exist! Accumulo imports will fail.Please set $ACCUMULO_HOME to the root of your Accumulo installation.17/09/23 19:10:26 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6-cdh5.11.1usage: sqoop export [GENERIC-ARGS] [TOOL-ARGS]
Common arguments:--connect <jdbc-uri> --connection-manager <class-name>--connection-param-file <properties-file>--driver <class-name>--hadoop-home <hdir> --hadoop-mapred-home <dir> --help --metadata-transaction-isolation-level <isolationlevel>
--oracle-escaping-disabled <boolean> …
At minimum, you must specify --connect, --export-dir, and --table
Ejecutamossqoop help export
Tecnologías de procesamiento Big Data
ImportartablasaHDFS
sqoop export--connect--username--password--table--export-dir
sqoop export (generic args) (import args)
Tecnologías de procesamiento Big Data
¿EsSQOOPunaherramientaválidaparatuaplicación?
Transportardatos
DesdeunRDBMS
Almacenarlosenuncluster deHadoop
NECESITAS…