Stats web avec Hive chez Scoop.it

930 views

Published on

Présentation de l'architecture de calcul de statistique web chez Scoop.it, basé sur Hadoop+Hive, présentation faite lors de la session du 13 Décembre 2012 du Jug Toulouse

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
930
On SlideShare
0
From Embeds
0
Number of Embeds
50
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Stats web avec Hive chez Scoop.it

  1. 1. Stats Web avec Hive Cas pratique avec
  2. 2. Il était une fois…Et, et, hadoop est arrivé…
  3. 3. Des stats
  4. 4. Des stats avancées
  5. 5. Encore des stats
  6. 6. Des évènements• PageViewEvent• PostCurationEvent• SearchEvent• CommentEvent• ShareEvent• TopicDeletionEvent• UserDeletionEvent• …
  7. 7. Première version• Compteur de vues : mysql• Compteur de visiteurs : mysql• Stockages des évènements : mysql• Stats par source : Google Analytics• Stats par pays : Google Analytics• Analyse des évènements : SQL
  8. 8. Rançon du succès• Taux d’écriture dans mysql – Quick fix:• Espace de stockage• Google Analytics API lente et approximative
  9. 9. Les besoins• Compteur de vues : calcul temps réel• Compteur de visiteurs : calcul 1 fois par jour• Stockages des évènements : fichiers « à plat »• Stats par source : calcul 1 fois par jour• Stats par pays : calcul 1 fois par jour• Analyse des évènements : à la demande et régulièrement
  10. 10. Solution• Compteur de vues : Cassandra• Compteur de visiteurs : Hive• Stockages des évènements : ad hoc HDFS• Stats par source : Hive• Stats par pays : Hive• Analyse des évènements : Hive
  11. 11. Cassandra vs Hbase• Hbase: – « open-source, distributed, versioned, column- oriented store modeled after Googles Bigtable » – « Bigtable-like capabilities on top of Hadoop and HDFS »• Cassandra: – « a BigTable data model running on an Amazon Dynamo-like infrastructure »
  12. 12. Cassandra vs Hbase• Pro Hbase – Cluster Hadoop déployé – Hive supporte Hbase• Pro Cassandra – Cluster « temps réel » vs cluster « asynchrone » – Pas de SPOF (cf Hadoop Namenode) – Opérationnellement simple
  13. 13. Hive vs Pig• Pig – « high-level language for expressing data analysis programs » – « compiler that produces sequences of Map- Reduce programs »• Hive – « data warehouse system for Hadoop » – « query the data using a SQL-like language »
  14. 14. Hive vs Pig• Pro Pig: – Plus près de l’algorithme Map-Reduce• Pro Hive – SQL-like
  15. 15. ad hoc HDFS vs Flume• Flume – « distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data »
  16. 16. ad hoc HDFS vs Flume• Pro Flume – Fault tolerent – Streaming – Scalable – Agrégation• Anti Flume – Encore une techno à déployer – Encore une techno à apprendre – Volume de données encore « faible »
  17. 17. Architecture de Hive Source: http://www.javabloger.com/article/apache-hive-jdbc-mapreduce.html
  18. 18. • « workflow scheduler system to manage Apache Hadoop jobs »• Support de HiveMais:• XML comme si il en pleuvait• Projet en beta en 2011• Page d’analytics « privée » ?
  19. 19. Scoop-mapred• Spring MVC webapp• Embedded Hive• Quartz Scheduler
  20. 20. Architecture Cassandra Cassandra Cassandra view++ Scoop-mapred getViews getVisitors getTopicSourcesscoop TaskTracker Launch Jobs scoop web TaskTracker frontend TaskTracker Launch maps & reduces JobTracker tasks HDFS HDFS HDFS
  21. 21. Calculs Map/Reduce Via HiveQL
  22. 22. Hive : CREATE TABLECREATE TABLE httpdlogs (ip STRING, domain STRING, user STRING, date STRING, method STRING, request STRING, protocol STRING, status INT, bodySize INT, referer STRING, useragent STRING);LOAD DATA INPATH /var/log/site_access.log INTO TABLEhttpdlogs;SELECT status, COUNT(*) FROM httpdlogs WHERE referer = www.google.com GROUP BY status;
  23. 23. Hive : INSERT INTO TABLECREATE TABLE google_httpdlogs (ip STRING, user STRING, date STRING);INSERT INTO TABLE google_httpdlogs SELECT ip, date FROM httpdlogs WHERE referer LIKE%google%;SELECT * FROM google_httpdlogs WHERE date > 2012-01-15;
  24. 24. Hive : CREATE EXTERNAL TABLECREATE EXTERNAL TABLE PageViewEvent (date STRING, uri STRING, querystring STRING, useragent STRING, referer STRING, ip STRING, …) PARTITIONED BY (day STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY t LINES TERMINATED BY n LOCATION /events/PageViewEvent;ALTER TABLE PageViewEvent ADD PARTITION (day=20121205)LOCATION /events/PageViewEvent/20121205;SELECT COUNT(*) FROM PageViewEvent WHERE day = 20121205 AND date > 2012-12-05 12:00:00 AND date < 2012-12-05 13:00:00
  25. 25. Hive : CREATE ‘Cassandra’ TABLECREATE EXTERNAL TABLE CassandraTopicVisitors (themeid BIGINT, day STRING, visitors INT) STORED BY org...cassandra.hadoop.hive.CassandraStorageHandler WITH SERDEPROPERTIES (cassandra.columns.mapping=:key,:column,:value, cassandra.cf.name=TopicVistors, cassandra.host=cassandra-1, cassandra.port=9160) TBLPROPERTIES (cassandra.ks.name’=topic);INSERT INTO TABLE CassandraTopicVisitors SELECT themeid, 2012-12-05, COUNT(DISTINCT userid) FROM PageViewEvent WHERE day = 20121205 GROUP BY themeid;
  26. 26. CassandraStorageHandler• Patches: – https://issues.apache.org/jira/browse/CASSANDRA-913 – https://issues.apache.org/jira/browse/HIVE-1434• En écriture : nickel• En lecture : à éviter / à tester
  27. 27. Demo
  28. 28. BilanAprès 1 an d’utilisation
  29. 29. Les machines• 4 machines (Intel Xeon 1.87GHz, 8G RAM)
  30. 30. HDFS et les petits fichiers$ sudo hadoop-fuse-dfs dfs://namenode:8020 ro hdfs$ du -sh hdfs/events78G hdfs/events$ ls -l hdfs/events/GrabbedPostEvent/20121201/grabbing.10.tsv.gz-rw-r--r-- 1 99 99 2,6M 2012-12-01 07:04 hdfs/events/GrabbedPo[...]$ ls -l hdfs/events/PageViewEvent/20121201/web-3.6.tsv.gz-rw-r--r-- 1 99 99 960K 2012-12-01 04:47 hdfs/events/PageViewE[...]$ du -sh hdfs/apache_logs360G hdfs/apache_logs
  31. 31. Big Data ?• Hadoop surdimensionné• Architecture non triviale• Déploiement non trivial ~• Scallable• Hive rocks : SQL => Map/reduce• Datamining / Recommendation

×