SlideShare a Scribd company logo
Hadoop and Hive Development at
   Facebook

Dhruba Borthakur Zheng Shao
{dhruba, zshao}@facebook.com
Presented at Hadoop World, New York
October 2, 2009
Hadoop @ Facebook
Who generates this data?

  Lots of data is generated on Facebook
    –  300+ million active users
    –  30 million users update their statuses at least once each
       day
    –  More than 1 billion photos uploaded each month
    –  More than 10 million videos uploaded each month
    –  More than 1 billion pieces of content (web links, news
       stories, blog posts, notes, photos, etc.) shared each
       week
Data Usage

  Statistics per day:
    –  4 TB of compressed new data added per day
    –  135TB of compressed data scanned per day
    –  7500+ Hive jobs on production cluster per day
    –  80K compute hours per day
  Barrier to entry is significantly reduced:
    –  New engineers go though a Hive training session
    –  ~200 people/month run jobs on Hadoop/Hive
    –  Analysts (non-engineers) use Hadoop through Hive
Where is this data stored?

  Hadoop/Hive Warehouse
  –  4800 cores, 5.5 PetaBytes
  –  12 TB per node
  –  Two level network topology
       1 Gbit/sec from node to rack switch
       4 Gbit/sec to top level rack switch
Data Flow into Hadoop Cloud
                                                     Network

                                                     Storage

                                                     and

                                                     Servers

    Web
Servers

                        Scribe
MidTier





     Oracle
RAC
   Hadoop
Hive
Warehouse
   MySQL

Hadoop Scribe: Avoid Costly Filers
                                                          Scribe
Writers


                                                                      RealBme

                                                                      Hadoop

                                                                      Cluster

    Web
Servers
               Scribe
MidTier





     Oracle
RAC
         Hadoop
Hive
Warehouse
                    MySQL

    http://hadoopblog.blogspot.com/2009/06/hdfs-scribe-integration.html
HDFS Raid

  Start the same: triplicate
   every data block
                                                 A               B                C
  Background encoding
   –  Combine third replica of                   A               B                C
      blocks from a single file to
      create parity block                        A               B                C
   –  Remove third replica
   –  Apache JIRA HDFS-503                                     A+B+C
  DiskReduce from CMU
   –  Garth Gibson research                     A file with three blocks A, B and C

   http://hadoopblog.blogspot.com/2009/08/hdfs-and-erasure-codes-hdfs-raid.html
Archival: Move old data to cheap storage

Hadoop
Warehouse


                                                 NFS




               Hadoop
Archive
Node
                     Cheap
NAS




                                 Hadoop
Archival
Cluster



                    hEp://issues.apache.org/jira/browse/HDFS‐220

 Hive
Query

Dynamic-size MapReduce Clusters

  Why multiple compute clouds in Facebook?
    –  Users unaware of resources needed by job
    –  Absence of flexible Job Isolation techniques
    –  Provide adequate SLAs for jobs
  Dynamically move nodes between clusters
    –  Based on load and configured policies
    –  Apache Jira MAPREDUCE-1044
Resource Aware Scheduling (Fair Share
Scheduler)
  We use the Hadoop Fair Share Scheduler
    –  Scheduler unaware of memory needed by job
  Memory and CPU aware scheduling
    –  RealTime gathering of CPU and memory usage
    –  Scheduler analyzes memory consumption in realtime
    –  Scheduler fair-shares memory usage among jobs
    –  Slot-less scheduling of tasks (in future)
    –  Apache Jira MAPREDUCE-961
Hive – Data Warehouse

  Efficient SQL to Map-Reduce Compiler

  Mar 2008: Started at Facebook
  May 2009: Release 0.3.0 available
  Now: Preparing for release 0.4.0


  Countable for 95%+ of Hadoop jobs @ Facebook
  Used by ~200 engineers and business analysts at Facebook
   every month
Hive Architecture

  Web UI + Hive CLI + JDBC/                Map Reduce       HDFS
            ODBC                       User-defined
     Browse, Query, DDL              Map-reduce Scripts

  MetaStore               Hive QL              UDF/UDAF
                                                 substr
                     Parser                       sum
  Thrift API                                    average
                    Planner    Execution
                                                          FileFormats
                                                 SerDe
                   Optimizer                                TextFile
                                                  CSV     SequenceFile
                                                 Thrift      RCFile
                                                 Regex
Hive DDL

  DDL
   –  Complex columns
   –  Partitions
   –  Buckets
  Example
   –  CREATE TABLE sales (
        id INT,
        items ARRAY<STRUCT<id:INT, name:STRING>>,
        extra MAP<STRING, STRING>
      ) PARTITIONED BY (ds STRING)
      CLUSTERED BY (id) INTO 32 BUCKETS;
Hive Query Language

  SQL
   –    Where
   –    Group By
   –    Equi-Join
   –    Sub query in from clause
  Example
   –  SELECT r.*, s.*
      FROM r JOIN (
        SELECT key, count(1) as count
        FROM s
        GROUP BY key) s
      ON r.key = s.key
      WHERE s.count > 100;
Group By

  4 different plans based on:
  –  Does data have skew?
  –  partial aggregation
  Map-side hash aggregation
  –  In-memory hash table in mapper to do partial
     aggregations
  2-map-reduce aggregation
  –  For distinct queries with skew and large cardinality
Join

  Normal map-reduce Join
  –  Mapper sends all rows with the same key to a single
     reducer
  –  Reducer does the join
  Map-side Join
  –  Mapper loads the whole small table and a portion of big
     table
  –  Mapper does the join
  –  Much faster than map-reduce join
Sampling

  Efficient sampling
   –  Table can be bucketed
   –  Each bucket is a file
   –  Sampling can choose some buckets
  Example
   –  SELECT product_id, sum(price)
      FROM sales TABLESAMPLE (BUCKET 1 OUT OF 32)
      GROUP BY product_id
Multi-table Group-By/Insert

FROM users
INSERT INTO TABLE pv_gender_sum
   SELECT gender, count(DISTINCT userid)
   GROUP BY gender
INSERT INTO
   DIRECTORY '/user/facebook/tmp/pv_age_sum.dir'
   SELECT age, count(DISTINCT userid)
   GROUP BY age
INSERT INTO LOCAL DIRECTORY '/home/me/pv_age_sum.dir'
   SELECT country, gender, count(DISTINCT userid)
   GROUP BY country, gender;
File Formats

  TextFile:
   –  Easy for other applications to write/read
   –  Gzip text files are not splittable
  SequenceFile:
   –  Only hadoop can read it
   –  Support splittable compression
  RCFile: Block-based columnar storage
   –    Use SequenceFile block format
   –    Columnar storage inside a block
   –    25% smaller compressed size
   –    On-par or better query performance depending on the query
SerDe

  Serialization/Deserialization
  Row Format
   –    CSV (LazySimpleSerDe)
   –    Thrift (ThriftSerDe)
   –    Regex (RegexSerDe)
   –    Hive Binary Format (LazyBinarySerDe)
  LazySimpleSerDe and LazyBinarySerDe
   –  Deserialize the field when needed
   –  Reuse objects across different rows
   –  Text and Binary format
UDF/UDAF

  Features:
   –    Use either Java or Hadoop Objects (int, Integer, IntWritable)
   –    Overloading
   –    Variable-length arguments
   –    Partial aggregation for UDAF
  Example UDF:
   –  public class UDFExampleAdd extends UDF {
        public int evaluate(int a, int b) {
          return a + b;
        }
      }
Hive – Performance

  Date      SVN Revision        Major Changes            Query A   Query B   Query C
2/22/2009      746906      Before Lazy Deserialization    83 sec    98 sec   183 sec
2/23/2009      747293         Lazy Deserialization        40 sec    66 sec   185 sec
3/6/2009       751166        Map-side Aggregation         22 sec    67 sec   182 sec
4/29/2009      770074             Object Reuse            21 sec    49 sec   130 sec
6/3/2009       781633           Map-side Join *           21 sec    48 sec   132 sec
8/5/2009       801497        Lazy Binary Format *         21 sec    48 sec   132 sec

        QueryA: SELECT count(1) FROM t;
        QueryB: SELECT concat(concat(concat(a,b),c),d) FROM t;
        QueryC: SELECT * FROM t;
        map-side time only (incl. GzipCodec for comp/decompression)
        * These two features need to be tested with other queries.
Hive – Future Works

    Indexes
    Create table as select
    Views / variables
    Explode operator
    In/Exists sub queries
    Leverage sort/bucket information in Join

More Related Content

What's hot (20)

PPTX
IBM Platform Computing Elastic Storage
Patrick Bouillaud
 
PPTX
Red Hat Storage Day Boston - Supermicro Super Storage
Red_Hat_Storage
 
PDF
Red Hat Ceph Storage: Past, Present and Future
Red_Hat_Storage
 
PDF
Achieving Separation of Compute and Storage in a Cloud World
Alluxio, Inc.
 
PPTX
HDFS Erasure Coding in Action
DataWorks Summit/Hadoop Summit
 
PPTX
Best practices for using flash in hyperscale software storage architectures
Eric Carter
 
PDF
Scalable and High available Distributed File System Metadata Service Using gR...
Alluxio, Inc.
 
PDF
Red Hat Storage Day New York - New Reference Architectures
Red_Hat_Storage
 
PDF
How MariaDB is approaching DBaaS
MariaDB plc
 
PDF
Cisco UCS Integrated Infrastructure for Big Data with Cassandra
DataStax Academy
 
PPTX
Red Hat Storage Day Seattle: Why Software-Defined Storage Matters
Red_Hat_Storage
 
PPTX
Ac922 watson 180208 v1
IBM Sverige
 
PPTX
Software-Defined Storage (SDS)
HTS Hosting
 
PDF
Red Hat Storage Day New York - Red Hat Gluster Storage: Historical Tick Data ...
Red_Hat_Storage
 
PPTX
IBM Spectrum Scale Overview november 2015
Doug O'Flaherty
 
PPTX
Red Hat Storage Day Dallas - Why Software-defined Storage Matters
Red_Hat_Storage
 
PPTX
Red Hat Storage Day Dallas - Gluster Storage in Containerized Application
Red_Hat_Storage
 
PPTX
Ibm spectrum scale_backup_n_archive_v03_ash
Ashutosh Mate
 
PDF
Heterogeneous Computing : The Future of Systems
Anand Haridass
 
PPTX
Severalnines Training: MySQL® Cluster - Part IX
Severalnines
 
IBM Platform Computing Elastic Storage
Patrick Bouillaud
 
Red Hat Storage Day Boston - Supermicro Super Storage
Red_Hat_Storage
 
Red Hat Ceph Storage: Past, Present and Future
Red_Hat_Storage
 
Achieving Separation of Compute and Storage in a Cloud World
Alluxio, Inc.
 
HDFS Erasure Coding in Action
DataWorks Summit/Hadoop Summit
 
Best practices for using flash in hyperscale software storage architectures
Eric Carter
 
Scalable and High available Distributed File System Metadata Service Using gR...
Alluxio, Inc.
 
Red Hat Storage Day New York - New Reference Architectures
Red_Hat_Storage
 
How MariaDB is approaching DBaaS
MariaDB plc
 
Cisco UCS Integrated Infrastructure for Big Data with Cassandra
DataStax Academy
 
Red Hat Storage Day Seattle: Why Software-Defined Storage Matters
Red_Hat_Storage
 
Ac922 watson 180208 v1
IBM Sverige
 
Software-Defined Storage (SDS)
HTS Hosting
 
Red Hat Storage Day New York - Red Hat Gluster Storage: Historical Tick Data ...
Red_Hat_Storage
 
IBM Spectrum Scale Overview november 2015
Doug O'Flaherty
 
Red Hat Storage Day Dallas - Why Software-defined Storage Matters
Red_Hat_Storage
 
Red Hat Storage Day Dallas - Gluster Storage in Containerized Application
Red_Hat_Storage
 
Ibm spectrum scale_backup_n_archive_v03_ash
Ashutosh Mate
 
Heterogeneous Computing : The Future of Systems
Anand Haridass
 
Severalnines Training: MySQL® Cluster - Part IX
Severalnines
 

Similar to Hadoop and Hive Development at Facebook (20)

PPT
Hw09 Hadoop Development At Facebook Hive And Hdfs
Cloudera, Inc.
 
PDF
Apache Hadoop 1.1
Sperasoft
 
PPTX
Hadoop_arunam_ppt
jerrin joseph
 
PPT
Nextag talk
Joydeep Sen Sarma
 
PPTX
Presentation sreenu dwh-services
Sreenu Musham
 
PDF
Hoodie - DataEngConf 2017
Vinoth Chandar
 
PPTX
HADOOP
Harinder Kaur
 
PPTX
Hadoop introduction
Chirag Ahuja
 
PDF
hdfs readrmation ghghg bigdats analytics info.pdf
ssuser2d043c
 
PPTX
מיכאל
sqlserver.co.il
 
PPT
Taylor bosc2010
BOSC 2010
 
PPTX
Etu L2 Training - Hadoop 企業應用實作
James Chen
 
PPT
hadoop-spark.ppt
NouhaElhaji1
 
PPT
Hive @ Hadoop day seattle_2010
nzhang
 
PPT
Hadoop MapReduce Fundamentals
Lynn Langit
 
PPT
hadoop_spark_Introduction_Bigdata_intro.ppt
anuroopdv
 
PPT
hadoop-sparktitlsdernsfslfsfnsfsflsnfsfnsfl
sasuke20y4sh
 
PPT
Hadoop training in bangalore-kellytechnologies
appaji intelhunt
 
PPTX
Optimizing Big Data to run in the Public Cloud
Qubole
 
PDF
Startup Case Study: Leveraging the Broad Hadoop Ecosystem to Develop World-Fi...
DataWorks Summit
 
Hw09 Hadoop Development At Facebook Hive And Hdfs
Cloudera, Inc.
 
Apache Hadoop 1.1
Sperasoft
 
Hadoop_arunam_ppt
jerrin joseph
 
Nextag talk
Joydeep Sen Sarma
 
Presentation sreenu dwh-services
Sreenu Musham
 
Hoodie - DataEngConf 2017
Vinoth Chandar
 
Hadoop introduction
Chirag Ahuja
 
hdfs readrmation ghghg bigdats analytics info.pdf
ssuser2d043c
 
מיכאל
sqlserver.co.il
 
Taylor bosc2010
BOSC 2010
 
Etu L2 Training - Hadoop 企業應用實作
James Chen
 
hadoop-spark.ppt
NouhaElhaji1
 
Hive @ Hadoop day seattle_2010
nzhang
 
Hadoop MapReduce Fundamentals
Lynn Langit
 
hadoop_spark_Introduction_Bigdata_intro.ppt
anuroopdv
 
hadoop-sparktitlsdernsfslfsfnsfsflsnfsfnsfl
sasuke20y4sh
 
Hadoop training in bangalore-kellytechnologies
appaji intelhunt
 
Optimizing Big Data to run in the Public Cloud
Qubole
 
Startup Case Study: Leveraging the Broad Hadoop Ecosystem to Develop World-Fi...
DataWorks Summit
 
Ad

More from elliando dias (20)

PDF
Clojurescript slides
elliando dias
 
PDF
Why you should be excited about ClojureScript
elliando dias
 
PDF
Functional Programming with Immutable Data Structures
elliando dias
 
PPT
Nomenclatura e peças de container
elliando dias
 
PDF
Geometria Projetiva
elliando dias
 
PDF
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
PDF
Javascript Libraries
elliando dias
 
PDF
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
PDF
Ragel talk
elliando dias
 
PDF
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
PDF
Introdução ao Arduino
elliando dias
 
PDF
Minicurso arduino
elliando dias
 
PDF
Incanter Data Sorcery
elliando dias
 
PDF
Rango
elliando dias
 
PDF
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
PDF
The Digital Revolution: Machines that makes
elliando dias
 
PDF
Hadoop + Clojure
elliando dias
 
PDF
Hadoop - Simple. Scalable.
elliando dias
 
PDF
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 
PDF
From Lisp to Clojure/Incanter and RAn Introduction
elliando dias
 
Clojurescript slides
elliando dias
 
Why you should be excited about ClojureScript
elliando dias
 
Functional Programming with Immutable Data Structures
elliando dias
 
Nomenclatura e peças de container
elliando dias
 
Geometria Projetiva
elliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
Javascript Libraries
elliando dias
 
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
Ragel talk
elliando dias
 
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
Introdução ao Arduino
elliando dias
 
Minicurso arduino
elliando dias
 
Incanter Data Sorcery
elliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
The Digital Revolution: Machines that makes
elliando dias
 
Hadoop + Clojure
elliando dias
 
Hadoop - Simple. Scalable.
elliando dias
 
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
elliando dias
 
Ad

Recently uploaded (20)

PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Market Insight : ETH Dominance Returns
CIFDAQ
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 

Hadoop and Hive Development at Facebook

  • 1. Hadoop and Hive Development at Facebook Dhruba Borthakur Zheng Shao {dhruba, zshao}@facebook.com Presented at Hadoop World, New York October 2, 2009
  • 3. Who generates this data?   Lots of data is generated on Facebook –  300+ million active users –  30 million users update their statuses at least once each day –  More than 1 billion photos uploaded each month –  More than 10 million videos uploaded each month –  More than 1 billion pieces of content (web links, news stories, blog posts, notes, photos, etc.) shared each week
  • 4. Data Usage   Statistics per day: –  4 TB of compressed new data added per day –  135TB of compressed data scanned per day –  7500+ Hive jobs on production cluster per day –  80K compute hours per day   Barrier to entry is significantly reduced: –  New engineers go though a Hive training session –  ~200 people/month run jobs on Hadoop/Hive –  Analysts (non-engineers) use Hadoop through Hive
  • 5. Where is this data stored?   Hadoop/Hive Warehouse –  4800 cores, 5.5 PetaBytes –  12 TB per node –  Two level network topology   1 Gbit/sec from node to rack switch   4 Gbit/sec to top level rack switch
  • 6. Data Flow into Hadoop Cloud Network
 Storage
 and
 Servers
 Web
Servers
 Scribe
MidTier
 Oracle
RAC
 Hadoop
Hive
Warehouse
 MySQL

  • 7. Hadoop Scribe: Avoid Costly Filers Scribe
Writers
 RealBme
 Hadoop
 Cluster
 Web
Servers
 Scribe
MidTier
 Oracle
RAC
 Hadoop
Hive
Warehouse
 MySQL
 http://hadoopblog.blogspot.com/2009/06/hdfs-scribe-integration.html
  • 8. HDFS Raid   Start the same: triplicate every data block A B C   Background encoding –  Combine third replica of A B C blocks from a single file to create parity block A B C –  Remove third replica –  Apache JIRA HDFS-503 A+B+C   DiskReduce from CMU –  Garth Gibson research A file with three blocks A, B and C http://hadoopblog.blogspot.com/2009/08/hdfs-and-erasure-codes-hdfs-raid.html
  • 9. Archival: Move old data to cheap storage Hadoop
Warehouse
 NFS
 Hadoop
Archive
Node
 Cheap
NAS
 Hadoop
Archival
Cluster
 hEp://issues.apache.org/jira/browse/HDFS‐220
 Hive
Query

  • 10. Dynamic-size MapReduce Clusters   Why multiple compute clouds in Facebook? –  Users unaware of resources needed by job –  Absence of flexible Job Isolation techniques –  Provide adequate SLAs for jobs   Dynamically move nodes between clusters –  Based on load and configured policies –  Apache Jira MAPREDUCE-1044
  • 11. Resource Aware Scheduling (Fair Share Scheduler)   We use the Hadoop Fair Share Scheduler –  Scheduler unaware of memory needed by job   Memory and CPU aware scheduling –  RealTime gathering of CPU and memory usage –  Scheduler analyzes memory consumption in realtime –  Scheduler fair-shares memory usage among jobs –  Slot-less scheduling of tasks (in future) –  Apache Jira MAPREDUCE-961
  • 12. Hive – Data Warehouse   Efficient SQL to Map-Reduce Compiler   Mar 2008: Started at Facebook   May 2009: Release 0.3.0 available   Now: Preparing for release 0.4.0   Countable for 95%+ of Hadoop jobs @ Facebook   Used by ~200 engineers and business analysts at Facebook every month
  • 13. Hive Architecture Web UI + Hive CLI + JDBC/ Map Reduce HDFS ODBC User-defined Browse, Query, DDL Map-reduce Scripts MetaStore Hive QL UDF/UDAF substr Parser sum Thrift API average Planner Execution FileFormats SerDe Optimizer TextFile CSV SequenceFile Thrift RCFile Regex
  • 14. Hive DDL   DDL –  Complex columns –  Partitions –  Buckets   Example –  CREATE TABLE sales ( id INT, items ARRAY<STRUCT<id:INT, name:STRING>>, extra MAP<STRING, STRING> ) PARTITIONED BY (ds STRING) CLUSTERED BY (id) INTO 32 BUCKETS;
  • 15. Hive Query Language   SQL –  Where –  Group By –  Equi-Join –  Sub query in from clause   Example –  SELECT r.*, s.* FROM r JOIN ( SELECT key, count(1) as count FROM s GROUP BY key) s ON r.key = s.key WHERE s.count > 100;
  • 16. Group By   4 different plans based on: –  Does data have skew? –  partial aggregation   Map-side hash aggregation –  In-memory hash table in mapper to do partial aggregations   2-map-reduce aggregation –  For distinct queries with skew and large cardinality
  • 17. Join   Normal map-reduce Join –  Mapper sends all rows with the same key to a single reducer –  Reducer does the join   Map-side Join –  Mapper loads the whole small table and a portion of big table –  Mapper does the join –  Much faster than map-reduce join
  • 18. Sampling   Efficient sampling –  Table can be bucketed –  Each bucket is a file –  Sampling can choose some buckets   Example –  SELECT product_id, sum(price) FROM sales TABLESAMPLE (BUCKET 1 OUT OF 32) GROUP BY product_id
  • 19. Multi-table Group-By/Insert FROM users INSERT INTO TABLE pv_gender_sum SELECT gender, count(DISTINCT userid) GROUP BY gender INSERT INTO DIRECTORY '/user/facebook/tmp/pv_age_sum.dir' SELECT age, count(DISTINCT userid) GROUP BY age INSERT INTO LOCAL DIRECTORY '/home/me/pv_age_sum.dir' SELECT country, gender, count(DISTINCT userid) GROUP BY country, gender;
  • 20. File Formats   TextFile: –  Easy for other applications to write/read –  Gzip text files are not splittable   SequenceFile: –  Only hadoop can read it –  Support splittable compression   RCFile: Block-based columnar storage –  Use SequenceFile block format –  Columnar storage inside a block –  25% smaller compressed size –  On-par or better query performance depending on the query
  • 21. SerDe   Serialization/Deserialization   Row Format –  CSV (LazySimpleSerDe) –  Thrift (ThriftSerDe) –  Regex (RegexSerDe) –  Hive Binary Format (LazyBinarySerDe)   LazySimpleSerDe and LazyBinarySerDe –  Deserialize the field when needed –  Reuse objects across different rows –  Text and Binary format
  • 22. UDF/UDAF   Features: –  Use either Java or Hadoop Objects (int, Integer, IntWritable) –  Overloading –  Variable-length arguments –  Partial aggregation for UDAF   Example UDF: –  public class UDFExampleAdd extends UDF { public int evaluate(int a, int b) { return a + b; } }
  • 23. Hive – Performance Date SVN Revision Major Changes Query A Query B Query C 2/22/2009 746906 Before Lazy Deserialization 83 sec 98 sec 183 sec 2/23/2009 747293 Lazy Deserialization 40 sec 66 sec 185 sec 3/6/2009 751166 Map-side Aggregation 22 sec 67 sec 182 sec 4/29/2009 770074 Object Reuse 21 sec 49 sec 130 sec 6/3/2009 781633 Map-side Join * 21 sec 48 sec 132 sec 8/5/2009 801497 Lazy Binary Format * 21 sec 48 sec 132 sec   QueryA: SELECT count(1) FROM t;   QueryB: SELECT concat(concat(concat(a,b),c),d) FROM t;   QueryC: SELECT * FROM t;   map-side time only (incl. GzipCodec for comp/decompression)   * These two features need to be tested with other queries.
  • 24. Hive – Future Works   Indexes   Create table as select   Views / variables   Explode operator   In/Exists sub queries   Leverage sort/bucket information in Join