HIVE: Data Warehousing & Analytics on Hadoop
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

HIVE: Data Warehousing & Analytics on Hadoop

on

  • 84,359 views

 

Statistics

Views

Total Views
84,359
Views on SlideShare
63,608
Embed Views
20,751

Actions

Likes
100
Downloads
2,820
Comments
1

48 Embeds 20,751

http://www.hadoopwizard.com 7727
http://www.bigdata-madesimple.com 6167
http://blog.inovia-conseil.fr 3601
http://changyy.pixnet.net 1746
http://www.stat-project.com 627
http://www.slideshare.net 299
http://www.bigdatanosql.com 201
http://www.scoop.it 133
http://www.linkedin.com 32
http://bigdatacrunching.blogspot.in 23
http://www.aellament.com 20
http://www.decisionstats.com 20
http://bigdatacrunching.blogspot.com 19
http://webcache.googleusercontent.com 19
http://paper.li 17
http://axonflux.com 10
http://blog.iband.kr 9
https://www.linkedin.com 8
http://www.sozialpapier.com 7
http://hadoopmak.blogspot.in 6
http://bigdatacrunching.blogspot.fr 6
http://plus.url.google.com 6
http://translate.googleusercontent.com 5
http://bigdatacrunching.blogspot.co.uk 5
http://sozialpapier.com 5
https://intra.office.drecom.jp 3
http://hadoopmak.blogspot.com 3
http://www.china-qinyi.com 2
http://192.168.10.98 2
http://www.google.com 2
https://www.google.com 2
http://static.slideshare.net 2
http://cafe.naver.com 2
http://bigdatacrunching.blogspot.co.il 1
http://news.google.com 1
http://hadoopmak.blogspot.fr 1
http://www.colmar.rbmh.net 1
http://gofficeplus.lgcns.com 1
http://feedly.com 1
http://203.208.37.132 1
http://203.208.39.132 1
https://www.google.com.tw 1
http://bigdatacrunching.blogspot.de 1
http://bigdatacrunching.blogspot.it 1
http://bigdatacrunching.blogspot.se 1
http://hadoopmak.blogspot.se 1
http://hadoopmak.blogspot.co.uk 1
http://bigdatacrunching.blogspot.com.br 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • STYLE GUIDELINES The master cannot be changed, if you are going to place another logo on any slide, please place it in the lower right corner. Title sizes may not be tampered with. If your title is too long please shorten it. Please do not center the title and subtitle, everything is made to align with the Facebook logo above them. Always remember to use the correct slide type for what you’re using it for. If you’re looking to use half a slide with bullet points and the other half with a picture, pick the correct slide type.

HIVE: Data Warehousing & Analytics on Hadoop Presentation Transcript

  • 1. HIVE Data Warehousing & Analytics on Hadoop Facebook Data Team
  • 2. Why Another Data Warehousing System?
    • Problem: Data, data and more data
      • 200GB per day in March 2008
      • 2+TB(compressed) raw data per day today
    • The Hadoop Experiment
      • Much superior to availability and scalability of commercial DBs
      • Efficiency not that great, but throw more hardware
      • Partial Availability/resilience/scale more important than ACID
    • Problem: Programmability and Metadata
      • Map-reduce hard to program (users know sql/bash/python)
      • Need to publish data in well known schemas
    • Solution: HIVE
  • 3. What is HIVE?
    • A system for querying and managing structured data built on top of Hadoop
      • Uses Map-Reduce for execution
      • HDFS for storage – but any system that implements Hadoop FS API
    • Key Building Principles:
      • Structured data with rich data types (structs, lists and maps)
      • Directly query data from different formats (text/binary) and file formats (Flat/Sequence)
      • SQL as a familiar programming tool and for standard analytics
      • Allow embedded scripts for extensibility and for non standard applications
      • Rich MetaData to allow data discovery and for optimization
  • 4. Data Warehousing at Facebook Today Web Servers Scribe Servers Filers Hive on Hadoop Cluster Oracle RAC Federated MySQL
  • 5. Hive/Hadoop Usage @ Facebook
    • Types of Applications:
      • Summarization
        • Eg: Daily/Weekly aggregations of impression/click counts
        • Complex measures of user engagement
      • Ad hoc Analysis
        • Eg: how many group admins broken down by state/country
      • Data Mining (Assembling training data)
        • Eg: User Engagement as a function of user attributes
      • Spam Detection
        • Anomalous patterns in UGC
        • Application api usage patterns
      • Ad Optimization
      • Too many to count ..
  • 6. Hadoop Usage @ Facebook
    • Data statistics:
      • Total Data: 180TB (mostly compressed)
      • Net Data added/day: 2+TB (compressed)
        • 6TB of uncompressed source logs
        • 4TB of uncompressed dimension data reloaded daily
    • Usage statistics:
      • 3200 jobs/day with 800K tasks(map-reduce tasks)/day
      • 55TB of compressed data scanned daily
      • 15TB of compressed output data written to hdfs
      • 80 MM compute minutes/day
  • 7. HIVE: Components HDFS Hive CLI DDL Queries Browsing Map Reduce MetaStore Thrift API SerDe Thrift Jute JSON.. Execution Hive QL Parser Planner Mgmt. Web UI
  • 8. Data Model Logical Partitioning Hash Partitioning Schema Library clicks HDFS MetaStore / hive/clicks /hive/clicks/ds=2008-03-25 /hive/clicks/ds=2008-03-25/0 … Tables #Buckets=32 Bucketing Info Partitioning Cols
  • 9. Dealing with Structured Data
    • Type system
      • Primitive types
      • Recursively build up using Composition/Maps/Lists
    • ObjectInspector interface for user-defined types
      • To recursively list schema
      • To recursively access fields within a row object
    • Generic (De)Serialization Interface (SerDe)
    • Serialization families implement interface
      • Thrift DDL based SerDe
      • Delimited text based SerDe
      • You can write your own SerDe (XML, JSON …)
  • 10. MetaStore
    • Stores Table/Partition properties:
      • Table schema and SerDe library
      • Table Location on HDFS
      • Logical Partitioning keys and types
      • Partition level metadata
      • Other information
    • Thrift API
      • Current clients in Php (Web Interface), Python interface to Hive, Java (Query Engine and CLI)
    • Metadata stored in any SQL backend
    • Future
      • Statistics
      • Schema Evolution
  • 11. Hive Query Language
    • Basic SQL
      • From clause subquery
      • ANSI JOIN (equi-join only)
      • Multi-table Insert
      • Multi group-by
      • Sampling
      • Objects traversal
    • Extensibility
      • Pluggable Map-reduce scripts using TRANSFORM
  • 12. Running Custom Map/Reduce Scripts
        • FROM (
          • FROM pv_users
          • SELECT TRANSFORM(pv_users.userid, pv_users.date) USING 'map_script'
          • AS(dt, uid)
          • CLUSTER BY(dt)) map
        • INSERT INTO TABLE pv_users_reduced
          • SELECT TRANSFORM(map.dt, map.uid) USING 'reduce_script' AS (date, count);
  • 13. (Simplified) Map Reduce Review Machine 2 Machine 1 <k1, v1> <k2, v2> <k3, v3> <k4, v4> <k5, v5> <k6, v6> <nk1, nv1> <nk2, nv2> <nk3, nv3> <nk2, nv4> <nk2, nv5> <nk1, nv6> Local Map <nk2, nv4> <nk2, nv5> <nk2, nv2> <nk1, nv1> <nk3, nv3> <nk1, nv6> Global Shuffle <nk1, nv1> <nk1, nv6> <nk3, nv3> <nk2, nv4> <nk2, nv5> <nk2, nv2> Local Sort <nk2, 3> <nk1, 2> <nk3, 1> Local Reduce
  • 14. Hive QL – Join
    • SQL:
      • INSERT INTO TABLE pv_users
      • SELECT pv.pageid, u.age
      • FROM page_view pv JOIN user u ON (pv.userid = u.userid);
    X = page_view user pv_users pageid userid time 1 111 9:08:01 2 111 9:08:13 1 222 9:08:14 userid age gender 111 25 female 222 32 male pageid age 1 25 2 25 1 32
  • 15. Hive QL – Join in Map Reduce page_view user pv_users Map Shuffle Sort Reduce key value 111 < 1, 1> 111 < 1, 2> 222 < 1, 1> pageid userid time 1 111 9:08:01 2 111 9:08:13 1 222 9:08:14 userid age gender 111 25 female 222 32 male key value 111 < 2, 25> 222 < 2, 32> key value 111 < 1, 1> 111 < 1, 2> 111 < 2, 25> key value 222 < 1, 1> 222 < 2, 32> pageid age 1 25 2 25 pageid age 1 32
  • 16. Joins
    • Outer Joins
    • INSERT INTO TABLE pv_users
    • SELECT pv.*, u.gender, u.age
    • FROM page_view pv FULL OUTER JOIN user u ON (pv.userid = u.id)
    • WHERE pv.date = 2008-03-03;
  • 17. Join To Map Reduce
    • Only Equality Joins with conjunctions supported
    • Future
      • Pruning of values send from map to reduce on the basis of projections
      • Make Cartesian product more memory efficient
      • Map side joins
        • Hash Joins if one of the tables is very small
        • Exploit pre-sorted data by doing map-side merge join
  • 18. Hive Optimizations – Merge Sequential Map Reduce Jobs
    • SQL:
      • FROM (a join b on a.key = b.key) join c on a.key = c.key SELECT …
    A Map Reduce B C AB Map Reduce ABC key av bv 1 111 222 key av 1 111 key bv 1 222 key cv 1 333 key av bv cv 1 111 222 333
  • 19. Hive QL – Group By
          • SELECT pageid, age, count(1)
          • FROM pv_users
          • GROUP BY pageid, age;
    pv_users pageid age 1 25 2 25 1 32 2 25 pageid age count 1 25 1 2 25 2 1 32 1
  • 20. Hive QL – Group By in Map Reduce pv_users Map Shuffle Sort Reduce pageid age 1 25 2 25 pageid age count 1 25 1 1 32 1 pageid age 1 32 2 25 key value <1,25> 1 <2,25> 1 key value <1,32> 1 <2,25> 1 key value <1,25> 1 <1,32> 1 key value <2,25> 1 <2,25> 1 pageid age count 2 25 2
  • 21. Hive QL – Group By with Distinct
      • SELECT pageid, COUNT(DISTINCT userid)
      • FROM page_view GROUP BY pageid
    page_view pageid userid time 1 111 9:08:01 2 111 9:08:13 1 222 9:08:14 2 111 9:08:20 pageid count_distinct_userid 1 2 2 1
  • 22. Hive QL – Group By with Distinct in Map Reduce page_view Shuffle and Sort Reduce Map Reduce pageid count 1 1 2 1 pageid count 1 1 pageid userid time 1 111 9:08:01 2 111 9:08:13 pageid userid time 1 222 9:08:14 2 111 9:08:20 key v <1,111> <2,111> <2,111> key v <1,222> pageid count 1 2 pageid count 2 1
  • 23. Group by Future optimizations
    • Map side partial aggregations
      • Hash Based aggregates
      • Exploit pre-sorted data for distinct counts
    • Partial aggregations in Combiner
    • Be smarter about how to avoid multiple stage
    • Exploit table/column statistics for deciding strategy
  • 24. Inserts into Files, Tables and Local Files
        • FROM pv_users
        • INSERT INTO TABLE pv_gender_sum
          • SELECT pv_users.gender, count_distinct(pv_users.userid)
          • GROUP BY(pv_users.gender)
        • INSERT INTO DIRECTORY ‘/user/facebook/tmp/pv_age_sum.dir’
          • SELECT pv_users.age, count_distinct(pv_users.userid)
          • GROUP BY(pv_users.age)
        • INSERT INTO LOCAL DIRECTORY ‘/home/me/pv_age_sum.dir’
        • FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY 13
          • SELECT pv_users.age, count_distinct(pv_users.userid)
          • GROUP BY(pv_users.age);
  • 25. Future Work
    • Cost-based optimization
    • Multiple interfaces (JDBC…)
    • Performance Comparisons with similar work (PIG)
    • SQL Compliance (order by, nested queries…)
    • Integration with BI tools
    • Data Compression
      • Columnar storage schemes
      • Exploit lazy/functional Hive field retrieval interfaces
    • Better data locality
      • Co-locate hash partitions on same rack
      • Exploit high intra-rack bandwidth for merge joins
  • 26. Hive Performance
    • full table aggregate (not grouped)
    • Input data size: 1,407,867,660 (32 files)
    • count in mapper and 2 map-reduce jobs for sum
      • time taken 30 seconds
      • Test cluster: 10 nodes
    • from (
    • from test t select transform (t.userid) as (cnt) using myCount'
    • ) mout
    • select sum(mout.cnt);
  • 27. Hadoop Challenges @ Facebook
    • QOS/Isolation:
      • Big jobs can hog the cluster
      • JobTracker memory as limited resource
      • Limit memory impact of runaway tasks
      • Fair Scheduler (Matei)
    • Protection
      • What if a software bug corrupts the NameNode transaction log/image?
      • HDFS SnapShots (Dhruba)
    • Data Archival
      • Not all data is hot and needs colocation with Compute
      • HDFS Symlinks (Dhruba) Data Archival
    • Performance
      • Really hard to understand what bottlenecks are
  • 28. Conclusion
    • Available as a contrib project in hadoop
      • http://svn.apache.org/repos/asf/hadoop/core/
      • Checkout src/contrib/hive from trunk (works against 0.19 onwards)
    • Latest distributions (including for hadoop-0.17) at:
    • http://mirror.facebook.com/facebook/hive/
    • People:
      • Suresh Anthony
      • Zheng Shao
      • Prasad Chakka
      • Pete Wyckoff
      • Namit Jain
      • Raghu Murthy
      • Joydeep Sen Sarma
      • Ashish Thusoo