SlideShare a Scribd company logo
Cascading  Webinar
HomeAway
The world leader for vacation rentals
Over  a  million  listings  
worldwide  and  growing!
Hadoop  is  changing
You  …
● Need  faster  ROI
● Need  compelling
use  cases
● Need  more  with  less
● Need  to  leverage  existing  
talent
Harnessing  the  power  of  hadoop
● MapReduce
○ Divides  into  smaller  problems;;
Assemble  smaller  answers  into  the  
answers  to  the  bigger  problems.
● MapReduce
○ Can  be  hard  to  learn
○ Verbose;;  Tedious
○ Historically  slow
● New  Engine  Options
○ Apache  Tez
○ Apache  Spark
○ Apache  Flink
Problem  at  HomeAway
Cascading
Speaker  Panel
• Austin  Tobin  -­ Software  Engineer
File  Storage  Quotas  ::  Introduction  to  Cascading
• Michael  McAllister  -­ Staff  Data  Warehouse  Engineer
Supplier  Analytics  ::  Phoenix,  HBase  and  Driven
• Francois  Forster  -­ Architect
User  Analytics  ::  A/B  Test  Readouts
File  Storage  Quotas  ::  Introduction  to  Cascading
©  Copyright  2015  HomeAway,  Inc.
Introduction
1. What  is  it  we  are  trying  to  solve
2. What  is  Cascading
3. How  we  applied  Cascading  to  solve  this  problem
©  Copyright  2015  HomeAway,  Inc.
What  is  Mesa?  What  is  the  problem  with  Mesa?
▪Mesa  is  an  internal  file  system
▪Divided  up  into  buckets,  each  bucket  has  a  quota
▪Each  bucket  maintains  a  statistics  file,  locked  on  write  and  delete
▪As  usage  increases,  this  locking  creates  performance  bottlenecks
9
• Kafka
• High  performance  messaging  technology
• Used  to  insert  high  volume  of  consistent  log  messages  very  quickly
• Avro
• Compressible  file-­format.  Binarized,  highly  portable.
• Hadoop
• Distributed  file  store  and  processing  framework
• enables  near  infinite  horizontal  scalability  for  storage  and  processing
• Cascading...
Key  Technologies
Cascading
• Taps  can  be  either  sources  or  sinks
• Sources  are  data  inputs,  and  sinks  are  data  outputs
• They  require  a  scheme,  which  is  a  set  of  column  names  (tuples),  and  a  text-­
delimiter
• The  sink  of  one  flow  can  be  the  source  of  another  flow.
• Pipes
• Abstractions  to  perform  functions  or  transformations
• Functions  include  split,  merge,  expression,  and  filter
• The  output  of  one  pipe  may  be  another  pipe,  
• chain  together  to  perform  sequences  of  transformations  
• Flows
• Connect  sources  to  sinks  via  pipes  into  a  flow
• Can  connect  multiple  flows  together  into
a  CASCADE
CASCADING
Cascading
The  Cascading  Archetype  is  project  which  makes  it  very  easy  to  get  started  with  cascading  
applications.  Currently  an  internal  project,  which  uses  Spring  to  make  defining  taps  and  flows  
very  easy.
1. Define your Taps
2. Build your Flows.
3. Cascade!
Cascading  Archetype
©  Copyright  2015  HomeAway,  Inc.
Hadoop
Log  Events  
Mesa  Stats  Job
Mesa  Metadata
Old  Catalog  +  
Log  EventsNew  Catalog  
+  Statistics
Mesa
Mesa  Stats  -­ The  Big  Picture
OLD
CATALOG
TAP
EVENT  TAP
Clean  
Events  
Pipe
Build  
New  
Catalog  
Pipe
NEW  CATALOG  
SINK
Flow  Def  -­ Create  the  New  Catalog
Cascading
Old  Catalog  Tap
Filter  Non  
Mesa  Events
Split  the  
Message  
Field  into  
multiple    
Fields
Remove  
Extraneous  
Fields
Pipe  -­ Clean  the  Events  
Cascading
Pipe  -­ Clean  the  Events
Cleaned  
Event  Pipe
Catalog  Pipe
Sort  Events  
by  Latest  
Desc
Take  
Top  1  
Event
Remove  
Deleted  
Events
Merge  Events  
With  Catalog  
Pipe
Pipe  -­ Build  the  New  Catalog
Cascading
Pipe  -­ Build  the  Catalog
Cascading
Update  Catalog  Flow  Def  -­ Revisited
NEW  CATALOG  TAP MESA  QUOTA  
TAP
Sum  File  
Sizes  Per  
Bucket
Merge  
on  
Bucket  
Names
Divide  
Bucket  
File  
Sizes  By  
Quota
STATISTICS  SINK
Flow  Def  -­ Calculate  the  
Statistics
Cascading
Pipe  -­ Sum  and  Merge  
Cascading
Flow  Def  -­ Calculate  the  Statistics  
Cascading
Flow  Def  -­ Statistics  Revisited
Thank  you  all!
• Cascading  For  the  Impatient
Supplier  Analytics  ::  Phoenix,  HBase  and  Driven
The  goal
● The  goal:  Expose  our  EDW  analytics  to  suppliers.
● But  ...
○ More  users  of  analytics  =  requirement  to  
horizontally  scale
○ SQL  Server  EDW  +  Managed  Storage  =  
Expensive  to  horizontally  scale
The  solution
●Use  Cascading  with  HBase  /  Phoenix
○Cascading  for  ETL
○Apache  Phoenix  as  an  abstraction  layer  over  
Hbase
○HomeAway  created  Cascading  Phoenix  Tap  to  
simplify  use  of  Phoenix.
What  does  our  Cascading  ETL  look  like?
● Daily  jobs  scheduled  in  oozie
● Runs  Cascading  ETL  developed  as  Java  programs
● Examples:-­
○ETL  listings  that  have  changed  since  yesterday  from  
EDW  to  HBase
○ETL  listing  metrics  from  current  periodic  snapshot  fact  
partition  over  to  HBase.  
○ETL  market  group  metrics  from  current  periodic  
snapshot  fact  partition  over  to  HBase
What  does  our  Cascading  ETL  look  like?
● Extract  -­ SQL  statement  issued  against  SQL  Server  JDBC  
tap
● Transform
○ Simple  -­ do  it  in  your  SQL  statement
○ Complex  -­ do  it  in  your  pipes  -­ filters,  cogroups,  user  
defined  functions,  etc
● Load  -­ sink  tap  bound  to  Apache  Phoenix  Cascading  tap
○ This  tap  is  in  essence  a  HBase  table
How  Driven  simplifies  using  Cascading
How  Driven  simplifies  using  Cascading
How  Driven  simplifies  using  Cascading
How  Driven  simplifies  using  Cascading
A  real  simple  Cascading  flow  definition
User  Analytics  ::  A/B  Test  Readouts
A/B  Test  Readouts
• We’re  always  running  many  A/B  tests  concurrently  on  our  sites
• Daily  Cascading  Job  performs  A/B  test  readout
– Readout  for  all  running  A/B  tests  at  once
– Rolling  3-­week
• Sliced  and  diced  by  site,  by  day,  by  test  as  well  as  various  roll  ups
• Multiple  conversion  metrics
• Millions  of  daily  test  exposures  and  conversions
A/B  Test  Readout  Flow
Not  The  Full  Cascade!
A/B  Test  Readout  Cascade
• Includes  Daily  Intermediate  Files
–cascade.setFlowSkipStrategy(new FlowSkipIfSinkExists());
Using  Driven  For  Performance  Tuning
• Driven  makes  it  easy  to  look  at  the  time  it  takes  to  execute
– Including  the  number  of  mappers  or  reducers  
– Increase  if  needed:
pipe.getStepConfigDef().setProperty("mapreduce.job.reduces","20");
Cascading  Tips
• Store  intermediate  files  to  avoid  re-­processing  the  same  
data  over  and  over  again
–When  running  frequent  jobs  on  rolling  window
• Breakup  your  complex  flows
• Use  Driven  to  tweak  #  of  reducers  at  various  points
Deployment  /  Operational  Issues
HomeAway  CI/CD  Pipeline
cascading-­archetype
job-­A
job-­B
oozie-­job-­deployer
HomeAway
#wholevacation
Thank  you!

More Related Content

PDF
Spark as part of a Hybrid RDBMS Architecture-John Leach Cofounder Splice Machine
PPTX
HBaseConEast2016: Splice machine open source rdbms
PPTX
Stinger hadoop summit june 2013
PDF
Scylla Summit 2016: ScyllaDB, Present and Future
PDF
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
PPTX
Big Data Day LA 2015 - Introducing N1QL: SQL for Documents by Jeff Morris of ...
PPTX
Splice Machine Overview
PPTX
Strata feb2013
Spark as part of a Hybrid RDBMS Architecture-John Leach Cofounder Splice Machine
HBaseConEast2016: Splice machine open source rdbms
Stinger hadoop summit june 2013
Scylla Summit 2016: ScyllaDB, Present and Future
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
Big Data Day LA 2015 - Introducing N1QL: SQL for Documents by Jeff Morris of ...
Splice Machine Overview
Strata feb2013

What's hot (20)

PPTX
Hive & HBase for Transaction Processing Hadoop Summit EU Apr 2015
PDF
ApacheCon 2020 - Flink SQL in 2020: Time to show off!
PDF
How to use Hadoop for operational and transactional purposes by RODRIGO MERI...
PPTX
Real time fraud detection at 1+M scale on hadoop stack
PDF
Scylla Summit 2022: Building Zeotap's Privacy Compliant Customer Data Platfor...
PDF
Apache Spark Based Reliable Data Ingestion in Datalake with Gagan Agrawal
PDF
Migrating pipelines into Docker
PPTX
Scylla Summit 2022: Scylla 5.0 New Features, Part 1
PPTX
Scylla Summit 2022: Scylla 5.0 New Features, Part 2
PDF
Large-Scale Stream Processing in the Hadoop Ecosystem
PPTX
Adding ACID Transactions, Inserts, Updates, and Deletes in Apache Hive
PDF
PagerDuty: Span the WAN? Yes you can!
PPTX
Using HBase Co-Processors to Build a Distributed, Transactional RDBMS - Splic...
PDF
Scylla Summit 2022: Migrating SQL Schemas for ScyllaDB: Data Modeling Best Pr...
PPTX
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
PDF
HBaseCon 2013:High-Throughput, Transactional Stream Processing on Apache HBase
PDF
Running Scylla on Kubernetes with Scylla Operator
PPTX
What is Change Data Capture (CDC) and Why is it Important?
PDF
Scylla Summit 2022: How ScyllaDB Powers This Next Tech Cycle
PDF
Spark ai summit_oct_17_2019_kimhammar_jimdowling_v6
Hive & HBase for Transaction Processing Hadoop Summit EU Apr 2015
ApacheCon 2020 - Flink SQL in 2020: Time to show off!
How to use Hadoop for operational and transactional purposes by RODRIGO MERI...
Real time fraud detection at 1+M scale on hadoop stack
Scylla Summit 2022: Building Zeotap's Privacy Compliant Customer Data Platfor...
Apache Spark Based Reliable Data Ingestion in Datalake with Gagan Agrawal
Migrating pipelines into Docker
Scylla Summit 2022: Scylla 5.0 New Features, Part 1
Scylla Summit 2022: Scylla 5.0 New Features, Part 2
Large-Scale Stream Processing in the Hadoop Ecosystem
Adding ACID Transactions, Inserts, Updates, and Deletes in Apache Hive
PagerDuty: Span the WAN? Yes you can!
Using HBase Co-Processors to Build a Distributed, Transactional RDBMS - Splic...
Scylla Summit 2022: Migrating SQL Schemas for ScyllaDB: Data Modeling Best Pr...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
HBaseCon 2013:High-Throughput, Transactional Stream Processing on Apache HBase
Running Scylla on Kubernetes with Scylla Operator
What is Change Data Capture (CDC) and Why is it Important?
Scylla Summit 2022: How ScyllaDB Powers This Next Tech Cycle
Spark ai summit_oct_17_2019_kimhammar_jimdowling_v6
Ad

Similar to Learn from HomeAway Hadoop Development and Operations Best Practices (20)

PPTX
Nosql East October 2009
ODP
Building Complex Data Workflows with Cascading on Hadoop
PPTX
Hadoop and Cascading At AJUG July 2009
PDF
Elasticsearch + Cascading for Scalable Log Processing
PDF
Cascading on starfish
PDF
Cascading 2015 User Survey Results
PDF
Cascading 2015 User Survey Results
PDF
Accelerate Big Data Application Development with Cascading
PPTX
Cascading User Group Meet
PPTX
NoSQL, Hadoop, Cascading June 2010
PDF
Big Data on EC2: Mashing Technology in the Cloud
PDF
Functional programming
 for optimization problems 
in Big Data
PPTX
Faster Workflows, Faster
PDF
Reducing Development Time for Production-Grade Hadoop Applications
PDF
Cascading concurrent yahoo lunch_nlearn
PPTX
Ajug april 2011
PPTX
Introduction to Cascading
PDF
Hybrid my sql_hadoop_datawarehouse
KEY
Processing Big Data
PDF
Boulder/Denver BigData: Cluster Computing with Apache Mesos and Cascading
Nosql East October 2009
Building Complex Data Workflows with Cascading on Hadoop
Hadoop and Cascading At AJUG July 2009
Elasticsearch + Cascading for Scalable Log Processing
Cascading on starfish
Cascading 2015 User Survey Results
Cascading 2015 User Survey Results
Accelerate Big Data Application Development with Cascading
Cascading User Group Meet
NoSQL, Hadoop, Cascading June 2010
Big Data on EC2: Mashing Technology in the Cloud
Functional programming
 for optimization problems 
in Big Data
Faster Workflows, Faster
Reducing Development Time for Production-Grade Hadoop Applications
Cascading concurrent yahoo lunch_nlearn
Ajug april 2011
Introduction to Cascading
Hybrid my sql_hadoop_datawarehouse
Processing Big Data
Boulder/Denver BigData: Cluster Computing with Apache Mesos and Cascading
Ad

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPT
Teaching material agriculture food technology
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Approach and Philosophy of On baking technology
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Encapsulation theory and applications.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Spectral efficient network and resource selection model in 5G networks
Digital-Transformation-Roadmap-for-Companies.pptx
Understanding_Digital_Forensics_Presentation.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Review of recent advances in non-invasive hemoglobin estimation
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Advanced methodologies resolving dimensionality complications for autism neur...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Teaching material agriculture food technology
Chapter 3 Spatial Domain Image Processing.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Approach and Philosophy of On baking technology
NewMind AI Monthly Chronicles - July 2025
Building Integrated photovoltaic BIPV_UPV.pdf
Encapsulation theory and applications.pdf
Unlocking AI with Model Context Protocol (MCP)

Learn from HomeAway Hadoop Development and Operations Best Practices

  • 2. HomeAway The world leader for vacation rentals Over  a  million  listings   worldwide  and  growing!
  • 3. Hadoop  is  changing You  … ● Need  faster  ROI ● Need  compelling use  cases ● Need  more  with  less ● Need  to  leverage  existing   talent
  • 4. Harnessing  the  power  of  hadoop ● MapReduce ○ Divides  into  smaller  problems;; Assemble  smaller  answers  into  the   answers  to  the  bigger  problems. ● MapReduce ○ Can  be  hard  to  learn ○ Verbose;;  Tedious ○ Historically  slow ● New  Engine  Options ○ Apache  Tez ○ Apache  Spark ○ Apache  Flink
  • 6. Speaker  Panel • Austin  Tobin  -­ Software  Engineer File  Storage  Quotas  ::  Introduction  to  Cascading • Michael  McAllister  -­ Staff  Data  Warehouse  Engineer Supplier  Analytics  ::  Phoenix,  HBase  and  Driven • Francois  Forster  -­ Architect User  Analytics  ::  A/B  Test  Readouts
  • 7. File  Storage  Quotas  ::  Introduction  to  Cascading ©  Copyright  2015  HomeAway,  Inc.
  • 8. Introduction 1. What  is  it  we  are  trying  to  solve 2. What  is  Cascading 3. How  we  applied  Cascading  to  solve  this  problem
  • 9. ©  Copyright  2015  HomeAway,  Inc. What  is  Mesa?  What  is  the  problem  with  Mesa? ▪Mesa  is  an  internal  file  system ▪Divided  up  into  buckets,  each  bucket  has  a  quota ▪Each  bucket  maintains  a  statistics  file,  locked  on  write  and  delete ▪As  usage  increases,  this  locking  creates  performance  bottlenecks 9
  • 10. • Kafka • High  performance  messaging  technology • Used  to  insert  high  volume  of  consistent  log  messages  very  quickly • Avro • Compressible  file-­format.  Binarized,  highly  portable. • Hadoop • Distributed  file  store  and  processing  framework • enables  near  infinite  horizontal  scalability  for  storage  and  processing • Cascading... Key  Technologies
  • 11. Cascading • Taps  can  be  either  sources  or  sinks • Sources  are  data  inputs,  and  sinks  are  data  outputs • They  require  a  scheme,  which  is  a  set  of  column  names  (tuples),  and  a  text-­ delimiter • The  sink  of  one  flow  can  be  the  source  of  another  flow. • Pipes • Abstractions  to  perform  functions  or  transformations • Functions  include  split,  merge,  expression,  and  filter • The  output  of  one  pipe  may  be  another  pipe,   • chain  together  to  perform  sequences  of  transformations   • Flows • Connect  sources  to  sinks  via  pipes  into  a  flow • Can  connect  multiple  flows  together  into a  CASCADE CASCADING
  • 12. Cascading The  Cascading  Archetype  is  project  which  makes  it  very  easy  to  get  started  with  cascading   applications.  Currently  an  internal  project,  which  uses  Spring  to  make  defining  taps  and  flows   very  easy. 1. Define your Taps 2. Build your Flows. 3. Cascade! Cascading  Archetype
  • 13. ©  Copyright  2015  HomeAway,  Inc. Hadoop Log  Events   Mesa  Stats  Job Mesa  Metadata Old  Catalog  +   Log  EventsNew  Catalog   +  Statistics Mesa Mesa  Stats  -­ The  Big  Picture
  • 14. OLD CATALOG TAP EVENT  TAP Clean   Events   Pipe Build   New   Catalog   Pipe NEW  CATALOG   SINK Flow  Def  -­ Create  the  New  Catalog
  • 16. Filter  Non   Mesa  Events Split  the   Message   Field  into   multiple     Fields Remove   Extraneous   Fields Pipe  -­ Clean  the  Events  
  • 17. Cascading Pipe  -­ Clean  the  Events
  • 18. Cleaned   Event  Pipe Catalog  Pipe Sort  Events   by  Latest   Desc Take   Top  1   Event Remove   Deleted   Events Merge  Events   With  Catalog   Pipe Pipe  -­ Build  the  New  Catalog
  • 19. Cascading Pipe  -­ Build  the  Catalog
  • 20. Cascading Update  Catalog  Flow  Def  -­ Revisited
  • 21. NEW  CATALOG  TAP MESA  QUOTA   TAP Sum  File   Sizes  Per   Bucket Merge   on   Bucket   Names Divide   Bucket   File   Sizes  By   Quota STATISTICS  SINK Flow  Def  -­ Calculate  the   Statistics
  • 22. Cascading Pipe  -­ Sum  and  Merge  
  • 23. Cascading Flow  Def  -­ Calculate  the  Statistics  
  • 24. Cascading Flow  Def  -­ Statistics  Revisited
  • 25. Thank  you  all! • Cascading  For  the  Impatient
  • 26. Supplier  Analytics  ::  Phoenix,  HBase  and  Driven
  • 27. The  goal ● The  goal:  Expose  our  EDW  analytics  to  suppliers. ● But  ... ○ More  users  of  analytics  =  requirement  to   horizontally  scale ○ SQL  Server  EDW  +  Managed  Storage  =   Expensive  to  horizontally  scale
  • 28. The  solution ●Use  Cascading  with  HBase  /  Phoenix ○Cascading  for  ETL ○Apache  Phoenix  as  an  abstraction  layer  over   Hbase ○HomeAway  created  Cascading  Phoenix  Tap  to   simplify  use  of  Phoenix.
  • 29. What  does  our  Cascading  ETL  look  like? ● Daily  jobs  scheduled  in  oozie ● Runs  Cascading  ETL  developed  as  Java  programs ● Examples:-­ ○ETL  listings  that  have  changed  since  yesterday  from   EDW  to  HBase ○ETL  listing  metrics  from  current  periodic  snapshot  fact   partition  over  to  HBase.   ○ETL  market  group  metrics  from  current  periodic   snapshot  fact  partition  over  to  HBase
  • 30. What  does  our  Cascading  ETL  look  like? ● Extract  -­ SQL  statement  issued  against  SQL  Server  JDBC   tap ● Transform ○ Simple  -­ do  it  in  your  SQL  statement ○ Complex  -­ do  it  in  your  pipes  -­ filters,  cogroups,  user   defined  functions,  etc ● Load  -­ sink  tap  bound  to  Apache  Phoenix  Cascading  tap ○ This  tap  is  in  essence  a  HBase  table
  • 31. How  Driven  simplifies  using  Cascading
  • 32. How  Driven  simplifies  using  Cascading
  • 33. How  Driven  simplifies  using  Cascading
  • 34. How  Driven  simplifies  using  Cascading
  • 35. A  real  simple  Cascading  flow  definition
  • 36. User  Analytics  ::  A/B  Test  Readouts
  • 37. A/B  Test  Readouts • We’re  always  running  many  A/B  tests  concurrently  on  our  sites • Daily  Cascading  Job  performs  A/B  test  readout – Readout  for  all  running  A/B  tests  at  once – Rolling  3-­week • Sliced  and  diced  by  site,  by  day,  by  test  as  well  as  various  roll  ups • Multiple  conversion  metrics • Millions  of  daily  test  exposures  and  conversions
  • 38. A/B  Test  Readout  Flow Not  The  Full  Cascade!
  • 39. A/B  Test  Readout  Cascade • Includes  Daily  Intermediate  Files –cascade.setFlowSkipStrategy(new FlowSkipIfSinkExists());
  • 40. Using  Driven  For  Performance  Tuning • Driven  makes  it  easy  to  look  at  the  time  it  takes  to  execute – Including  the  number  of  mappers  or  reducers   – Increase  if  needed: pipe.getStepConfigDef().setProperty("mapreduce.job.reduces","20");
  • 41. Cascading  Tips • Store  intermediate  files  to  avoid  re-­processing  the  same   data  over  and  over  again –When  running  frequent  jobs  on  rolling  window • Breakup  your  complex  flows • Use  Driven  to  tweak  #  of  reducers  at  various  points