Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3341301.3359643acmconferencesArticle/Chapter ViewAbstractPublication PagessospConference Proceedingsconference-collections
research-article
Public Access

Gerenuk: thin computation over big native data using speculative program transformation

Published: 27 October 2019 Publication History

Abstract

Big Data systems are typically implemented in object-oriented languages such as Java and Scala due to the quick development cycle they provide. These systems are executed on top of a managed runtime such as the Java Virtual Machine (JVM), which requires each data item to be represented as an object before it can be processed. This representation is the direct cause of many kinds of severe inefficiencies.
We developed Gerenuk, a compiler and runtime that aims to enable a JVM-based data-parallel system to achieve near-native efficiency by transforming a set of statements in the system for direct execution over inlined native bytes. The key insight leading to Gerenuk's success is two-fold: (1) analytics workloads often use immutable and confined data types. If we speculatively optimize the system and user code with this assumption, the transformation can be made tractable. (2) The flow of data starts at a deserialization point where objects are created from a sequence of native bytes and ends at a serialization point where they are turned back into a byte sequence to be sent to the disk or network. This flow naturally defines a speculative execution region (SER) to be transformed. Gerenuk compiles a SER speculatively into a version that can operate directly over native bytes that come from the disk or network. The Gerenuk runtime aborts the SER execution upon violations of the immutability and confinement assumption and switches to the slow path by deserializing the bytes and re-executing the original SER. Our evaluation on Spark and Hadoop demonstrates promising results.

References

[1]
2006. Soot Framework. http://www.sable.mcgill.ca/soot.
[2]
2012. Join operation with MapReduce. https://stackoverflow.com/questions/4053857.
[3]
2015. Active/Inactive Users. https://stackoverflow.com/questions/49442420.
[4]
2015. Count Number of Posts. https://stackoverflow.com/questions/39030644.
[5]
2015. Error in Computing Frequencies. http://stackoverflow.com/questions/23042829.
[6]
2015. Join to Filer Spams. https://stackoverflow.com/questions/29622750.
[7]
2015. The Performance Comparison between In-Mapper Combiner and Regular Combiner. http://stackoverflow.com/questions/10925840.
[8]
2015. User Activity. https://stackoverflow.com/questions/33411920.
[9]
Foto N. Afrati and Jeffrey D. Ullman. 2010. Optimizing joins in a map-reduce environment. In EDBT. 99--110.
[10]
Parag Agrawal, Daniel Kifer, and Christopher Olston. 2008. Scheduling shared scans of large data files. Proceedings of VLDB Endow. 1, 1 (2008), 958--969.
[11]
Faraz Ahmad, Srimat T. Chakradhar, Anand Raghunathan, and T. N. Vijaykumar. 2014. ShuffleWatcher: Shuffle-aware Scheduling in Multi-tenant MapReduce Clusters. In USENIX ATC. USENIX Association, 1--13.
[12]
Apache 2017. Hadoop: Open-source implementation of MapReduce. http://hadoop.apache.org.
[13]
Apache 2017. The Hive Project. http://hive.apache.org.
[14]
Apache Flink 2017. Apache Flink. http://flink.apache.org/.
[15]
Lars Backstrom, Dan Huttenlocher, Jon Kleinberg, and Xiangyang Lan. 2006. Group Formation in Large Social Networks: Membership, Growth, and Evolution. In KDD. 44--54.
[16]
B. Blanchet. 1999. Escape Analysis for Object-Oriented Languages. Applications to Java. In OOPSLA. 20--34.
[17]
Paolo Boldi and Sebastiano Vigna. 2004. The WebGraph Framework I: Compression Techniques. In WWW. 595--601.
[18]
Vinayak R. Borkar, Michael J. Carey, Raman Grover, Nicola Onose, and Rares Vernica. 2011. Hyracks: A flexible and extensible foundation for data-intensive computing. In ICDE. 1151--1162.
[19]
Yingyi Bu, Vinayak Borkar, Guoqing Xu, and Michael J. Carey. 2013. A Bloat-Aware Design for Big Data Applications. In ISMM. 119--130.
[20]
Ronnie Chaiken, Bob Jenkins, Per-Ake Larson, Bill Ramsey, Darren Shakib, Simon Weaver, and Jingren Zhou. 2008. SCOPE: easy and efficient parallel processing of massive data sets. PVLDB 1, 2 (2008), 1265--1276.
[21]
Ronnie Chaiken, Bob Jenkins, Per-Ake Larson, Bill Ramsey, Darren Shakib, Simon Weaver, and Jingren Zhou. 2008. SCOPE: easy and efficient parallel processing of massive data sets. Proc. VLDB Endow. 1, 2 (2008), 1265--1276.
[22]
Craig Chambers, Ashish Raniwala, Frances Perry, Stephen Adams, Robert R. Henry, Robert Bradshaw, and Nathan Weizenbaum. 2010. FlumeJava: easy, efficient data-parallel pipelines. In PLDI. 363--375.
[23]
J. Choi, M. Gupta, M. Serrano, V. Sreedhar, and S. Midkiff. 1999. Escape Analysis for Java. In OOPSLA. 1--19.
[24]
Tyson Condie, Neil Conway, Peter Alvaro, Joseph M. Hellerstein, Khaled Elmeleegy, and Russell Sears. 2010. MapReduce online. In NSDI. 21--21.
[25]
Henggang Cui, James Cipar, Qirong Ho, Jin Kyu Kim, Seunghak Lee, Abhimanu Kumar, Jinliang Wei, Wei Dai, Gregory R. Ganger, Phillip B. Gibbons, Garth A. Gibson, and Eric P. Xing. 2014. Exploiting Bounded Staleness to Speed Up Big Data Analytics. 37--48.
[26]
Jeffrey Dean and Sanjay Ghemawat. 2008. MapReduce: Simplified data processing on large clusters. Commun. ACM 51, 1 (2008), 107--113.
[27]
Jens Dittrich, Jorge-Arnulfo Quiané-Ruiz, Alekh Jindal, Yagiz Kargin, Vinay Setty, and Jörg Schad. 2010. Hadoop++: making a yellow elephant run like a cheetah (without it even noticing). Proceedings of VLDB Endow. 3 (2010), 515--529.
[28]
Julian Dolby and Andrew Chien. 2000. An automatic object inlining optimization and its evaluation. In PLDI. 345--357.
[29]
Gregory Essertel, Ruby Tahboub, James Decker, Kevin Brown, Kunle Olukotun, and Tiark Rompf. 2018. Flare: Optimizing Apache Spark with Native Compilation for Scale-Up Architectures and Medium-Size Data. In OSDI. 799--815.
[30]
Lu Fang, Khanh Nguyen, Guoqing Xu, Brian Demsky, and Shan Lu. 2015. Interruptible Tasks: Treating Memory Pressure As Interrupts for Highly Scalable Data-Parallel Programs. In SOSP. 394--409.
[31]
Raul Castro Fernandez, Matteo Migliavacca, Evangelia Kalyvianaki, and Peter Pietzuch. 2014. Making State Explicit for Imperative Big Data Processing. 49--60.
[32]
D. Gay and B. Steensgaard. 2000. Fast Escape Analysis and Stack Allocation for Object-Based Programs. In CC. 82--93.
[33]
Ovidiu Gheorghioiu, Alexandru Salcianu, and Martin Rinard. 2003. Interprocedural compatibility analysis for static object preallocation. In POPL. 273--284.
[34]
Ionel Gog, Jana Giceva, Malte Schwarzkopf, Kapil Vaswani, Dimitrios Vytiniotis, Ganesan Ramalingam, Manuel Costa, Derek G. Murray, Steven Hand, and Michael Isard. 2015. Broom: Sweeping Out Garbage Collection from Big Data Systems. In HotOS.
[35]
Joseph E. Gonzalez, Reynold S. Xin, Ankur Dave, Daniel Crankshaw, Michael J. Franklin, and Ion Stoica. 2014. GraphX: Graph Processing in a Distributed Dataflow Framework. In OSDI. 599--613.
[36]
Google. 2017. Orkut social network. http://snap.stanford.edu/data/com-Orkut.html.
[37]
Zhenyu Guo, Xuepeng Fan, Rishan Chen, Jiaxing Zhang, Hucheng Zhou, Sean McDirmid, Chang Liu, Wei Lin, Jingren Zhou, and Lidong Zhou. 2012. Spotting code optimizations in data-parallel pipelines through PeriSCOPE. In OSDI. 121--133.
[38]
Samuel Z. Guyer, Kathryn S. McKinley, and Daniel Frampton. 2006. Free-Me: a static analysis for automatic individual object reclamation. In PLDI. 364--375.
[39]
UC Irvine. 2014. Hyracks: A data parallel platform. http://code.google.com/p/hyracks/.
[40]
Michael Isard, Mihai Budiu, Yuan Yu, Andrew Birrell, and Dennis Fetterly. 2007. Dryad: distributed data-parallel programs from sequential building blocks. In EuroSys. 59--72.
[41]
Kryo 2017. The Kryo serializer. https://github.com/EsotericSoftware/kryo.
[42]
Haewoon Kwak, Changhyun Lee, Hosung Park, and Sue Moon. 2010. What is Twitter, a Social Network or a News Media?. In WWW. 591--600.
[43]
Aapo Kyrola, Guy Blelloch, and Carlos Guestrin. 2012. GraphChi: Large-Scale Graph Computation on Just a PC. In OSDI. 31--46.
[44]
Chris Lattner. 2005. Macroscopic Data Structure Analysis and Optimization. Ph.D. Dissertation. University of Illinois at Urbana-Champaign.
[45]
Chris Lattner and Vikram Adve. 2005. Automatic pool allocation: improving performance by controlling data structure layout in the heap. In PLDI. 129--142.
[46]
Chris Lattner, Andrew Lenharth, and Vikram Adve. 2007. Making Context-Sensitive Points-to Analysis with Heap Cloning Practical For The Real World. In PLDI. 278--289.
[47]
Rubao Lee, Tian Luo, Yin Huai, Fusheng Wang, Yongqiang He, and Xiaodong Zhang. 2011. YSmart: Yet Another SQL-to-MapReduce Translator. In ICDCS. 25--36.
[48]
Ondřej Lhoták and Laurie Hendren. 2003. Scaling Java Points-to Analysis Using SPARK. In CC. 153--169.
[49]
Ondrej Lhotak and Laurie Hendren. 2005. Run-time evaluation of opportunities for object inlining in Java. Concurrency and Computation: Practice and Experience 17, 5-6 (2005), 515--537.
[50]
Lu Lu, Xuanhua Shi, Yongluan Zhou, Xiong Zhang, Hai Jin, Cheng Pei, Ligang He, and Yuanzhen Geng. 2016. Lifetime-based Memory Management for Distributed Data Processing Systems. Proc. VLDB Endow. 9, 12 (2016), 936--947.
[51]
Martin Maas, Tim Harris, Krste Asanović, and John Kubiatowicz. 2015. Trash Day: Coordinating Garbage Collection in Distributed Systems. In HotOS.
[52]
Martin Maas, Tim Harris, Krste Asanović, and John Kubiatowicz. 2016. Taurus: A Holistic Language Runtime System for Coordinating Distributed Managed-Language Applications. In ASPLOS. 457--471.
[53]
Derek Gordon Murray, Michael Isard, and Yuan Yu. 2011. Steno: automatic optimization of declarative queries. In PLDI. 121--131.
[54]
Derek G. Murray, Frank McSherry, Rebecca Isaacs, Michael Isard, Paul Barham, and Martin Abadi. 2013. Naiad: A Timely Dataflow System. In SOSP. 439--455.
[55]
Jacob Nelson, Brandon Holt, Brandon Myers, Preston Briggs, Luis Ceze, Simon Kahan, and Mark Oskin. 2015. Latency-tolerant Software Distributed Shared Memory. In USENIX ATC. 291--305.
[56]
Khanh Nguyen, Lu Fang, Christian Navasca, Guoqing Xu, Brian Demsky, and Shan Lu. 2018. Skyway: Connecting Managed Heaps in Distributed Big Data Systems. In ASPLOS. 56--69.
[57]
Khanh Nguyen, Lu Fang, Guoqing Xu, Brian Demsky, Shan Lu, Sanazsadat Alamian, and Onur Mutlu. 2016. Yak: A High-Performance Big-Data-Friendly Garbage Collector. In OSDI. 349--365.
[58]
Khanh Nguyen, Kai Wang, Yingyi Bu, Lu Fang, Jianfei Hu, and Guoqing Xu. 2015. Facade: A compiler and runtime for (almost) object-bounded big data applications. In ASPLOS. 675--690.
[59]
Tomasz Nykiel, Michalis Potamias, Chaitanya Mishra, George Kollios, and Nick Koudas. 2010. MRShare: sharing across multiple queries in MapReduce. Proceedings of VLDB Endow. 3, 1-2 (2010), 494--505.
[60]
Nigini Oliveira, Michael Muller, Nazareno Andrade, and Katharina Reinecke. 2018. The Exchange in StackExchange: Divergences Between StackOverflow and Its Culturally Diverse Participants. Proc. ACM Hum.-Comput. Interact. 2, CSCW, Article 130 (Nov. 2018), 22 pages.
[61]
Christopher Olston, Benjamin Reed, Adam Silberstein, and Utkarsh Srivastava. 2008. Automatic optimization of parallel dataflow programs. In USENIX ATC. 267--273.
[62]
Christopher Olston, Benjamin Reed, Utkarsh Srivastava, Ravi Kumar, and Andrew Tomkins. 2008. Pig latin: a not-so-foreign language for data processing. In SIGMOD. 1099--1110.
[63]
Rob Pike, Sean Dorward, Robert Griesemer, and Sean Quinlan. 2005. Interpreting the data: Parallel analysis with Sawzall. Sci. Program. 13, 4 (2005), 277--298.
[64]
Douglas Santry and Kaladhar Voruganti. 2014. Violet: A Storage Stack for IOPS/Capacity Bifurcated Storage Environments. 13--24.
[65]
Yefim Shuf, Manish Gupta, Rajesh Bordawekar, and Jaswinder Pal Singh. 2002. Exploiting Prolific Types for Memory Management and Optimizations. In POPL. 295--306.
[66]
Ashish Thusoo, Joydeep Sen Sarma, Namit Jain, Zheng Shao, Prasad Chakka, Suresh Anthony, Hao Liu, Pete Wyckof, and Raghotham Murthy. 2009. Hive: a warehousing solution over a map-reduce framework. Proc. VLDB Endow. 2, 2 (2009), 1626--1629.
[67]
Ashish Thusoo, Joydeep Sen Sarma, Namit Jain, Zheng Shao, Prasad Chakka, Ning Zhang, Suresh Antony, Hao Liu, and Raghotham Murthy. 2010. Hive - a petabyte scale data warehouse using Hadoop. In ICDE. 996--1005.
[68]
J. Whaley and M. Rinard. 1999. Compositional Pointer and Escape Analysis for Java Programs. In OOPSLA. 187--206.
[69]
Guoqing Xu, Dacong Yan, and Atanas Rountev. 2012. Static Detection of Loop-Invariant Data Structures. In ECOOP. 738--763.
[70]
Guoqing Harry Xu, Margus Veanes, Michael Barnett, Madan Musuvathi, Todd Mytkowicz, Ben Zorn, Huan He, and Haibo Lin. 2019. Niijima: Sound and Automated Computation Consolidation for Efficient Multilingual Data-Parallel Pipelines. In SOSP.
[71]
Hung-chih Yang, Ali Dasdan, Ruey-Lung Hsiao, and D. Stott Parker. 2007. Map-reduce-merge: simplified relational data processing on large clusters. In SIGMOD. 1029--1040.
[72]
Yuan Yu, Michael Isard, Dennis Fetterly, Mihai Budiu, Úlfar Erlingsson, Pradeep Kumar Gunda, and Jon Currey. 2008. DryadLINQ: a system for general-purpose distributed data-parallel computing using a high-level language. In OSDI. 1--14.
[73]
Matei Zaharia, Mosharaf Chowdhury, Michael J. Franklin, Scott Shenker, and Ion Stoica. 2010. Spark: Cluster computing with working sets. In HotCloud.
[74]
Jingren Zhou, Per-Ake Larson, and Ronnie Chaiken. 2010. Incorporating partitioning and parallel plans into the SCOPE optimizer. In ICDE. 1060--1071.

Cited By

View all
  • (2023)Improving Oracle-Guided Inductive Synthesis by Efficient Question SelectionProceedings of the ACM on Programming Languages10.1145/35860557:OOPSLA1(819-847)Online publication date: 6-Apr-2023
  • (2023)Pushing the Limit of 1-Minimality of Language-Agnostic Program ReductionProceedings of the ACM on Programming Languages10.1145/35860497:OOPSLA1(636-664)Online publication date: 6-Apr-2023
  • (2023)Automated Translation of Functional Big Data Queries to SQLProceedings of the ACM on Programming Languages10.1145/35860477:OOPSLA1(580-608)Online publication date: 6-Apr-2023
  • Show More Cited By

Index Terms

  1. Gerenuk: thin computation over big native data using speculative program transformation

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image ACM Conferences
      SOSP '19: Proceedings of the 27th ACM Symposium on Operating Systems Principles
      October 2019
      615 pages
      ISBN:9781450368735
      DOI:10.1145/3341301
      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

      Sponsors

      In-Cooperation

      • USENIX Assoc: USENIX Assoc

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 27 October 2019

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. dataflow system
      2. runtime system
      3. speculative transformation
      4. static analysis

      Qualifiers

      • Research-article

      Funding Sources

      Conference

      SOSP '19
      Sponsor:
      SOSP '19: ACM SIGOPS 27th Symposium on Operating Systems Principles
      October 27 - 30, 2019
      Ontario, Huntsville, Canada

      Acceptance Rates

      Overall Acceptance Rate 131 of 716 submissions, 18%

      Upcoming Conference

      SOSP '24

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)102
      • Downloads (Last 6 weeks)15
      Reflects downloads up to 18 Aug 2024

      Other Metrics

      Citations

      Cited By

      View all
      • (2023)Improving Oracle-Guided Inductive Synthesis by Efficient Question SelectionProceedings of the ACM on Programming Languages10.1145/35860557:OOPSLA1(819-847)Online publication date: 6-Apr-2023
      • (2023)Pushing the Limit of 1-Minimality of Language-Agnostic Program ReductionProceedings of the ACM on Programming Languages10.1145/35860497:OOPSLA1(636-664)Online publication date: 6-Apr-2023
      • (2023)Automated Translation of Functional Big Data Queries to SQLProceedings of the ACM on Programming Languages10.1145/35860477:OOPSLA1(580-608)Online publication date: 6-Apr-2023
      • (2023)Deep Learning Robustness Verification for Few-Pixel AttacksProceedings of the ACM on Programming Languages10.1145/35860427:OOPSLA1(434-461)Online publication date: 6-Apr-2023
      • (2023)Compositional Security Definitions for Higher-Order Where DeclassificationProceedings of the ACM on Programming Languages10.1145/35860417:OOPSLA1(406-433)Online publication date: 6-Apr-2023
      • (2023)A Verification Methodology for the Arm® Confidential Computing Architecture: From a Secure Specification to Safe ImplementationsProceedings of the ACM on Programming Languages10.1145/35860407:OOPSLA1(376-405)Online publication date: 6-Apr-2023
      • (2023)Enabling Bounded Verification of Doubly-Unbounded Distributed Agreement-Based Systems via Bounded RegionsProceedings of the ACM on Programming Languages10.1145/35860337:OOPSLA1(172-200)Online publication date: 6-Apr-2023
      • (2023)Generating Proof Certificates for a Language-Agnostic Deductive Program VerifierProceedings of the ACM on Programming Languages10.1145/35860297:OOPSLA1(56-84)Online publication date: 6-Apr-2023
      • (2023)Solving Conditional Linear Recurrences for Program Verification: The Periodic CaseProceedings of the ACM on Programming Languages10.1145/35860287:OOPSLA1(28-55)Online publication date: 6-Apr-2023
      • (2023)Accelerating Fuzzing through Prefix-Guided ExecutionProceedings of the ACM on Programming Languages10.1145/35860277:OOPSLA1(1-27)Online publication date: 6-Apr-2023
      • Show More Cited By

      View Options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Get Access

      Login options

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media