Streaming map reduce


Published on

Atlanta HUG

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Streaming map reduce

  1. 1. Making sense of streaming Big Data Flume – HBase<br />Real-Time Big Data Analytics with SLA<br />-Dani Abel Rayan<br />
  2. 2. Who am I ?<br />Interned with Cloudera.<br />Flume Contributor.<br />HBaseUser.<br />Work with KarstenSchwan @ GaTech<br />Joining as “Big Data Engineer” in a lead role to manage exponential growing data for makers of League of Legends (Multiplayer Online Battle Arena)- recently received 400M <br />
  3. 3. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.<br />
  4. 4. Why near Real-Time?<br />Activity stream data is a normal part of any website for reporting on usage of the site. <br />Activity data is things like page views, information about what content was shown, searches, etc. <br />This kind of thing is usually handled by logging the activity out to some kind of file and then periodically aggregating these files for analysis. <br />In recent years, however, activity data has become a critical part of the production features of websites, and a slightly more sophisticated set of infrastructure is needed. <br />
  5. 5. The Big Picture<br />Why you want to build this ? - Customer retargeting <br />
  6. 6. The Big Picture<br />Content serving by measuring current audience interests. Product Patterns – Twitter Streams<br />S4 is being used for applications such as personalization, user feedback, malicious traffic detection, and real-time search<br />Location based streams – find out people matching specific threshold almost near real-time - RealTime Shopping/Restaurants discount<br />So many possibilities!<br />
  7. 7. Million Impressions in a sec …<br />100 nodes (soon to be 500) in CERCS<br />Each one can generate 10,000 impressions in one second.<br />Specific products are given “a known” <br /> impression rates and others are pseudo random<br /> The challenging task is to ensure, that we can bucket the Product impression in proper ColFamilies within a SLA of few seconds.<br />
  8. 8. Whats the storage ?<br />HBase<br />Currently used for real-time analytics in companies like Facebook (also FB messaging), Yahoo!, Twitter<br />The high-throughput stream of immutable activity data represents a real computational challenge as the volume may easily be 10x or 100x larger than the next largest data source on a site. <br />Do we really need to store everything ?<br />Nope! HBase has TTL for ColFamilies<br />Wait! What are “Column Families” ?<br />
  9. 9. HBase Data Model<br />
  10. 10. HBase Data Model <br />
  11. 11. HBase TTL<br />DESCRIPTION ENABLED<br /> {NAME => 'test', <br />FAMILIES => <br />[{NAME => 'host', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}, <br />{NAME => ' info', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'fal se', BLOCKCACHE => 'true'}, <br />{NAME => 'log', BLOOMFILTER => 'NONE', REPLICATION _SCOPE => '0', VERSIONS => '3', COMPRESSION => 'NONE', TTL => '2147483647', <br /> BL OCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}, <br />{NAME => 'pro duct', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '10', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]}<br />
  12. 12.
  13. 13. HBase Architecture<br />Why NoSQL ? Hbase ?<br />Horizontal scalability <br />Commodity Hardware<br />Hadoop based<br />Only one index possibile– RowKey<br />Very high write load -> 20 billion events per day (200,000 events per second) with a lag of less than 30 seconds. (at Facebook)<br />
  14. 14. Flume<br />Flume is a distributed, reliable, and available service for efficiently moving large amounts of data soon after the data is produced. <br />The primary use case for Flume is as a logging system that gathers a set of log files on every machine in a cluster and aggregates them to a centralized persistent store such as the Hadoop Distributed File System (HDFS).<br />The system was designed with these four key goals in mind:<br />Reliability <br />Scalability <br />Manageability <br />Extensibility <br />
  15. 15. Where it is used ?<br />Mozilla<br />Shopzilla<br />AOL<br />Simple GEO<br />Path<br />….<br />
  16. 16. Flume Architecture <br />
  17. 17. Flume Data Model<br />Flume internally converts every external source of data into a stream of events. <br />Events are Flume’s unit of data and are a simple and flexible representation. An event is composed of a body and metadata. <br />The event body is a string of bytes representing the content of an event. For example, a line in a log file is represented as an event whose body was the actual byte representation of that line. <br />The event metadata is a table of key / value pairs that capture some detail about the event, such as the time it was created or the name of the machine on which it originated. <br />This table can be appended as an event travels along a Flume flow, and the table can be read to control the operation of individual components of that flow. For example, the machine name attached to an event can be used to control the output path where the event is written at the end of the flow.<br />An event’s body can be up to 32KB long - although this limit can be controlled via a system property, it is recommended that it is not changed in order to preserve performance.<br />
  18. 18. Flume – HBase connector<br />This is challenging since we need to interface single dimensional key-value pairs into multi-dimensional key-value pair<br />Many possible approaches:<br />1. "usage: hbase("table", "rowkey", " + ""cf1"," + " "c1", "val1"[,"cf2", "c2", "val2", ....]{, " + KW_BUFFER_SIZE + "=int, " + KW_USE_WAL + "=true|false})";<br />2. usage: attr2hbase("table" [,"sysFamily"[, "writeBody"[,"attrPrefix"[,"writeBufferSize"[,"writeToWal"]]]]])";<br /><br />
  19. 19. The Story so far … for a demo<br />Deployed Flume Agent Nodes in ~ 100 machines<br />Agents monitor a “specific” log directory in all the machines.<br />Any logfile matching the *.hb” suffix will be continuously tailed.<br />Deployed Flume Collector Nodes in 5 machines<br />One HBase – psuedo distributed<br />
  20. 20.
  21. 21. Demo<br />Single Event<br /> - Choose a Machine 7,9,10,11,12<br /> - Choose a VM 2,3, ….20<br />1000’s of Event<br /> - Lets do it again on multiple machines<br />Failover chain Demo<br />Inactive Demo<br />
  22. 22. Evaluation<br />Flume is an awesome product but it isn’t perfect and there are instances wherein certain flows though they appear “ACTIVE” aren’t spewing out any data and sometimes are inactive or work slower because of long queues.<br />No SLA guarantees<br />So are the other products like S4 from Yahoo! And Kafka from LinkedIN<br />
  23. 23. Monalytics<br />
  24. 24. SLA<br />Monalytics - combined monitoring and analysis systems used for managing large-scale data center systems.<br />Due to the scale and complexity on commodity software/hardware in data centers, the performance problems in the streaming MapReduce system are inevitable. <br />Solving those problems is extremely hard and much more stringent, if you need to meet SLA: “We will bucket the impressions in less than 2sec, no matter what”<br />
  25. 25. So many moving parts<br />Still need to be Adaptable<br />Needs to be configurable with new stores<br />End to End Monitoring of SLA<br />Reliability<br />Garbage Collection Pauses<br />Good use case for Monalytics<br />New technologies are really cool to implement, but once you past the initial honeymoon phase, complexities start surfacing up and one either enters the “cul-de-sac” mode to fall-back on the more traditional methods.<br />
  26. 26. Demo<br />MonalyticsLatency<br />Start – Stop 100 nodes<br />
  27. 27. Similar systems to Flume<br />S4 from Yahoo!<br />Kafka from LinkedIN<br />FlumeBase – an extension to support SQL like constructs operating on Data Streams – another startup<br />
  28. 28. Thanks !<br /><br />Questions ?<br />