13
User Group Nantes MongoDB et son connecteur pour Hadoop Bruno Bonnin - @_bruno_b_

MUG Nantes - MongoDB et son connecteur pour hadoop

Embed Size (px)

Citation preview

Page 1: MUG Nantes - MongoDB et son connecteur pour hadoop

User Group Nantes

MongoDB et son connecteur pour Hadoop

Bruno Bonnin - @_bruno_b_

Page 2: MUG Nantes - MongoDB et son connecteur pour hadoop

AGENDA

• Rappels sur Hadoop et son éco-système• Un connecteur, pour quoi faire ?• Démo avec MongoDB, Hive, Spark (version Java en

300 lignes ou version Python en 8 lignes)

Nantes User Group

Page 3: MUG Nantes - MongoDB et son connecteur pour hadoop

HADOOPNantes User Group

Source : http://docs.hortonworks.com/

Page 4: MUG Nantes - MongoDB et son connecteur pour hadoop

HADOOPNantes User Group

Source : http://docs.hortonworks.com/

Page 5: MUG Nantes - MongoDB et son connecteur pour hadoop

CONNECTEUR MONGODB POUR HADOOP

• Pour quoi faire ?• Les entreprises ont des données stockées dans

MongoDB, … et dans Hadoop• Besoin d’intégration• Traiter les données à partir de plusieurs

sources (en éliminant des étapes d’import/export)

• …

Nantes User Group

Page 6: MUG Nantes - MongoDB et son connecteur pour hadoop

QUELQUES CAS D’UTILISATIONNantes User Group

Pour des analyses complexes faites dans Hadoop (avec des jobs Map/Reduce)

Traitement de données de plusieurs sources faites dans Hadoop (repo central de données)

Hadoop extrait les données de données de diverses sources, les traite et pousse les résultats dans MongoDB

Page 7: MUG Nantes - MongoDB et son connecteur pour hadoop

CONNECTEUR MONGODB POUR HADOOP

• Support pour :• Hive : langage de requêtes SQL-like• Pig : langage de scripts pour définir des

workflows de traitement• Spark• Flume• …

Nantes User Group

Page 8: MUG Nantes - MongoDB et son connecteur pour hadoop

DEMO : HIVENantes User Group

Valeur actions par minute

Calcul des min/max dans Hadoop (M/R) +Jointure avec données dans Hadoop

1

3

2

Sociétés

Valeur min/max actions par jour

CREATE EXTERNAL TABLESELECT MIN (), MAX()

INSERT

collectionTable Hive

Table Hive

Page 9: MUG Nantes - MongoDB et son connecteur pour hadoop

DEMO : HIVE

ADD JAR mongo-java-driver-3.0.3.jar;ADD JAR mongo-hadoop-core-1.4.0.jar;ADD JAR mongo-hadoop-hive-1.4.0.jar;

CREATE EXTERNAL TABLE stock_prices ( id STRUCT<oid:STRING, bsontype:INT>, symbol STRING, timestamp STRING, volume INT )STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'

WITH SERDEPROPERTIES ( 'mongo.columns.mapping'='{"id":"_id", "symbol":"Symbol", "timestamp":"Timestamp", "volume":"Volume"}' )

TBLPROPERTIES( 'mongo.uri'='mongodb://localhost:27017/marketdata.stock_prices' );

Nantes User Group

Page 10: MUG Nantes - MongoDB et son connecteur pour hadoop

DEMO : SPARKNantes User Group

Traitement des données par Spark (groupBy, aggregateByKey)

1

3’

2

Résultat #2 : Stockage dans des

fichiersSource :

Valeur actions par minute

collection HDFS

Résultat #1 : Valeur min/max actions par jour

collection

3 SAVEINSERT

FIND

Page 11: MUG Nantes - MongoDB et son connecteur pour hadoop

DEMO : HIVE

from pyspark import SparkContext

sc = SparkContext("local", "Test MongoDB Connector")

# Config MongoDB inputConfig = { "mongo.input.uri" : "mongodb://localhost:27017/marketdata.stock_prices" }

# Config pour RDD qui va lire les data dans MongoDB inputFormatClassName = "com.mongodb.hadoop.MongoInputFormat" keyClassName = "java.lang.Object" valueClassName = "org.bson.BSONObject"

stockPricesRDD = sc.newAPIHadoopRDD( inputFormatClassName, keyClassName, valueClassName, None, None, inputConfig )

# Les traitements... prices = stockPricesRDD.values()

# ... groupby sur (symbol, day) groupByRDD = prices.groupBy(lambda doc: (doc["Symbol"], doc["Day"]))

Nantes User Group

Page 12: MUG Nantes - MongoDB et son connecteur pour hadoop

LIENS

• Plus d’infos:– http://docs.mongodb.org/ecosystem/tools/hadoop/ – https://github.com/mongodb/mongo-hadoop

• Code:– Démo :

• https://github.com/bbonnin/MUG-Nantes-Demo-Hadoop – Complément :

• https://github.com/bbonnin/hadoop-mongodb

Nantes User Group

Page 13: MUG Nantes - MongoDB et son connecteur pour hadoop

MERCI !Nantes User Group