Author: zznate Date: Wed Aug 8 01:44:58 2018 New Revision: 1837624 URL: http://svn.apache.org/viewvc?rev=1837624&view=rev Log: Actually add the pages for CASSANDRA-14624 blog post
Added: cassandra/site/publish/blog/ cassandra/site/publish/blog/2018/ cassandra/site/publish/blog/2018/08/ cassandra/site/publish/blog/2018/08/07/ cassandra/site/publish/blog/2018/08/07/faster_streaming_in_cassandra.html cassandra/site/publish/blog/index.html Added: cassandra/site/publish/blog/2018/08/07/faster_streaming_in_cassandra.html URL: http://svn.apache.org/viewvc/cassandra/site/publish/blog/2018/08/07/faster_streaming_in_cassandra.html?rev=1837624&view=auto ============================================================================== --- cassandra/site/publish/blog/2018/08/07/faster_streaming_in_cassandra.html (added) +++ cassandra/site/publish/blog/2018/08/07/faster_streaming_in_cassandra.html Wed Aug 8 01:44:58 2018 @@ -0,0 +1,214 @@ +<!DOCTYPE html> +<html> + + + + +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content="Streaming in Apache Cassandra powers host replacement, range movements, and cluster expansions. Streaming plays a crucial role in the cluster and as such its..."> + <meta name="keywords" content="cassandra, apache, apache cassandra, distributed storage, key value store, scalability, bigtable, dynamo" /> + <meta name="robots" content="index,follow" /> + <meta name="language" content="en" /> + + <title>Hardware-bound Zero Copy Streaming in Apache Cassandra 4.0</title> + + <link rel="canonical" href="http://cassandra.apache.org/blog/2018/08/07/faster_streaming_in_cassandra.html"> + + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> + <link rel="stylesheet" href="./../../../../css/style.css"> + + + +</head> + + <body> + <!-- breadcrumbs --> +<div class="topnav"> + <div class="container breadcrumb-container"> + <ul class="breadcrumb"> + <li> + <div class="dropdown"> + <img class="asf-logo" src="./../../../../img/asf_feather.png" /> + <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a> + <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> + <li><a href="http://www.apache.org">Apache Homepage</a></li> + <li><a href="http://www.apache.org/licenses/">License</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + </ul> + </div> + </li> + + + <li><a href="./../../../../">Apache Cassandra</a></li> + + + + + <li>Hardware-bound Zero Copy Streaming in Apache Cassandra 4.0</li> + + + + + + + </ul> + </div> + + <!-- navbar --> + <nav class="navbar navbar-default navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#cassandra-menu" aria-expanded="false"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="./../../../../"><img src="./../../../../img/cassandra_logo.png" alt="Apache Cassandra logo" /></a> + </div><!-- /.navbar-header --> + + <div id="cassandra-menu" class="collapse navbar-collapse"> + <ul class="nav navbar-nav navbar-right"> + <li><a href="./../../../../">Home</a></li> + <li><a href="./../../../../download/">Download</a></li> + <li><a href="./../../../../doc/">Documentation</a></li> + <li><a href="./../../../../community/">Community</a></li> + <li><a href="./../../../../blog">Blog</a></li> + </ul> + </div><!-- /#cassandra-menu --> + + + </div> + </nav><!-- /.navbar --> +</div><!-- /.topnav --> + + <div class="content"> + <div class="container"> + <h2>Hardware-bound Zero Copy Streaming in Apache Cassandra 4.0</h2> + <p>Posted on August 07, 2018 by The Apache Cassandra Community</p> + <h5><a href="/blog">« Back to the Apache Cassandra Blog</a></h5> + <hr /> + <p>Streaming in Apache Cassandra powers host replacement, range movements, and cluster expansions. Streaming plays a crucial role in the cluster and as such its performance is key to not only the speed of the operations its used in but the clusterâs health generally. In Apache Cassandra 4.0, we have introduced an improved streaming implementation that reduces GC pressure and increases throughput several folds and are now limited, in some cases, only by the disk / network IO (See: <a href="https://issues.apache.org/jira/browse/CASSANDRA-14556">CASSANDRA-14556</a>).</p> + +<p><img src="data:image/png;base64,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" alt="Fig 1. Cassandra Streaming" style="float: right;margin-right: 7px;margin-top: 7px;" /> To get an understanding of the impact of these changes, letâs first have a look at the current streaming code path. The diagram below illustrates the stream session setup when a node attempts to stream data from a peer. Letâs say, we have a 3 node cluster (Nodes A, B, C). Node C is being rebuilt and has to stream all data that it is responsible for from A & B. C setups a streaming session with each of itâs peers (See: <a href="https://issues.apache.org/jira/browse/CASSANDRA-4650">CASSANDRA-4560</a> how Cassandra applies <a href="https://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm">Ford Fulkerson</a> to optimize streaming peers). It exchanges messages to request ranges and begins streaming data from the selected nodes.</p> + +<p>During the streaming phase, A collects all SSTables that have partitions in the requested ranges. It streams each SSTable by serializing individual partitions. Upon receiving the partition, node C reifies the data in memory and then writes it to disk. This is necessary to accurately transfer partitions from all possible SSTables for the requested ranges. This streaming path generates garbage and could be avoided in scenarios where all partitions within the SSTable need to be transmitted. This is common when youâre using LeveledCompactionStrategy or have enabled partitioning SSTables by token range (See: <a href="http://issues.apache.org/jira/browse/CASSANDRA-6696">CASSANDRA-6696</a>), etc.</p> + +<p>To solve this problem <a href="http://issues.apache.org/jira/browse/CASSANDRA-14556">CASSANDRA-14556</a> adds a Zero Copy streaming path. This significantly speeds up the transfer of SSTables and reduces garbage and unnecessary object creation. It modifies the streaming path to add additional information into the streaming header and uses ZeroCopy APIs to transfer bytes to and from the network and disk. So now, an SSTable may be transferred using this strategy when Cassandra detects that a complete SSTable needs to be transferred.</p> + +<h2 id="how-do-i-use-this-feature">How do I use this feature?</h2> + +<p>It just works. This feature is controlled using <code class="highlighter-rouge">streaming_zerocopy_sstables_enabled</code> in <code class="highlighter-rouge">cassandra.yaml</code> and is enabled by default. Even though this feature is enabled, it will respect the throttling limits as defined by <code class="highlighter-rouge">stream_throughput_outbound_megabits_per_sec</code>.</p> + +<h2 id="impact">Impact</h2> + +<p>Cassandra can stream SSTables only bounded by the hardware limitations (Network and Disk IO). With this optimization, we hope to make Cassandra more performant and reliable.</p> + +<p>Microbenchmarking this feature shows a marked improvement (higher is better). Block Stream Writers are the ZeroCopy writers and Partial Stream Writers are the existing writers.</p> + +<table class="table-condensed table-bordered table-hover"> + <thead> + <tr> + <th>Benchmark</th> + <th>Mode</th> + <th>Cnt</th> + <th>Score</th> + <th>Error</th> + <th>Units</th> + </tr> + </thead> + <tbody> + <tr> + <td>ZeroCopyStreamingBenchmark.blockStreamReader</td> + <td>thrpt</td> + <td>10</td> + <td>20.119</td> + <td>± 1.300</td> + <td>ops/s</td> + </tr> + <tr> + <td>ZeroCopyStreamingBenchmark.blockStreamWriter</td> + <td>thrpt</td> + <td>10</td> + <td>1339.672</td> + <td>± 352.242</td> + <td>ops/s</td> + </tr> + <tr> + <td>ZeroCopyStreamingBenchmark.partialStreamReader</td> + <td>thrpt</td> + <td>10</td> + <td>0.590</td> + <td>± 0.135</td> + <td>ops/s</td> + </tr> + <tr> + <td>ZeroCopyStreamingBenchmark.partialStreamWriter</td> + <td>thrpt</td> + <td>10</td> + <td>17.556</td> + <td>± 0.323</td> + <td>ops/s</td> + </tr> + </tbody> +</table> + +<h2 id="conclusion">Conclusion</h2> + +<p>If youâre a Cassandra user, we would love to hear back from you. Please send us feedback via user <a href="http://cassandra.apache.org/community/">Mailing List</a>, <a href="https://issues.apache.org/jira/projects/CASSANDRA/summary">Jira</a>, or <a href="http://cassandra.apache.org/community/">IRC</a> (or any combination of the three).</p> + + + </div> +</div> + + <hr /> + +<footer> + <div class="container"> + <div class="col-md-4 social-blk"> + <span class="social"> + <a href="https://twitter.com/cassandra" + class="twitter-follow-button" + data-show-count="false" data-size="large">Follow @cassandra</a> + <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> + <a href="https://twitter.com/intent/tweet?button_hashtag=cassandra" + class="twitter-hashtag-button" + data-size="large" + data-related="ApacheCassandra">Tweet #cassandra</a> + <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> + </span> + </div> + + <div class="col-md-8 trademark"> + <p>© 2016 <a href="http://apache.org">The Apache Software Foundation</a>. + Apache, the Apache feather logo, and Apache Cassandra are trademarks of The Apache Software Foundation. + <p> + </div> + </div><!-- /.container --> +</footer> + +<!-- Javascript. Placed here so pages load faster --> +<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> +<script src="./../../../../js/underscore-min.js"></script> +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> + + + +<script type="text/javascript"> + var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); + document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); + + try { + var pageTracker = _gat._getTracker("UA-11583863-1"); + pageTracker._trackPageview(); + } catch(err) {} +</script> + + + </body> +</html> Added: cassandra/site/publish/blog/index.html URL: http://svn.apache.org/viewvc/cassandra/site/publish/blog/index.html?rev=1837624&view=auto ============================================================================== --- cassandra/site/publish/blog/index.html (added) +++ cassandra/site/publish/blog/index.html Wed Aug 8 01:44:58 2018 @@ -0,0 +1,159 @@ +<!DOCTYPE html> +<html> + + + + +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content="The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages. +"> + <meta name="keywords" content="cassandra, apache, apache cassandra, distributed storage, key value store, scalability, bigtable, dynamo" /> + <meta name="robots" content="index,follow" /> + <meta name="language" content="en" /> + + <title>Blog</title> + + <link rel="canonical" href="http://cassandra.apache.org/blog/"> + + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> + <link rel="stylesheet" href="./../css/style.css"> + + + +</head> + + <body> + <!-- breadcrumbs --> +<div class="topnav"> + <div class="container breadcrumb-container"> + <ul class="breadcrumb"> + <li> + <div class="dropdown"> + <img class="asf-logo" src="./../img/asf_feather.png" /> + <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a> + <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> + <li><a href="http://www.apache.org">Apache Homepage</a></li> + <li><a href="http://www.apache.org/licenses/">License</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + </ul> + </div> + </li> + + + <li><a href="./../">Apache Cassandra</a></li> + + + + + <li>Blog</li> + + + + + + + </ul> + </div> + + <!-- navbar --> + <nav class="navbar navbar-default navbar-static-top" role="navigation"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#cassandra-menu" aria-expanded="false"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="./../"><img src="./../img/cassandra_logo.png" alt="Apache Cassandra logo" /></a> + </div><!-- /.navbar-header --> + + <div id="cassandra-menu" class="collapse navbar-collapse"> + <ul class="nav navbar-nav navbar-right"> + <li><a href="./../">Home</a></li> + <li><a href="./../download/">Download</a></li> + <li><a href="./../doc/">Documentation</a></li> + <li><a href="./../community/">Community</a></li> + <li><a href="./../blog">Blog</a></li> + </ul> + </div><!-- /#cassandra-menu --> + + + </div> + </nav><!-- /.navbar --> +</div><!-- /.topnav --> + + <div class="content"> + <div class="container"> + <h2>Apache Cassandra Blog</h2> +<p>Have something to share with the community? Let us know on the <a href="http://cassandra.apache.org/community/#mailing">mailing list</a>!</p> + + + <ul class="blog-post-listing"> + + <li class="blog-post"> + <h4><a href="/blog/2018/08/07/faster_streaming_in_cassandra.html">Hardware-bound Zero Copy Streaming in Apache Cassandra 4.0</a></h4> + <p>Posted on August 07, 2018 by The Apache Cassandra Community</p> + <p>Streaming in Apache Cassandra powers host replacement, range movements, and cluster expansions. Streaming plays a crucial role in the cluster and as such its performance is key to not only the speed of the operations its used in but the clusterâs health generally. In Apache Cassandra 4.0, we have introduced an improved streaming implementation that reduces GC pressure and increases throughput several folds and are now limited, in some cases, only by the disk / network IO (See: <a href="https://issues.apache.org/jira/browse/CASSANDRA-14556">CASSANDRA-14556</a>).</p> + + + <h5><a href="/blog/2018/08/07/faster_streaming_in_cassandra.html">Read more »</a></h5> + </li> + + </ul> + + + </div> +</div> + + <hr /> + +<footer> + <div class="container"> + <div class="col-md-4 social-blk"> + <span class="social"> + <a href="https://twitter.com/cassandra" + class="twitter-follow-button" + data-show-count="false" data-size="large">Follow @cassandra</a> + <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> + <a href="https://twitter.com/intent/tweet?button_hashtag=cassandra" + class="twitter-hashtag-button" + data-size="large" + data-related="ApacheCassandra">Tweet #cassandra</a> + <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> + </span> + </div> + + <div class="col-md-8 trademark"> + <p>© 2016 <a href="http://apache.org">The Apache Software Foundation</a>. + Apache, the Apache feather logo, and Apache Cassandra are trademarks of The Apache Software Foundation. + <p> + </div> + </div><!-- /.container --> +</footer> + +<!-- Javascript. Placed here so pages load faster --> +<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> +<script src="./../js/underscore-min.js"></script> +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> + + + +<script type="text/javascript"> + var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); + document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); + + try { + var pageTracker = _gat._getTracker("UA-11583863-1"); + pageTracker._trackPageview(); + } catch(err) {} +</script> + + + </body> +</html> --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org