SlideShare a Scribd company logo
Facebook Messages & HBase
                Nicolas Spiegelberg
                Software Engineer, Facebook




April 8, 2011
Talk Outline

▪   About Facebook Messages
▪   Intro to HBase
▪   Why HBase
▪   HBase Contributions
▪   MySQL -> HBase Migration
▪   Future Plans
▪   Q&A
Facebook Messages
The New Facebook Messages

 Messages   Chats    Emails   SMS
Facebook Messages & HBase
Monthly data volume prior to launch


           15B x 1,024 bytes = 14TB



           120B x 100 bytes = 11TB
Messaging Data
▪   Small/medium sized data              HBase
    ▪   Message metadata & indices
    ▪   Search index
    ▪   Small message bodies


▪   Attachments and large messages                Haystack
    ▪   Used for our existing photo/video store
Open Source Stack
▪   Memcached   -->   App Server Cache
▪   ZooKeeper   -->   Small Data Coordination Service
▪   HBase             -->   Database Storage Engine
▪   HDFS        -->   Distributed FileSystem
▪   Hadoop      -->   Asynchronous Map-Reduce Jobs
Our architecture
                                                           User Directory Service
           Clients
   (Front End, MTA, etc.)
                            What’s the cell for
                               this user?
                                                  Cell 2
        Cell 1                                                   Cell 3

                                  Cell 1   Application Server
 Application Server                                  Application Server

                                                  Attachments
                                             HBase/HDFS/Z
  HBase/HDFS/Z                               KMessage, Metadata,
                                                       HBase/HDFS/Z
  K                                             Search Index
                                                       K


                            Haystack
About HBase
HBase in a nutshell

• distributed, large-scale data store

• efficient at random reads/writes

• initially modeled after Google’s BigTable

• open source project (Apache)
When to use HBase?

▪ storing large amounts of data

▪ need high write throughput

▪ need efficient random access within large data sets

▪ need to scale gracefully with data

▪ for structured and semi-structured data

▪ don’t need full RDMS capabilities (cross table transactions, joins, etc.)
HBase Data Model
• An HBase table is:
 •   a sparse , three-dimensional array of cells, indexed by:
      RowKey, ColumnKey, Timestamp/Version
 •   sharded into regions along an ordered RowKey space

• Within each region:
 •   Data is grouped into column families
 ▪   Sort order within each column family:

      Row Key (asc), Column Key (asc), Timestamp (desc)
Example: Inbox Search
• Schema
 •   Key: RowKey: userid, Column: word, Version: MessageID
 •   Value: Auxillary info (like offset of word in message)

• Data is stored sorted by <userid, word, messageID>:

      User1:hi:17->offset1
                                 Can efficiently handle queries like:
      User1:hi:16->offset2
      User1:hello:16->offset3    - Get top N messageIDs for a
      User1:hello:2->offset4       specific user & word
      ...
      User2:....                 - Typeahead query: for a given user,
      User2:...                    get words that match a prefix
      ...
HBase System Overview
                             Database Layer

   HBASE
       Master      Backup
                   Master
   Region           Region                    Region    ...
   Server           Server                    Server
                                                              Coordination Service
            Storage Layer

HDFS                                                   Zookeeper Quorum
   Namenode          Secondary Namenode                ZK      ZK           ...
                                                       Peer    Peer
Datanode Datanode           Datanode          ...
HBase Overview
HBASE Region Server
                ....
            Region #2
       Region #1
                        ....
                  ColumnFamily #2

            ColumnFamily #1                Memstore
                                    (in memory data structure)


                HFiles (in HDFS)                             flush




  Write Ahead Log ( in HDFS)
HBase Overview
•       Very good at random reads/writes

•       Write path
    •    Sequential write/sync to commit log
    •    update memstore

•       Read path
    •    Lookup memstore & persistent HFiles
    •    HFile data is sorted and has a block index for efficient retrieval

•       Background chores
    •    Flushes (memstore -> HFile)
    •    Compactions (group of HFiles merged into one)
Why HBase?
Performance is great, but what else…
Horizontal scalability
▪   HBase & HDFS are elastic by design
▪   Multiple table shards (regions) per physical server
▪   On node additions
    ▪   Load balancer automatically reassigns shards from overloaded
        nodes to new nodes
    ▪   Because filesystem underneath is itself distributed, data for
        reassigned regions is instantly servable from the new nodes.
▪   Regions can be dynamically split into smaller regions.
    ▪   Pre-sharding is not necessary
    ▪   Splits are near instantaneous!
Automatic Failover
▪   Node failures automatically detected by HBase Master
▪   Regions on failed node are distributed evenly among surviving nodes.
        ▪   Multiple regions/server model avoids need for substantial
            overprovisioning
▪   HBase Master failover
    ▪   1 active, rest standby
    ▪   When active master fails, a standby automatically takes over
HBase uses HDFS
We get the benefits of HDFS as a storage system for free
▪   Fault tolerance (block level replication for redundancy)
▪   Scalability
▪   End-to-end checksums to detect and recover from corruptions
▪   Map Reduce for large scale data processing
▪   HDFS already battle tested inside Facebook
    ▪   running petabyte scale clusters
    ▪   lot of in-house development and operational experience
Simpler Consistency Model
▪   HBase’s strong consistency model
     ▪   simpler for a wide variety of applications to deal with
     ▪   client gets same answer no matter which replica data is read from


▪   Eventual consistency: tricky for applications fronted by a cache
     ▪   replicas may heal eventually during failures
     ▪   but stale data could remain stuck in cache
Typical Cluster Layout
 ▪   Multiple clusters/cells for messaging
     ▪   20 servers/rack; 5 or more racks per cluster
 ▪   Controllers (master/Zookeeper) spread across racks
 ZooKeeper Peer       ZooKeeper Peer     ZooKeeper Peer    ZooKeeper Peer    ZooKeeper Peer
 HDFS Namenode        Backup Namenode    Job Tracker       Hbase Master      Backup Master

Region Server        Region Server      Region Server     Region Server     Region Server
Data Node            Data Node          Data Node         Data Node         Data Node
Task Tracker         Task Tracker       Task Tracker      Task Tracker      Task Tracker



19x...                19x...            19x...            19x...            19x...


Region Server        Region Server      Region Server     Region Server     Region Server
Data Node            Data Node          Data Node         Data Node         Data Node
Task Tracker         Task Tracker       Task Tracker      Task Tracker      Task Tracker

         Rack #1          Rack #2            Rack #3           Rack #4           Rack #5
HBase Enhancements
Goal: Zero Data Loss
Goal of Zero Data Loss/Correctness
▪   sync support added to hadoop-20 branch
    ▪   for keeping transaction log (WAL) in HDFS
    ▪   to guarantee durability of transactions
▪   Row-level ACID compliance
▪   Enhanced HDFS’s Block Placement Policy:
    ▪   Original: rack aware, but minimally constrained
    ▪   Now: Placement of replicas constrained to configurable node groups
    ▪   Result: Data loss probability reduced by orders of magnitude
Availability/Stability improvements
▪   HBase master rewrite- region assignments using ZK
▪   Rolling Restarts – doing software upgrades without a downtime
▪   Interrupt Compactions – prioritize availability over minor perf gains
▪   Timeouts on client-server RPCs
▪   Staggered major compaction to avoid compaction storms
Performance Improvements
▪   Compactions
    ▪   critical for read performance
    ▪   Improved compaction algo
    ▪   delete/TTL/overwrite processing in minor compactions
▪   Read optimizations:
    ▪   Seek optimizations for rows with large number of cells
    ▪   Bloom filters to minimize HFile lookups
    ▪   Timerange hints on HFiles (great for temporal data)
    ▪   Improved handling of compressed HFiles
Operational Experiences
▪   Darklaunch:
    ▪   shadow traffic on test clusters for continuous, at scale testing
    ▪   experiment/tweak knobs
    ▪   simulate failures, test rolling upgrades
▪   Constant (pre-sharding) region count & controlled rolling splits
▪   Administrative tools and monitoring
    ▪   Alerts (HBCK, memory alerts, perf alerts, health alerts)
    ▪   auto detecting/decommissioning misbehaving machines
    ▪   Dashboards
▪   Application level backup/recovery pipeline
Working within the Apache community
▪   Growing with the community
    ▪   Started with a stable, healthy project
    ▪   In house expertise in both HDFS and HBase
    ▪   Increasing community involvement
▪   Undertook massive feature improvements with community help
    ▪   HDFS 0.20-append branch
    ▪   HBase Master rewrite
▪   Continually interacting with the community to identify and fix issues
    ▪   e.g., large responses (2GB RPC)
Data migration
Another place we used HBase heavily…
Move messaging data from MySQL to
HBase
Move messaging data from MySQL to HBase
▪   In MySQL, inbox data was kept normalized
    ▪   user’s messages are stored across many different machines
▪   Migrating a user is basically one big join across tables spread over
    many different machines
▪   Multiple terabytes of data (for over 500M users)
▪   Cannot pound 1000s of production UDBs to migrate users
How we migrated
▪   Periodically, get a full export of all the users’ inbox data in MySQL
▪   And, use bulk loader to import the above into a migration HBase
    cluster
▪   To migrate users:
    ▪   Since users may continue to receive messages during migration:
        ▪   double-write (to old and new system) during the migration period
    ▪   Get a list of all recent messages (since last MySQL export) for the
        user
        ▪   Load new messages into the migration HBase cluster
        ▪   Perform the join operations to generate the new data
        ▪   Export it and upload into the final cluster
Future Plans
HBase Expands
Facebook Insights Goes Real-Time
▪   Recently launched real-time analytics for social plugins on top of
    HBase
▪   Publishers get real-time distribution/engagement metrics:
        ▪   # of impressions, likes
        ▪   analytics by
            ▪   Domain, URL, demographics
            ▪   Over various time periods (the last hour, day, all-time)
▪   Makes use of HBase capabilities like:
    ▪   Efficient counters (read-modify-write increment operations)
    ▪   TTL for purging old data
Future Work
It is still early days…!
▪   Namenode HA (AvatarNode)
▪   Fast hot-backups (Export/Import)
▪   Online schema & config changes
▪   Running HBase as a service (multi-tenancy)
▪   Features (like secondary indices, batching hybrid mutations)
▪   Cross-DC replication
▪   Lot more performance/availability improvements
Thanks! Questions?
facebook.com/engineering
杭州站 · 2011年10月20日~22日
 www.qconhangzhou.com(6月启动)




QCon北京站官方网站和资料下载
     www.qconbeijing.com

More Related Content

What's hot

HBase in Practice
HBase in PracticeHBase in Practice
HBase in Practice
larsgeorge
 
Sqoop on Spark for Data Ingestion
Sqoop on Spark for Data IngestionSqoop on Spark for Data Ingestion
Sqoop on Spark for Data Ingestion
DataWorks Summit
 
3D: DBT using Databricks and Delta
3D: DBT using Databricks and Delta3D: DBT using Databricks and Delta
3D: DBT using Databricks and Delta
Databricks
 
Apache HBase Performance Tuning
Apache HBase Performance TuningApache HBase Performance Tuning
Apache HBase Performance Tuning
Lars Hofhansl
 
A Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and HudiA Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and Hudi
Databricks
 
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in SparkSpark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Bo Yang
 
Introduction to Cassandra
Introduction to CassandraIntroduction to Cassandra
Introduction to Cassandra
Gokhan Atil
 
Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
 Best Practice of Compression/Decompression Codes in Apache Spark with Sophia... Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
Databricks
 
Apache Phoenix and HBase: Past, Present and Future of SQL over HBase
Apache Phoenix and HBase: Past, Present and Future of SQL over HBaseApache Phoenix and HBase: Past, Present and Future of SQL over HBase
Apache Phoenix and HBase: Past, Present and Future of SQL over HBase
DataWorks Summit/Hadoop Summit
 
Storing time series data with Apache Cassandra
Storing time series data with Apache CassandraStoring time series data with Apache Cassandra
Storing time series data with Apache Cassandra
Patrick McFadin
 
The Apache Spark File Format Ecosystem
The Apache Spark File Format EcosystemThe Apache Spark File Format Ecosystem
The Apache Spark File Format Ecosystem
Databricks
 
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17
Deep Dive with Spark Streaming - Tathagata  Das - Spark Meetup 2013-06-17Deep Dive with Spark Streaming - Tathagata  Das - Spark Meetup 2013-06-17
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17
spark-project
 
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational CacheUsing Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Dremio Corporation
 
Accelerating query processing with materialized views in Apache Hive
Accelerating query processing with materialized views in Apache HiveAccelerating query processing with materialized views in Apache Hive
Accelerating query processing with materialized views in Apache Hive
DataWorks Summit
 
Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)
Julian Hyde
 
Apache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In PracticeApache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In Practice
Dremio Corporation
 
Parquet overview
Parquet overviewParquet overview
Parquet overview
Julien Le Dem
 
Parquet Hadoop Summit 2013
Parquet Hadoop Summit 2013Parquet Hadoop Summit 2013
Parquet Hadoop Summit 2013
Julien Le Dem
 
Scaling HBase for Big Data
Scaling HBase for Big DataScaling HBase for Big Data
Scaling HBase for Big Data
Salesforce Engineering
 
Webinar: Deep Dive on Apache Flink State - Seth Wiesman
Webinar: Deep Dive on Apache Flink State - Seth WiesmanWebinar: Deep Dive on Apache Flink State - Seth Wiesman
Webinar: Deep Dive on Apache Flink State - Seth Wiesman
Ververica
 

What's hot (20)

HBase in Practice
HBase in PracticeHBase in Practice
HBase in Practice
 
Sqoop on Spark for Data Ingestion
Sqoop on Spark for Data IngestionSqoop on Spark for Data Ingestion
Sqoop on Spark for Data Ingestion
 
3D: DBT using Databricks and Delta
3D: DBT using Databricks and Delta3D: DBT using Databricks and Delta
3D: DBT using Databricks and Delta
 
Apache HBase Performance Tuning
Apache HBase Performance TuningApache HBase Performance Tuning
Apache HBase Performance Tuning
 
A Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and HudiA Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and Hudi
 
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in SparkSpark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
 
Introduction to Cassandra
Introduction to CassandraIntroduction to Cassandra
Introduction to Cassandra
 
Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
 Best Practice of Compression/Decompression Codes in Apache Spark with Sophia... Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
Best Practice of Compression/Decompression Codes in Apache Spark with Sophia...
 
Apache Phoenix and HBase: Past, Present and Future of SQL over HBase
Apache Phoenix and HBase: Past, Present and Future of SQL over HBaseApache Phoenix and HBase: Past, Present and Future of SQL over HBase
Apache Phoenix and HBase: Past, Present and Future of SQL over HBase
 
Storing time series data with Apache Cassandra
Storing time series data with Apache CassandraStoring time series data with Apache Cassandra
Storing time series data with Apache Cassandra
 
The Apache Spark File Format Ecosystem
The Apache Spark File Format EcosystemThe Apache Spark File Format Ecosystem
The Apache Spark File Format Ecosystem
 
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17
Deep Dive with Spark Streaming - Tathagata  Das - Spark Meetup 2013-06-17Deep Dive with Spark Streaming - Tathagata  Das - Spark Meetup 2013-06-17
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17
 
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational CacheUsing Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
 
Accelerating query processing with materialized views in Apache Hive
Accelerating query processing with materialized views in Apache HiveAccelerating query processing with materialized views in Apache Hive
Accelerating query processing with materialized views in Apache Hive
 
Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)
 
Apache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In PracticeApache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In Practice
 
Parquet overview
Parquet overviewParquet overview
Parquet overview
 
Parquet Hadoop Summit 2013
Parquet Hadoop Summit 2013Parquet Hadoop Summit 2013
Parquet Hadoop Summit 2013
 
Scaling HBase for Big Data
Scaling HBase for Big DataScaling HBase for Big Data
Scaling HBase for Big Data
 
Webinar: Deep Dive on Apache Flink State - Seth Wiesman
Webinar: Deep Dive on Apache Flink State - Seth WiesmanWebinar: Deep Dive on Apache Flink State - Seth Wiesman
Webinar: Deep Dive on Apache Flink State - Seth Wiesman
 

Similar to Facebook Messages & HBase

Storage Infrastructure Behind Facebook Messages
Storage Infrastructure Behind Facebook MessagesStorage Infrastructure Behind Facebook Messages
Storage Infrastructure Behind Facebook Messages
yarapavan
 
[Hi c2011]building mission critical messaging system(guoqiang jerry)
[Hi c2011]building mission critical messaging system(guoqiang jerry)[Hi c2011]building mission critical messaging system(guoqiang jerry)
[Hi c2011]building mission critical messaging system(guoqiang jerry)
baggioss
 
Hbase 20141003
Hbase 20141003Hbase 20141003
Hbase 20141003
Jean-Baptiste Poullet
 
Hbase: an introduction
Hbase: an introductionHbase: an introduction
Hbase: an introduction
Jean-Baptiste Poullet
 
Hbase
HbaseHbase
Hw09 Practical HBase Getting The Most From Your H Base Install
Hw09   Practical HBase  Getting The Most From Your H Base InstallHw09   Practical HBase  Getting The Most From Your H Base Install
Hw09 Practical HBase Getting The Most From Your H Base Install
Cloudera, Inc.
 
Big Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Big Data and Hadoop - History, Technical Deep Dive, and Industry TrendsBig Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Big Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Esther Kundin
 
Big Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Big Data and Hadoop - History, Technical Deep Dive, and Industry TrendsBig Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Big Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Esther Kundin
 
Apache HBase™
Apache HBase™Apache HBase™
Apache HBase™
Prashant Gupta
 
[B4]deview 2012-hdfs
[B4]deview 2012-hdfs[B4]deview 2012-hdfs
[B4]deview 2012-hdfs
NAVER D2
 
Facebook's HBase Backups - StampedeCon 2012
Facebook's HBase Backups - StampedeCon 2012Facebook's HBase Backups - StampedeCon 2012
Facebook's HBase Backups - StampedeCon 2012
StampedeCon
 
Apache Hadoop India Summit 2011 talk "Searching Information Inside Hadoop Pla...
Apache Hadoop India Summit 2011 talk "Searching Information Inside Hadoop Pla...Apache Hadoop India Summit 2011 talk "Searching Information Inside Hadoop Pla...
Apache Hadoop India Summit 2011 talk "Searching Information Inside Hadoop Pla...
Yahoo Developer Network
 
Data Storage and Management project Report
Data Storage and Management project ReportData Storage and Management project Report
Data Storage and Management project Report
Tushar Dalvi
 
Large-scale Web Apps @ Pinterest
Large-scale Web Apps @ PinterestLarge-scale Web Apps @ Pinterest
Large-scale Web Apps @ Pinterest
HBaseCon
 
CCS334 BIG DATA ANALYTICS UNIT 5 PPT ELECTIVE PAPER
CCS334 BIG DATA ANALYTICS UNIT 5 PPT  ELECTIVE PAPERCCS334 BIG DATA ANALYTICS UNIT 5 PPT  ELECTIVE PAPER
CCS334 BIG DATA ANALYTICS UNIT 5 PPT ELECTIVE PAPER
KrishnaVeni451953
 
Facebook - Jonthan Gray - Hadoop World 2010
Facebook - Jonthan Gray - Hadoop World 2010Facebook - Jonthan Gray - Hadoop World 2010
Facebook - Jonthan Gray - Hadoop World 2010
Cloudera, Inc.
 
Apache hadoop hbase
Apache hadoop hbaseApache hadoop hbase
Apache hadoop hbase
sheetal sharma
 
Hadoop Backup and Disaster Recovery
Hadoop Backup and Disaster RecoveryHadoop Backup and Disaster Recovery
Hadoop Backup and Disaster Recovery
Cloudera, Inc.
 
Hbase status quo apache-con europe - nov 2012
Hbase status quo   apache-con europe - nov 2012Hbase status quo   apache-con europe - nov 2012
Hbase status quo apache-con europe - nov 2012
Chris Huang
 
Big data Hadoop
Big data  Hadoop   Big data  Hadoop
Big data Hadoop
Ayyappan Paramesh
 

Similar to Facebook Messages & HBase (20)

Storage Infrastructure Behind Facebook Messages
Storage Infrastructure Behind Facebook MessagesStorage Infrastructure Behind Facebook Messages
Storage Infrastructure Behind Facebook Messages
 
[Hi c2011]building mission critical messaging system(guoqiang jerry)
[Hi c2011]building mission critical messaging system(guoqiang jerry)[Hi c2011]building mission critical messaging system(guoqiang jerry)
[Hi c2011]building mission critical messaging system(guoqiang jerry)
 
Hbase 20141003
Hbase 20141003Hbase 20141003
Hbase 20141003
 
Hbase: an introduction
Hbase: an introductionHbase: an introduction
Hbase: an introduction
 
Hbase
HbaseHbase
Hbase
 
Hw09 Practical HBase Getting The Most From Your H Base Install
Hw09   Practical HBase  Getting The Most From Your H Base InstallHw09   Practical HBase  Getting The Most From Your H Base Install
Hw09 Practical HBase Getting The Most From Your H Base Install
 
Big Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Big Data and Hadoop - History, Technical Deep Dive, and Industry TrendsBig Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Big Data and Hadoop - History, Technical Deep Dive, and Industry Trends
 
Big Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Big Data and Hadoop - History, Technical Deep Dive, and Industry TrendsBig Data and Hadoop - History, Technical Deep Dive, and Industry Trends
Big Data and Hadoop - History, Technical Deep Dive, and Industry Trends
 
Apache HBase™
Apache HBase™Apache HBase™
Apache HBase™
 
[B4]deview 2012-hdfs
[B4]deview 2012-hdfs[B4]deview 2012-hdfs
[B4]deview 2012-hdfs
 
Facebook's HBase Backups - StampedeCon 2012
Facebook's HBase Backups - StampedeCon 2012Facebook's HBase Backups - StampedeCon 2012
Facebook's HBase Backups - StampedeCon 2012
 
Apache Hadoop India Summit 2011 talk "Searching Information Inside Hadoop Pla...
Apache Hadoop India Summit 2011 talk "Searching Information Inside Hadoop Pla...Apache Hadoop India Summit 2011 talk "Searching Information Inside Hadoop Pla...
Apache Hadoop India Summit 2011 talk "Searching Information Inside Hadoop Pla...
 
Data Storage and Management project Report
Data Storage and Management project ReportData Storage and Management project Report
Data Storage and Management project Report
 
Large-scale Web Apps @ Pinterest
Large-scale Web Apps @ PinterestLarge-scale Web Apps @ Pinterest
Large-scale Web Apps @ Pinterest
 
CCS334 BIG DATA ANALYTICS UNIT 5 PPT ELECTIVE PAPER
CCS334 BIG DATA ANALYTICS UNIT 5 PPT  ELECTIVE PAPERCCS334 BIG DATA ANALYTICS UNIT 5 PPT  ELECTIVE PAPER
CCS334 BIG DATA ANALYTICS UNIT 5 PPT ELECTIVE PAPER
 
Facebook - Jonthan Gray - Hadoop World 2010
Facebook - Jonthan Gray - Hadoop World 2010Facebook - Jonthan Gray - Hadoop World 2010
Facebook - Jonthan Gray - Hadoop World 2010
 
Apache hadoop hbase
Apache hadoop hbaseApache hadoop hbase
Apache hadoop hbase
 
Hadoop Backup and Disaster Recovery
Hadoop Backup and Disaster RecoveryHadoop Backup and Disaster Recovery
Hadoop Backup and Disaster Recovery
 
Hbase status quo apache-con europe - nov 2012
Hbase status quo   apache-con europe - nov 2012Hbase status quo   apache-con europe - nov 2012
Hbase status quo apache-con europe - nov 2012
 
Big data Hadoop
Big data  Hadoop   Big data  Hadoop
Big data Hadoop
 

Recently uploaded

How UiPath Discovery Suite supports identification of Agentic Process Automat...
How UiPath Discovery Suite supports identification of Agentic Process Automat...How UiPath Discovery Suite supports identification of Agentic Process Automat...
How UiPath Discovery Suite supports identification of Agentic Process Automat...
DianaGray10
 
Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1
DianaGray10
 
Self-Healing Test Automation Framework - Healenium
Self-Healing Test Automation Framework - HealeniumSelf-Healing Test Automation Framework - Healenium
Self-Healing Test Automation Framework - Healenium
Knoldus Inc.
 
The Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - CoatueThe Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - Coatue
Razin Mustafiz
 
Camunda Chapter NY Meetup July 2024.pptx
Camunda Chapter NY Meetup July 2024.pptxCamunda Chapter NY Meetup July 2024.pptx
Camunda Chapter NY Meetup July 2024.pptx
ZachWylie3
 
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and ConsiderationsChoosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
webbyacad software
 
What's New in Copilot for Microsoft 365 June 2024.pptx
What's New in Copilot for Microsoft 365 June 2024.pptxWhat's New in Copilot for Microsoft 365 June 2024.pptx
What's New in Copilot for Microsoft 365 June 2024.pptx
Stephanie Beckett
 
Zaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdfZaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdf
AmandaCheung15
 
Mastering Board Best Practices: Essential Skills for Effective Non-profit Lea...
Mastering Board Best Practices: Essential Skills for Effective Non-profit Lea...Mastering Board Best Practices: Essential Skills for Effective Non-profit Lea...
Mastering Board Best Practices: Essential Skills for Effective Non-profit Lea...
OnBoard
 
Keynote : AI & Future Of Offensive Security
Keynote : AI & Future Of Offensive SecurityKeynote : AI & Future Of Offensive Security
Keynote : AI & Future Of Offensive Security
Priyanka Aash
 
FIDO Munich Seminar Blueprint for In-Vehicle Payment Standard.pptx
FIDO Munich Seminar Blueprint for In-Vehicle Payment Standard.pptxFIDO Munich Seminar Blueprint for In-Vehicle Payment Standard.pptx
FIDO Munich Seminar Blueprint for In-Vehicle Payment Standard.pptx
FIDO Alliance
 
Keynote : Presentation on SASE Technology
Keynote : Presentation on SASE TechnologyKeynote : Presentation on SASE Technology
Keynote : Presentation on SASE Technology
Priyanka Aash
 
Scaling Vector Search: How Milvus Handles Billions+
Scaling Vector Search: How Milvus Handles Billions+Scaling Vector Search: How Milvus Handles Billions+
Scaling Vector Search: How Milvus Handles Billions+
Zilliz
 
Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024
siddu769252
 
The Challenge of Interpretability in Generative AI Models.pdf
The Challenge of Interpretability in Generative AI Models.pdfThe Challenge of Interpretability in Generative AI Models.pdf
The Challenge of Interpretability in Generative AI Models.pdf
Sara Kroft
 
Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024
Michael Price
 
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Snarky Security
 
The History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal EmbeddingsThe History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal Embeddings
Zilliz
 
Increase Quality with User Access Policies - July 2024
Increase Quality with User Access Policies - July 2024Increase Quality with User Access Policies - July 2024
Increase Quality with User Access Policies - July 2024
Peter Caitens
 
UiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPath Community Day Amsterdam: Code, Collaborate, ConnectUiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPathCommunity
 

Recently uploaded (20)

How UiPath Discovery Suite supports identification of Agentic Process Automat...
How UiPath Discovery Suite supports identification of Agentic Process Automat...How UiPath Discovery Suite supports identification of Agentic Process Automat...
How UiPath Discovery Suite supports identification of Agentic Process Automat...
 
Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1Discovery Series - Zero to Hero - Task Mining Session 1
Discovery Series - Zero to Hero - Task Mining Session 1
 
Self-Healing Test Automation Framework - Healenium
Self-Healing Test Automation Framework - HealeniumSelf-Healing Test Automation Framework - Healenium
Self-Healing Test Automation Framework - Healenium
 
The Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - CoatueThe Path to General-Purpose Robots - Coatue
The Path to General-Purpose Robots - Coatue
 
Camunda Chapter NY Meetup July 2024.pptx
Camunda Chapter NY Meetup July 2024.pptxCamunda Chapter NY Meetup July 2024.pptx
Camunda Chapter NY Meetup July 2024.pptx
 
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and ConsiderationsChoosing the Best Outlook OST to PST Converter: Key Features and Considerations
Choosing the Best Outlook OST to PST Converter: Key Features and Considerations
 
What's New in Copilot for Microsoft 365 June 2024.pptx
What's New in Copilot for Microsoft 365 June 2024.pptxWhat's New in Copilot for Microsoft 365 June 2024.pptx
What's New in Copilot for Microsoft 365 June 2024.pptx
 
Zaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdfZaitechno Handheld Raman Spectrometer.pdf
Zaitechno Handheld Raman Spectrometer.pdf
 
Mastering Board Best Practices: Essential Skills for Effective Non-profit Lea...
Mastering Board Best Practices: Essential Skills for Effective Non-profit Lea...Mastering Board Best Practices: Essential Skills for Effective Non-profit Lea...
Mastering Board Best Practices: Essential Skills for Effective Non-profit Lea...
 
Keynote : AI & Future Of Offensive Security
Keynote : AI & Future Of Offensive SecurityKeynote : AI & Future Of Offensive Security
Keynote : AI & Future Of Offensive Security
 
FIDO Munich Seminar Blueprint for In-Vehicle Payment Standard.pptx
FIDO Munich Seminar Blueprint for In-Vehicle Payment Standard.pptxFIDO Munich Seminar Blueprint for In-Vehicle Payment Standard.pptx
FIDO Munich Seminar Blueprint for In-Vehicle Payment Standard.pptx
 
Keynote : Presentation on SASE Technology
Keynote : Presentation on SASE TechnologyKeynote : Presentation on SASE Technology
Keynote : Presentation on SASE Technology
 
Scaling Vector Search: How Milvus Handles Billions+
Scaling Vector Search: How Milvus Handles Billions+Scaling Vector Search: How Milvus Handles Billions+
Scaling Vector Search: How Milvus Handles Billions+
 
Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024Generative AI Reasoning Tech Talk - July 2024
Generative AI Reasoning Tech Talk - July 2024
 
The Challenge of Interpretability in Generative AI Models.pdf
The Challenge of Interpretability in Generative AI Models.pdfThe Challenge of Interpretability in Generative AI Models.pdf
The Challenge of Interpretability in Generative AI Models.pdf
 
Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024Perth MuleSoft Meetup July 2024
Perth MuleSoft Meetup July 2024
 
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
Welcome to Cyberbiosecurity. Because regular cybersecurity wasn't complicated...
 
The History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal EmbeddingsThe History of Embeddings & Multimodal Embeddings
The History of Embeddings & Multimodal Embeddings
 
Increase Quality with User Access Policies - July 2024
Increase Quality with User Access Policies - July 2024Increase Quality with User Access Policies - July 2024
Increase Quality with User Access Policies - July 2024
 
UiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPath Community Day Amsterdam: Code, Collaborate, ConnectUiPath Community Day Amsterdam: Code, Collaborate, Connect
UiPath Community Day Amsterdam: Code, Collaborate, Connect
 

Facebook Messages & HBase

  • 1. Facebook Messages & HBase Nicolas Spiegelberg Software Engineer, Facebook April 8, 2011
  • 2. Talk Outline ▪ About Facebook Messages ▪ Intro to HBase ▪ Why HBase ▪ HBase Contributions ▪ MySQL -> HBase Migration ▪ Future Plans ▪ Q&A
  • 4. The New Facebook Messages Messages Chats Emails SMS
  • 6. Monthly data volume prior to launch 15B x 1,024 bytes = 14TB 120B x 100 bytes = 11TB
  • 7. Messaging Data ▪ Small/medium sized data HBase ▪ Message metadata & indices ▪ Search index ▪ Small message bodies ▪ Attachments and large messages Haystack ▪ Used for our existing photo/video store
  • 8. Open Source Stack ▪ Memcached --> App Server Cache ▪ ZooKeeper --> Small Data Coordination Service ▪ HBase --> Database Storage Engine ▪ HDFS --> Distributed FileSystem ▪ Hadoop --> Asynchronous Map-Reduce Jobs
  • 9. Our architecture User Directory Service Clients (Front End, MTA, etc.) What’s the cell for this user? Cell 2 Cell 1 Cell 3 Cell 1 Application Server Application Server Application Server Attachments HBase/HDFS/Z HBase/HDFS/Z KMessage, Metadata, HBase/HDFS/Z K Search Index K Haystack
  • 11. HBase in a nutshell • distributed, large-scale data store • efficient at random reads/writes • initially modeled after Google’s BigTable • open source project (Apache)
  • 12. When to use HBase? ▪ storing large amounts of data ▪ need high write throughput ▪ need efficient random access within large data sets ▪ need to scale gracefully with data ▪ for structured and semi-structured data ▪ don’t need full RDMS capabilities (cross table transactions, joins, etc.)
  • 13. HBase Data Model • An HBase table is: • a sparse , three-dimensional array of cells, indexed by: RowKey, ColumnKey, Timestamp/Version • sharded into regions along an ordered RowKey space • Within each region: • Data is grouped into column families ▪ Sort order within each column family: Row Key (asc), Column Key (asc), Timestamp (desc)
  • 14. Example: Inbox Search • Schema • Key: RowKey: userid, Column: word, Version: MessageID • Value: Auxillary info (like offset of word in message) • Data is stored sorted by <userid, word, messageID>: User1:hi:17->offset1 Can efficiently handle queries like: User1:hi:16->offset2 User1:hello:16->offset3 - Get top N messageIDs for a User1:hello:2->offset4 specific user & word ... User2:.... - Typeahead query: for a given user, User2:... get words that match a prefix ...
  • 15. HBase System Overview Database Layer HBASE Master Backup Master Region Region Region ... Server Server Server Coordination Service Storage Layer HDFS Zookeeper Quorum Namenode Secondary Namenode ZK ZK ... Peer Peer Datanode Datanode Datanode ...
  • 16. HBase Overview HBASE Region Server .... Region #2 Region #1 .... ColumnFamily #2 ColumnFamily #1 Memstore (in memory data structure) HFiles (in HDFS) flush Write Ahead Log ( in HDFS)
  • 17. HBase Overview • Very good at random reads/writes • Write path • Sequential write/sync to commit log • update memstore • Read path • Lookup memstore & persistent HFiles • HFile data is sorted and has a block index for efficient retrieval • Background chores • Flushes (memstore -> HFile) • Compactions (group of HFiles merged into one)
  • 18. Why HBase? Performance is great, but what else…
  • 19. Horizontal scalability ▪ HBase & HDFS are elastic by design ▪ Multiple table shards (regions) per physical server ▪ On node additions ▪ Load balancer automatically reassigns shards from overloaded nodes to new nodes ▪ Because filesystem underneath is itself distributed, data for reassigned regions is instantly servable from the new nodes. ▪ Regions can be dynamically split into smaller regions. ▪ Pre-sharding is not necessary ▪ Splits are near instantaneous!
  • 20. Automatic Failover ▪ Node failures automatically detected by HBase Master ▪ Regions on failed node are distributed evenly among surviving nodes. ▪ Multiple regions/server model avoids need for substantial overprovisioning ▪ HBase Master failover ▪ 1 active, rest standby ▪ When active master fails, a standby automatically takes over
  • 21. HBase uses HDFS We get the benefits of HDFS as a storage system for free ▪ Fault tolerance (block level replication for redundancy) ▪ Scalability ▪ End-to-end checksums to detect and recover from corruptions ▪ Map Reduce for large scale data processing ▪ HDFS already battle tested inside Facebook ▪ running petabyte scale clusters ▪ lot of in-house development and operational experience
  • 22. Simpler Consistency Model ▪ HBase’s strong consistency model ▪ simpler for a wide variety of applications to deal with ▪ client gets same answer no matter which replica data is read from ▪ Eventual consistency: tricky for applications fronted by a cache ▪ replicas may heal eventually during failures ▪ but stale data could remain stuck in cache
  • 23. Typical Cluster Layout ▪ Multiple clusters/cells for messaging ▪ 20 servers/rack; 5 or more racks per cluster ▪ Controllers (master/Zookeeper) spread across racks ZooKeeper Peer ZooKeeper Peer ZooKeeper Peer ZooKeeper Peer ZooKeeper Peer HDFS Namenode Backup Namenode Job Tracker Hbase Master Backup Master Region Server Region Server Region Server Region Server Region Server Data Node Data Node Data Node Data Node Data Node Task Tracker Task Tracker Task Tracker Task Tracker Task Tracker 19x... 19x... 19x... 19x... 19x... Region Server Region Server Region Server Region Server Region Server Data Node Data Node Data Node Data Node Data Node Task Tracker Task Tracker Task Tracker Task Tracker Task Tracker Rack #1 Rack #2 Rack #3 Rack #4 Rack #5
  • 26. Goal of Zero Data Loss/Correctness ▪ sync support added to hadoop-20 branch ▪ for keeping transaction log (WAL) in HDFS ▪ to guarantee durability of transactions ▪ Row-level ACID compliance ▪ Enhanced HDFS’s Block Placement Policy: ▪ Original: rack aware, but minimally constrained ▪ Now: Placement of replicas constrained to configurable node groups ▪ Result: Data loss probability reduced by orders of magnitude
  • 27. Availability/Stability improvements ▪ HBase master rewrite- region assignments using ZK ▪ Rolling Restarts – doing software upgrades without a downtime ▪ Interrupt Compactions – prioritize availability over minor perf gains ▪ Timeouts on client-server RPCs ▪ Staggered major compaction to avoid compaction storms
  • 28. Performance Improvements ▪ Compactions ▪ critical for read performance ▪ Improved compaction algo ▪ delete/TTL/overwrite processing in minor compactions ▪ Read optimizations: ▪ Seek optimizations for rows with large number of cells ▪ Bloom filters to minimize HFile lookups ▪ Timerange hints on HFiles (great for temporal data) ▪ Improved handling of compressed HFiles
  • 29. Operational Experiences ▪ Darklaunch: ▪ shadow traffic on test clusters for continuous, at scale testing ▪ experiment/tweak knobs ▪ simulate failures, test rolling upgrades ▪ Constant (pre-sharding) region count & controlled rolling splits ▪ Administrative tools and monitoring ▪ Alerts (HBCK, memory alerts, perf alerts, health alerts) ▪ auto detecting/decommissioning misbehaving machines ▪ Dashboards ▪ Application level backup/recovery pipeline
  • 30. Working within the Apache community ▪ Growing with the community ▪ Started with a stable, healthy project ▪ In house expertise in both HDFS and HBase ▪ Increasing community involvement ▪ Undertook massive feature improvements with community help ▪ HDFS 0.20-append branch ▪ HBase Master rewrite ▪ Continually interacting with the community to identify and fix issues ▪ e.g., large responses (2GB RPC)
  • 31. Data migration Another place we used HBase heavily…
  • 32. Move messaging data from MySQL to HBase
  • 33. Move messaging data from MySQL to HBase ▪ In MySQL, inbox data was kept normalized ▪ user’s messages are stored across many different machines ▪ Migrating a user is basically one big join across tables spread over many different machines ▪ Multiple terabytes of data (for over 500M users) ▪ Cannot pound 1000s of production UDBs to migrate users
  • 34. How we migrated ▪ Periodically, get a full export of all the users’ inbox data in MySQL ▪ And, use bulk loader to import the above into a migration HBase cluster ▪ To migrate users: ▪ Since users may continue to receive messages during migration: ▪ double-write (to old and new system) during the migration period ▪ Get a list of all recent messages (since last MySQL export) for the user ▪ Load new messages into the migration HBase cluster ▪ Perform the join operations to generate the new data ▪ Export it and upload into the final cluster
  • 36. Facebook Insights Goes Real-Time ▪ Recently launched real-time analytics for social plugins on top of HBase ▪ Publishers get real-time distribution/engagement metrics: ▪ # of impressions, likes ▪ analytics by ▪ Domain, URL, demographics ▪ Over various time periods (the last hour, day, all-time) ▪ Makes use of HBase capabilities like: ▪ Efficient counters (read-modify-write increment operations) ▪ TTL for purging old data
  • 37. Future Work It is still early days…! ▪ Namenode HA (AvatarNode) ▪ Fast hot-backups (Export/Import) ▪ Online schema & config changes ▪ Running HBase as a service (multi-tenancy) ▪ Features (like secondary indices, batching hybrid mutations) ▪ Cross-DC replication ▪ Lot more performance/availability improvements
  • 39. 杭州站 · 2011年10月20日~22日 www.qconhangzhou.com(6月启动) QCon北京站官方网站和资料下载 www.qconbeijing.com