Handling Data Skew for Aggregation in Spark SQL Using Task Stealing
In distributed in-memory computing systems, data distribution has a large impact on performance. Designing a good partition algorithm is difficult and requires users to have adequate prior knowledge of data, which makes data skew common in reality. Traditional approaches to handling data skew by sam...
Gespeichert in:
Veröffentlicht in: | International journal of parallel programming 2020-12, Vol.48 (6), p.941-956 |
---|---|
Hauptverfasser: | , , , |
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
container_end_page | 956 |
---|---|
container_issue | 6 |
container_start_page | 941 |
container_title | International journal of parallel programming |
container_volume | 48 |
creator | He, Zeyu Huang, Qiuli Li, Zhifang Weng, Chuliang |
description | In distributed in-memory computing systems, data distribution has a large impact on performance. Designing a good partition algorithm is difficult and requires users to have adequate prior knowledge of data, which makes data skew common in reality. Traditional approaches to handling data skew by sampling and repartitioning often incur additional overhead. In this paper, we proposed a dynamic execution optimization for the aggregation operator, which is one of the most general and expensive operators in Spark SQL. Our optimization aims to avoid the additional overhead and improve the performance when data skew occurs. The core idea is
task stealing
. Based on the relative size of data partitions, we add two types of tasks, namely
segment tasks
for larger partitions and
stealing tasks
for smaller partitions. In a stage, stealing tasks could actively steal and process data from segment tasks after processing their own. The optimization achieves significant performance improvements from 16% up to 67% on different sizes and distributions of data. Experiments show that involved overhead is minimal and could be negligible. |
doi_str_mv | 10.1007/s10766-020-00657-z |
format | Article |
fullrecord | <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_journals_2845962252</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>2845962252</sourcerecordid><originalsourceid>FETCH-LOGICAL-c319t-d2fbd0de7af7b84685f9afa539976ad178ddfd0957b74ecf3cc07257ff4f81c23</originalsourceid><addsrcrecordid>eNp9kEFLwzAUgIMoOKd_wFPAc_QlbfrS45i6CQORbeeQNUnpNtuZdIj79bZW8Obp8eD73oOPkFsO9xwAHyIHzDIGAhhAJpGdzsiIS0wYZimckxEoJRmmUl2Sqxi3AJCjUiMynZva7qu6pI-mNXS5c5_UN4FOyjK40rRVU9OqpsuDCTu6fFvQdezhlYnd2jrTq9fkwpt9dDe_c0zWz0-r6ZwtXmcv08mCFQnPW2aF31iwDo3HjUozJX1uvJFJnmNmLEdlrbeQS9xg6gqfFAWgkOh96hUvRDImd8PdQ2g-ji62etscQ9291EKlMs-EkD0lBqoITYzBeX0I1bsJX5qD7mPpIZbuYumfWPrUSckgxQ6uSxf-Tv9jfQMZb2yj</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>2845962252</pqid></control><display><type>article</type><title>Handling Data Skew for Aggregation in Spark SQL Using Task Stealing</title><source>SpringerLink Journals - AutoHoldings</source><creator>He, Zeyu ; Huang, Qiuli ; Li, Zhifang ; Weng, Chuliang</creator><creatorcontrib>He, Zeyu ; Huang, Qiuli ; Li, Zhifang ; Weng, Chuliang</creatorcontrib><description>In distributed in-memory computing systems, data distribution has a large impact on performance. Designing a good partition algorithm is difficult and requires users to have adequate prior knowledge of data, which makes data skew common in reality. Traditional approaches to handling data skew by sampling and repartitioning often incur additional overhead. In this paper, we proposed a dynamic execution optimization for the aggregation operator, which is one of the most general and expensive operators in Spark SQL. Our optimization aims to avoid the additional overhead and improve the performance when data skew occurs. The core idea is
task stealing
. Based on the relative size of data partitions, we add two types of tasks, namely
segment tasks
for larger partitions and
stealing tasks
for smaller partitions. In a stage, stealing tasks could actively steal and process data from segment tasks after processing their own. The optimization achieves significant performance improvements from 16% up to 67% on different sizes and distributions of data. Experiments show that involved overhead is minimal and could be negligible.</description><identifier>ISSN: 0885-7458</identifier><identifier>EISSN: 1573-7640</identifier><identifier>DOI: 10.1007/s10766-020-00657-z</identifier><language>eng</language><publisher>New York: Springer US</publisher><subject>2019 ; Algorithms ; Computer Science ; Distributed memory ; Optimization ; Performance enhancement ; Processor Architectures ; Query languages ; Segments ; Software Engineering/Programming and Operating Systems ; Special issue on Network and Parallel Computing for Emerging Architectures and Applications ; Theory of Computation</subject><ispartof>International journal of parallel programming, 2020-12, Vol.48 (6), p.941-956</ispartof><rights>Springer Science+Business Media, LLC, part of Springer Nature 2020</rights><rights>Springer Science+Business Media, LLC, part of Springer Nature 2020.</rights><lds50>peer_reviewed</lds50><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c319t-d2fbd0de7af7b84685f9afa539976ad178ddfd0957b74ecf3cc07257ff4f81c23</citedby><cites>FETCH-LOGICAL-c319t-d2fbd0de7af7b84685f9afa539976ad178ddfd0957b74ecf3cc07257ff4f81c23</cites><orcidid>0000-0001-8017-2344</orcidid></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktopdf>$$Uhttps://link.springer.com/content/pdf/10.1007/s10766-020-00657-z$$EPDF$$P50$$Gspringer$$H</linktopdf><linktohtml>$$Uhttps://link.springer.com/10.1007/s10766-020-00657-z$$EHTML$$P50$$Gspringer$$H</linktohtml><link.rule.ids>314,776,780,27901,27902,41464,42533,51294</link.rule.ids></links><search><creatorcontrib>He, Zeyu</creatorcontrib><creatorcontrib>Huang, Qiuli</creatorcontrib><creatorcontrib>Li, Zhifang</creatorcontrib><creatorcontrib>Weng, Chuliang</creatorcontrib><title>Handling Data Skew for Aggregation in Spark SQL Using Task Stealing</title><title>International journal of parallel programming</title><addtitle>Int J Parallel Prog</addtitle><description>In distributed in-memory computing systems, data distribution has a large impact on performance. Designing a good partition algorithm is difficult and requires users to have adequate prior knowledge of data, which makes data skew common in reality. Traditional approaches to handling data skew by sampling and repartitioning often incur additional overhead. In this paper, we proposed a dynamic execution optimization for the aggregation operator, which is one of the most general and expensive operators in Spark SQL. Our optimization aims to avoid the additional overhead and improve the performance when data skew occurs. The core idea is
task stealing
. Based on the relative size of data partitions, we add two types of tasks, namely
segment tasks
for larger partitions and
stealing tasks
for smaller partitions. In a stage, stealing tasks could actively steal and process data from segment tasks after processing their own. The optimization achieves significant performance improvements from 16% up to 67% on different sizes and distributions of data. Experiments show that involved overhead is minimal and could be negligible.</description><subject>2019</subject><subject>Algorithms</subject><subject>Computer Science</subject><subject>Distributed memory</subject><subject>Optimization</subject><subject>Performance enhancement</subject><subject>Processor Architectures</subject><subject>Query languages</subject><subject>Segments</subject><subject>Software Engineering/Programming and Operating Systems</subject><subject>Special issue on Network and Parallel Computing for Emerging Architectures and Applications</subject><subject>Theory of Computation</subject><issn>0885-7458</issn><issn>1573-7640</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2020</creationdate><recordtype>article</recordtype><sourceid>8G5</sourceid><sourceid>BENPR</sourceid><sourceid>GUQSH</sourceid><sourceid>M2O</sourceid><recordid>eNp9kEFLwzAUgIMoOKd_wFPAc_QlbfrS45i6CQORbeeQNUnpNtuZdIj79bZW8Obp8eD73oOPkFsO9xwAHyIHzDIGAhhAJpGdzsiIS0wYZimckxEoJRmmUl2Sqxi3AJCjUiMynZva7qu6pI-mNXS5c5_UN4FOyjK40rRVU9OqpsuDCTu6fFvQdezhlYnd2jrTq9fkwpt9dDe_c0zWz0-r6ZwtXmcv08mCFQnPW2aF31iwDo3HjUozJX1uvJFJnmNmLEdlrbeQS9xg6gqfFAWgkOh96hUvRDImd8PdQ2g-ji62etscQ9291EKlMs-EkD0lBqoITYzBeX0I1bsJX5qD7mPpIZbuYumfWPrUSckgxQ6uSxf-Tv9jfQMZb2yj</recordid><startdate>20201201</startdate><enddate>20201201</enddate><creator>He, Zeyu</creator><creator>Huang, Qiuli</creator><creator>Li, Zhifang</creator><creator>Weng, Chuliang</creator><general>Springer US</general><general>Springer Nature B.V</general><scope>AAYXX</scope><scope>CITATION</scope><scope>3V.</scope><scope>7SC</scope><scope>7WY</scope><scope>7WZ</scope><scope>7XB</scope><scope>87Z</scope><scope>8AL</scope><scope>8FD</scope><scope>8FE</scope><scope>8FG</scope><scope>8FK</scope><scope>8FL</scope><scope>8G5</scope><scope>ABUWG</scope><scope>AFKRA</scope><scope>ARAPS</scope><scope>AZQEC</scope><scope>BENPR</scope><scope>BEZIV</scope><scope>BGLVJ</scope><scope>CCPQU</scope><scope>DWQXO</scope><scope>FRNLG</scope><scope>F~G</scope><scope>GNUQQ</scope><scope>GUQSH</scope><scope>HCIFZ</scope><scope>JQ2</scope><scope>K60</scope><scope>K6~</scope><scope>K7-</scope><scope>L.-</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope><scope>M0C</scope><scope>M0N</scope><scope>M2O</scope><scope>MBDVC</scope><scope>P5Z</scope><scope>P62</scope><scope>PQBIZ</scope><scope>PQBZA</scope><scope>PQEST</scope><scope>PQQKQ</scope><scope>PQUKI</scope><scope>PRINS</scope><scope>Q9U</scope><orcidid>https://orcid.org/0000-0001-8017-2344</orcidid></search><sort><creationdate>20201201</creationdate><title>Handling Data Skew for Aggregation in Spark SQL Using Task Stealing</title><author>He, Zeyu ; Huang, Qiuli ; Li, Zhifang ; Weng, Chuliang</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c319t-d2fbd0de7af7b84685f9afa539976ad178ddfd0957b74ecf3cc07257ff4f81c23</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2020</creationdate><topic>2019</topic><topic>Algorithms</topic><topic>Computer Science</topic><topic>Distributed memory</topic><topic>Optimization</topic><topic>Performance enhancement</topic><topic>Processor Architectures</topic><topic>Query languages</topic><topic>Segments</topic><topic>Software Engineering/Programming and Operating Systems</topic><topic>Special issue on Network and Parallel Computing for Emerging Architectures and Applications</topic><topic>Theory of Computation</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>He, Zeyu</creatorcontrib><creatorcontrib>Huang, Qiuli</creatorcontrib><creatorcontrib>Li, Zhifang</creatorcontrib><creatorcontrib>Weng, Chuliang</creatorcontrib><collection>CrossRef</collection><collection>ProQuest Central (Corporate)</collection><collection>Computer and Information Systems Abstracts</collection><collection>ABI/INFORM Collection</collection><collection>ABI/INFORM Global (PDF only)</collection><collection>ProQuest Central (purchase pre-March 2016)</collection><collection>ABI/INFORM Global (Alumni Edition)</collection><collection>Computing Database (Alumni Edition)</collection><collection>Technology Research Database</collection><collection>ProQuest SciTech Collection</collection><collection>ProQuest Technology Collection</collection><collection>ProQuest Central (Alumni) (purchase pre-March 2016)</collection><collection>ABI/INFORM Collection (Alumni Edition)</collection><collection>Research Library (Alumni Edition)</collection><collection>ProQuest Central (Alumni Edition)</collection><collection>ProQuest Central UK/Ireland</collection><collection>Advanced Technologies & Aerospace Collection</collection><collection>ProQuest Central Essentials</collection><collection>ProQuest Central</collection><collection>Business Premium Collection</collection><collection>Technology Collection</collection><collection>ProQuest One Community College</collection><collection>ProQuest Central Korea</collection><collection>Business Premium Collection (Alumni)</collection><collection>ABI/INFORM Global (Corporate)</collection><collection>ProQuest Central Student</collection><collection>Research Library Prep</collection><collection>SciTech Premium Collection</collection><collection>ProQuest Computer Science Collection</collection><collection>ProQuest Business Collection (Alumni Edition)</collection><collection>ProQuest Business Collection</collection><collection>Computer Science Database</collection><collection>ABI/INFORM Professional Advanced</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><collection>ABI/INFORM Global</collection><collection>Computing Database</collection><collection>Research Library</collection><collection>Research Library (Corporate)</collection><collection>Advanced Technologies & Aerospace Database</collection><collection>ProQuest Advanced Technologies & Aerospace Collection</collection><collection>ProQuest One Business</collection><collection>ProQuest One Business (Alumni)</collection><collection>ProQuest One Academic Eastern Edition (DO NOT USE)</collection><collection>ProQuest One Academic</collection><collection>ProQuest One Academic UKI Edition</collection><collection>ProQuest Central China</collection><collection>ProQuest Central Basic</collection><jtitle>International journal of parallel programming</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>He, Zeyu</au><au>Huang, Qiuli</au><au>Li, Zhifang</au><au>Weng, Chuliang</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Handling Data Skew for Aggregation in Spark SQL Using Task Stealing</atitle><jtitle>International journal of parallel programming</jtitle><stitle>Int J Parallel Prog</stitle><date>2020-12-01</date><risdate>2020</risdate><volume>48</volume><issue>6</issue><spage>941</spage><epage>956</epage><pages>941-956</pages><issn>0885-7458</issn><eissn>1573-7640</eissn><abstract>In distributed in-memory computing systems, data distribution has a large impact on performance. Designing a good partition algorithm is difficult and requires users to have adequate prior knowledge of data, which makes data skew common in reality. Traditional approaches to handling data skew by sampling and repartitioning often incur additional overhead. In this paper, we proposed a dynamic execution optimization for the aggregation operator, which is one of the most general and expensive operators in Spark SQL. Our optimization aims to avoid the additional overhead and improve the performance when data skew occurs. The core idea is
task stealing
. Based on the relative size of data partitions, we add two types of tasks, namely
segment tasks
for larger partitions and
stealing tasks
for smaller partitions. In a stage, stealing tasks could actively steal and process data from segment tasks after processing their own. The optimization achieves significant performance improvements from 16% up to 67% on different sizes and distributions of data. Experiments show that involved overhead is minimal and could be negligible.</abstract><cop>New York</cop><pub>Springer US</pub><doi>10.1007/s10766-020-00657-z</doi><tpages>16</tpages><orcidid>https://orcid.org/0000-0001-8017-2344</orcidid></addata></record> |
fulltext | fulltext |
identifier | ISSN: 0885-7458 |
ispartof | International journal of parallel programming, 2020-12, Vol.48 (6), p.941-956 |
issn | 0885-7458 1573-7640 |
language | eng |
recordid | cdi_proquest_journals_2845962252 |
source | SpringerLink Journals - AutoHoldings |
subjects | 2019 Algorithms Computer Science Distributed memory Optimization Performance enhancement Processor Architectures Query languages Segments Software Engineering/Programming and Operating Systems Special issue on Network and Parallel Computing for Emerging Architectures and Applications Theory of Computation |
title | Handling Data Skew for Aggregation in Spark SQL Using Task Stealing |
url | https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-28T16%3A10%3A52IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Handling%20Data%20Skew%20for%20Aggregation%20in%20Spark%20SQL%20Using%20Task%20Stealing&rft.jtitle=International%20journal%20of%20parallel%20programming&rft.au=He,%20Zeyu&rft.date=2020-12-01&rft.volume=48&rft.issue=6&rft.spage=941&rft.epage=956&rft.pages=941-956&rft.issn=0885-7458&rft.eissn=1573-7640&rft_id=info:doi/10.1007/s10766-020-00657-z&rft_dat=%3Cproquest_cross%3E2845962252%3C/proquest_cross%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=2845962252&rft_id=info:pmid/&rfr_iscdi=true |