http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2017/11/blog.html ---------------------------------------------------------------------- diff --git a/content/blog/2017/11/blog.html b/content/blog/2017/11/blog.html index aaaa15e..66a31e4 100644 --- a/content/blog/2017/11/blog.html +++ b/content/blog/2017/11/blog.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Blog</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/blog-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/blog-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/blog-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/blog-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -74,7 +74,7 @@ <h2>Blog</h2> - <p>New blog <a href="http://crail.incubator.apache.org/blog/2017/11/rdmashuffle.html">post</a> about SparkRDMA and Crail shuffle plugins</p> + <p>New blog <a href="//crail.incubator.apache.org/blog/2017/11/rdmashuffle.html">post</a> about SparkRDMA and Crail shuffle plugins</p> <br> @@ -88,6 +88,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html>
http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2017/11/crail-metadata.html ---------------------------------------------------------------------- diff --git a/content/blog/2017/11/crail-metadata.html b/content/blog/2017/11/crail-metadata.html index 2aa4644..cdd48f4 100644 --- a/content/blog/2017/11/crail-metadata.html +++ b/content/blog/2017/11/crail-metadata.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Crail Storage Performance -- Part III: Metadata</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/crail-metadata-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/crail-metadata-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/crail-metadata-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/crail-metadata-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -112,11 +112,11 @@ This is part III of our series of posts discussing Crail's raw storage performan <div style="text-align: justify"> <p> -As described in <a href="http://crail.incubator.apache.org/blog/2017/08/crail-memory.html">part I</a>, Crail data operations are composed of actual data transfers and metadata operations. Examples of metadata operations are operations for creating or modifying the state of a file, or operations to lookup the storage server that stores a particular range (block) of a file. In Crail, all the metadata is managed by the namenode(s) (as opposed to the data which is managed by the storage nodes). Clients interact with Crail namenodes via Remote Procedure Calls (RPCs). Crail supports multiple RPC protocols for different types of networks and also offers a pluggable RPC interface so that new RPC bindings can be implemented easily. On RDMA networks, the default DaRPC (<a href="https://dl.acm.org/citation.cfm?id=2670994">DaRPC paper</a>, <a href="http://github.com/zrlio/darpc">DaRPC GitHub</a>) based RPC binding provides the best performance. The figure below gives an overview of the Crail me tadata processing in a DaRPC configuration. +As described in <a href="//crail.incubator.apache.org/blog/2017/08/crail-memory.html">part I</a>, Crail data operations are composed of actual data transfers and metadata operations. Examples of metadata operations are operations for creating or modifying the state of a file, or operations to lookup the storage server that stores a particular range (block) of a file. In Crail, all the metadata is managed by the namenode(s) (as opposed to the data which is managed by the storage nodes). Clients interact with Crail namenodes via Remote Procedure Calls (RPCs). Crail supports multiple RPC protocols for different types of networks and also offers a pluggable RPC interface so that new RPC bindings can be implemented easily. On RDMA networks, the default DaRPC (<a href="https://dl.acm.org/citation.cfm?id=2670994">DaRPC paper</a>, <a href="http://github.com/zrlio/darpc">DaRPC GitHub</a>) based RPC binding provides the best performance. The figure below gives an overview of the Crail metadat a processing in a DaRPC configuration. </p> </div> -<div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/crail-metadata/rpc.png" width="480" /></div> +<div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/crail-metadata/rpc.png" width="480" /></div> <p><br /></p> <div style="text-align: justify"> @@ -129,10 +129,10 @@ Crail supports partitioning of metadata across several namenods. Thereby, metada <div style="text-align: justify"> <p> -In two of the previous blogs (<a href="http://crail.incubator.apache.org/blog/2017/08/crail-memory.html">DRAM</a>, <a href="http://crail.incubator.apache.org/blog/2017/08/crail-nvme-fabrics-v1.html">NVMf</a>) we have already shown that Crail metadata operations are very low latency. Essentially a single metadata operation issued by a remote client takes 5-6 microseconds, which is only slightly more than the raw network latency of the RDMA network fabric. In this blog, we want to explore the scalability of Crail's metadata management, that is, the number of clients Crail can support, or how Crail scales as the cluster size increases. The level of scalability of Crail is mainly determined by the number of metadata operations Crail can process concurrently, a metric that is often referred to as IOPS. The higher the number of IOPS the system can handle, the more clients can concurrently use Crail without performance loss. +In two of the previous blogs (<a href="//crail.incubator.apache.org/blog/2017/08/crail-memory.html">DRAM</a>, <a href="//crail.incubator.apache.org/blog/2017/08/crail-nvme-fabrics-v1.html">NVMf</a>) we have already shown that Crail metadata operations are very low latency. Essentially a single metadata operation issued by a remote client takes 5-6 microseconds, which is only slightly more than the raw network latency of the RDMA network fabric. In this blog, we want to explore the scalability of Crail's metadata management, that is, the number of clients Crail can support, or how Crail scales as the cluster size increases. The level of scalability of Crail is mainly determined by the number of metadata operations Crail can process concurrently, a metric that is often referred to as IOPS. The higher the number of IOPS the system can handle, the more clients can concurrently use Crail without performance loss. </p> <p> -An important metadata operation is ''getFile()'', which is used by clients to lookup the status of a file (whether the file exists, what size it has, etc.). The ''getFile()'' operation is served by Crail's fast lock-free map and in spirit is very similar to the ''getBlock()'' metadata operation (used by clients to query which storage nodes holds a particular block). In a typical Crail use case, ''getFile()'' and ''getBlock()'' are responsible for the peak metadata load at a namenode. In this experiment, we measure the achievable IOPS on the server side in an artificial configuration with many clients distributed across the cluster issuing ''getFile()'' in a tight loop. Note that the client side RPC interface in Crail is asynchronous, thus, clients can issue multiple metadata operations without blocking while asynchronously waiting for the result. In the experiments below, each client may have a maximum of 128 ''getFile()'' operations outstanding at any point in time. In a practical scenario, Crail clients may also have multiple metadata operations in flight either because clients are shared by different cores, or because Crail interleaves metadata and data operations (see <a href="http://crail.incubator.apache.org/blog/2017/08/crail-memory.html">DRAM</a>). What makes the benchmark artificial is that clients exclusively focus on generating load for the namenode and thereby are neither performing data operations nor are they doing any compute. The basic command of the benchmark as executed by each of the individual clients is given by the following command: +An important metadata operation is ''getFile()'', which is used by clients to lookup the status of a file (whether the file exists, what size it has, etc.). The ''getFile()'' operation is served by Crail's fast lock-free map and in spirit is very similar to the ''getBlock()'' metadata operation (used by clients to query which storage nodes holds a particular block). In a typical Crail use case, ''getFile()'' and ''getBlock()'' are responsible for the peak metadata load at a namenode. In this experiment, we measure the achievable IOPS on the server side in an artificial configuration with many clients distributed across the cluster issuing ''getFile()'' in a tight loop. Note that the client side RPC interface in Crail is asynchronous, thus, clients can issue multiple metadata operations without blocking while asynchronously waiting for the result. In the experiments below, each client may have a maximum of 128 ''getFile()'' operations outstanding at any point in time. In a practical scenario, Crail clients may also have multiple metadata operations in flight either because clients are shared by different cores, or because Crail interleaves metadata and data operations (see <a href="//crail.incubator.apache.org/blog/2017/08/crail-memory.html">DRAM</a>). What makes the benchmark artificial is that clients exclusively focus on generating load for the namenode and thereby are neither performing data operations nor are they doing any compute. The basic command of the benchmark as executed by each of the individual clients is given by the following command: </p> </div> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./bin/crail iobench -t getMultiFileAsync -f / -k 10000000 -b 128 @@ -175,7 +175,7 @@ The line of the raw number of IOPS, labeled ''ib send'' is shown in the same gra </p> </div> <p><br /></p> -<div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/crail-metadata/namenode_ibsend_iops64.svg" width="550" /></div> +<div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/crail-metadata/namenode_ibsend_iops64.svg" width="550" /></div> <p><br /></p> <div style="text-align: justify"> <p> @@ -192,7 +192,7 @@ To increase the number of IOPS the overall system can handle, we allow starting </p> </div> <p><br /></p> -<div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/crail-metadata/namenode_multi64.svg" width="550" /></div> +<div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/crail-metadata/namenode_multi64.svg" width="550" /></div> <p><br /></p> <div style="text-align: justify"> @@ -220,7 +220,7 @@ namenodes happening, which should lead to linear scalability. <div style="text-align: justify"> <p> Let us look at a concrete application, which ideally runs on a large cluster: -TeraSort. In a previous blog, <a href="http://crail.incubator.apache.org/blog/2017/01/sorting.html">sorting</a>, +TeraSort. In a previous blog, <a href="//crail.incubator.apache.org/blog/2017/01/sorting.html">sorting</a>, we analyze performance characteristics of TeraSort on Crail on a big cluster of 128 nodes, where we run 384 executors in total. This already proves that Crail can at least handle 384 clients. Now we analyze the theoretical number @@ -254,7 +254,7 @@ namenode over the elapsed runtime of the TeraSort application. </div> <p><br /></p> -<div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/crail-metadata/terasort_iops.svg" width="550" /></div> +<div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/crail-metadata/terasort_iops.svg" width="550" /></div> <p><br /></p> <div style="text-align: justify"> @@ -418,7 +418,7 @@ plot shows the number of IOPS relative to the number of clients. </div> <p><br /></p> -<div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/crail-metadata/namenode_hdfs_iops.svg" width="550" /></div> +<div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/crail-metadata/namenode_hdfs_iops.svg" width="550" /></div> <p><br /></p> <div style="text-align: justify"> @@ -472,7 +472,7 @@ the blog with the latest numbers as soon as the bug is fixed. </div> <p><br /></p> -<div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/crail-metadata/ramcloud_iops.svg" width="550" /></div> +<div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/crail-metadata/ramcloud_iops.svg" width="550" /></div> <p><br /></p> <div style="text-align: justify"> @@ -503,7 +503,7 @@ of 30Mio/s with 4 namenodes). </div> <p><br /></p> -<div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/crail-metadata/max_iops_crail_hdfs_ramcloud.svg" width="550" /></div> +<div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/crail-metadata/max_iops_crail_hdfs_ramcloud.svg" width="550" /></div> <p><br /></p> <div style="text-align: justify"> @@ -565,6 +565,6 @@ s.setAttribute('data-timestamp', +new Date()); <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2017/11/floss.html ---------------------------------------------------------------------- diff --git a/content/blog/2017/11/floss.html b/content/blog/2017/11/floss.html index a9ea68a..7bdd6cc 100644 --- a/content/blog/2017/11/floss.html +++ b/content/blog/2017/11/floss.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Floss</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/floss-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/floss-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/floss-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/floss-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -88,6 +88,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2017/11/iops.html ---------------------------------------------------------------------- diff --git a/content/blog/2017/11/iops.html b/content/blog/2017/11/iops.html index 0b40122..5b91957 100644 --- a/content/blog/2017/11/iops.html +++ b/content/blog/2017/11/iops.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Iops</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/iops-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/iops-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/iops-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/iops-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -74,7 +74,7 @@ <h2>Iops</h2> - <p>New blog <a href="http://crail.incubator.apache.org/blog/2017/11/crail-metadata.html">post</a> about Crailâs metadata performance and scalability</p> + <p>New blog <a href="//crail.incubator.apache.org/blog/2017/11/crail-metadata.html">post</a> about Crailâs metadata performance and scalability</p> <br> @@ -88,6 +88,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2017/11/rdmashuffle.html ---------------------------------------------------------------------- diff --git a/content/blog/2017/11/rdmashuffle.html b/content/blog/2017/11/rdmashuffle.html index 9bed165..af4f0f0 100644 --- a/content/blog/2017/11/rdmashuffle.html +++ b/content/blog/2017/11/rdmashuffle.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Spark Shuffle: SparkRDMA vs Crail</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/rdmashuffle-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/rdmashuffle-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/rdmashuffle-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/rdmashuffle-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -125,7 +125,7 @@ In contrast, the Crail shuffler plugin takes a more holistic approach and levera <p>Lets start by quantitatively assessing performance gains from the Crail shuffle plugin and SparkRDMA. As described above, SparkRDMA can be operated in two different modes. Users decide which mode to use by selecting a particular type of shuffle writer (spark.shuffle.rdma.shuffleWriterMethod). The Wrapper shuffle writer writes shuffle data to files between the stages, the Chunked shuffle writer stores shuffle data in memory. We evaluate both writer methods for terasort and SQL equijoin. </p> </div> -<div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/rdma-shuffle/terasort.svg" width="550" /></div> +<div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/rdma-shuffle/terasort.svg" width="550" /></div> <p><br /></p> <div style="text-align: justify"> <p> @@ -135,7 +135,7 @@ First we run <a href="https://github.com/zrlio/crail-spark-terasort">terasort</a The plot above shows runtimes of the various configuration we run with terasort. SparkRDMA with the Wrapper shuffle writer performance slightly better (3-4%) than vanilla Spark whereas the Chunked shuffle writer shows a 30% overhead. On a quick inspection we found that this overhead stems from memory allocation and registration for the shuffle data that is kept in memory between the stages. Compared to vanilla Spark, Crail's shuffle plugin shows performance improvement of around 235%. </p> </div> -<div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/rdma-shuffle/sql.svg" width="550" /></div> +<div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/rdma-shuffle/sql.svg" width="550" /></div> <p><br /></p> <div style="text-align: justify"> @@ -197,6 +197,6 @@ s.setAttribute('data-timestamp', +new Date()); <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2018/01/apache.html ---------------------------------------------------------------------- diff --git a/content/blog/2018/01/apache.html b/content/blog/2018/01/apache.html index ad146b7..e3abaf2 100644 --- a/content/blog/2018/01/apache.html +++ b/content/blog/2018/01/apache.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Apache</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/apache-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/apache-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/apache-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/apache-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -88,6 +88,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2018/06/apache-release.html ---------------------------------------------------------------------- diff --git a/content/blog/2018/06/apache-release.html b/content/blog/2018/06/apache-release.html index 1f7e8ae..23f40a2 100644 --- a/content/blog/2018/06/apache-release.html +++ b/content/blog/2018/06/apache-release.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Apache Release</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/apache-release-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/apache-release-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/apache-release-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/apache-release-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -74,7 +74,7 @@ <h2>Apache Release</h2> - <p>Apache Crail 1.0 incubator <a href="http://crail.incubator.apache.org/download">release</a></p> + <p>Apache Crail 1.0 incubator <a href="//crail.incubator.apache.org/download">release</a></p> <br> @@ -88,6 +88,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2018/06/dataworks.html ---------------------------------------------------------------------- diff --git a/content/blog/2018/06/dataworks.html b/content/blog/2018/06/dataworks.html index 41ec39e..c278119 100644 --- a/content/blog/2018/06/dataworks.html +++ b/content/blog/2018/06/dataworks.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Dataworks</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/dataworks-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/dataworks-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/dataworks-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/dataworks-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -88,6 +88,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2018/06/sparksummit.html ---------------------------------------------------------------------- diff --git a/content/blog/2018/06/sparksummit.html b/content/blog/2018/06/sparksummit.html index 651e681..d6afa64 100644 --- a/content/blog/2018/06/sparksummit.html +++ b/content/blog/2018/06/sparksummit.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Sparksummit</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/sparksummit-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/sparksummit-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/sparksummit-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/sparksummit-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -88,6 +88,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2018/08/sql-p1-news.html ---------------------------------------------------------------------- diff --git a/content/blog/2018/08/sql-p1-news.html b/content/blog/2018/08/sql-p1-news.html index 93cece5..a3b81cc 100644 --- a/content/blog/2018/08/sql-p1-news.html +++ b/content/blog/2018/08/sql-p1-news.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Sql P1 News</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/sql-p1-news-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/sql-p1-news-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/sql-p1-news-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/sql-p1-news-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -74,7 +74,7 @@ <h2>Sql P1 News</h2> - <p>A new blog <a href="http://crail.incubator.apache.org/blog/2018/08/sql-p1.html">post</a> discussing file formats performance is now online</p> + <p>A new blog <a href="//crail.incubator.apache.org/blog/2018/08/sql-p1.html">post</a> discussing file formats performance is now online</p> <br> @@ -88,6 +88,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/2018/08/sql-p1.html ---------------------------------------------------------------------- diff --git a/content/blog/2018/08/sql-p1.html b/content/blog/2018/08/sql-p1.html index 885bafd..285f8f5 100644 --- a/content/blog/2018/08/sql-p1.html +++ b/content/blog/2018/08/sql-p1.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: SQL Performance: Part 1 - Input File Formats</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/sql-p1-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/sql-p1-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/sql-p1-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/sql-p1-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -114,11 +114,11 @@ This is the first blog post in a multi-part series where we will focus on relati <p>In a typical cloud-based relational data processing setup, the input data is stored on an external data storage solution like HDFS or AWS S3. Data tables and their associated schema are converted into a storage-friendly format for optimal performance. Examples of some popular and familiar file formats are <a href="https://parquet.apache.org/">Apache Parquet</a>, <a href="https://orc.apache.org/">Apache ORC</a>, <a href="https://avro.apache.org/">Apache Avro</a>, <a href="https://en.wikipedia.org/wiki/JSON">JSON</a>, etc. More recently, <a href="https://arrow.apache.org/">Apache Arrow</a> has been introduced to standardize the in-memory columnar data representation between multiple frameworks. There is no one size fits all as all these formats have their own strengths, weaknesses, and features. In this blog, we are specifically interested in the performance of these formats on modern high-performance networking and storage devices.</p> -<figure><div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/sql-p1/outline.svg" width="550" /><figcaption>Figure 1: The benchmarking setup with HDFS and file formats on a 100 Gbps network with NVMe flash devices. All formats contains routines for compression, encoding, and value materialization with associated I/O buffer management and data copies routines.<p></p></figcaption></div></figure> +<figure><div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/sql-p1/outline.svg" width="550" /><figcaption>Figure 1: The benchmarking setup with HDFS and file formats on a 100 Gbps network with NVMe flash devices. All formats contains routines for compression, encoding, and value materialization with associated I/O buffer management and data copies routines.<p></p></figcaption></div></figure> <p>To benchmark the performance of file formats, we wrote a set of micro-benchmarks which are available at <a href="https://github.com/zrlio/fileformat-benchmarks">https://github.com/zrlio/fileformat-benchmarks</a>. We cannot use typical SQL micro-benchmarks because every SQL engine has its own favorite file format, on which it performs the best. Hence, in order to ensure parity, we decoupled the performance of reading the input file format from the SQL query processing by writing simple table reading micro-benchmarks. Our benchmark reads in the store_sales table from the TPC-DS dataset (scale factor 100), and calculates a sum of values present in the table. The table contains 23 columns of integers, doubles, and longs.</p> -<figure><div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/sql-p1/performance-all.svg" width="550" /><figcaption>Figure 2: Performance of JSON, Avro, Parquet, ORC, and Arrow on NVMe devices over a 100 Gbps network.<p></p></figcaption></div></figure> +<figure><div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/sql-p1/performance-all.svg" width="550" /><figcaption>Figure 2: Performance of JSON, Avro, Parquet, ORC, and Arrow on NVMe devices over a 100 Gbps network.<p></p></figcaption></div></figure> <p>We evaluate the performance of the benchmark on a 3 node HDFS cluster connected using 100 Gbps RoCE. One datanode in HDFS contains 4 NVMe devices with a collective aggregate bandwidth of 12.5 GB/sec (equals to 100 Gbps, hence, we have a balanced network and storage performance). Figure 2 shows our results where none of the file formats is able to deliver the full hardware performance for reading input files. One third of the performance is already lost in HDFS (maximum throughput 74.9 Gbps out of possible 100 Gbps). The rest of the performance is lost inside the file format implementation, which needs to deal with encoding, buffer and I/O management, compression, etc. The best performer is Apache Arrow which is designed for in-memory columnar datasets. The performance of these file formats are bounded by the performance of the CPU, which is 100% loaded during the experiment. For a detailed analysis of the file formats, please refer to our paper - <a href="https://www.usenix.org/c onference/atc18/presentation/trivedi">Albis: High-Performance File Format for Big Data Systems (USENIX, ATCâ18)</a>.</p> @@ -132,7 +132,7 @@ This is the first blog post in a multi-part series where we will focus on relati <li>Careful object materialization using a binary API: To optimize the runtime representation in managed runtimes like the JVM, only objects which are necessary for SQL processing are materialized. Otherwise, a 4 byte integer can be passed around as a byte array (using the binary API of Albis).</li> </ul> -<figure><div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/sql-p1/core-scalability.svg" width="550" /><figcaption>Figure 3: Core scalability of JSON, Avro, Parquet, ORC, Arrow, and Albis on HDFS/NVMe.<p></p></figcaption></div></figure> +<figure><div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/sql-p1/core-scalability.svg" width="550" /><figcaption>Figure 3: Core scalability of JSON, Avro, Parquet, ORC, Arrow, and Albis on HDFS/NVMe.<p></p></figcaption></div></figure> <p>Using the Albis format, we revise our previous experiment where we read the input store_sales table from HDFS. In the figure above, we show the performance of Albis and other file formats with number of CPU cores involved. At the right hand of the x-axis, we have performance with all 16 cores engaged, hence, representing the peak possible performance. As evident, Albis delivers 59.9 Gbps out of 74.9 Gbps possible bandwidth with HDFS over NVMe. Albis performance is 1.9 - 21.4x better than other file formats. To give an impression where the performance is coming from, in the table below we show some micro-architectural features for Parquet, ORC, Arrow, and Albis. Our previously discussed design ideas in Albis result in a shorter code path (shown as less instructions required for each row), better cache performance (shows as lower cache misses per row), and clearly better performance (shown as nanoseconds required per row for processing). For a detailed evaluation of Albis please re fer to our paper.</p> @@ -171,9 +171,9 @@ This is the first blog post in a multi-part series where we will focus on relati <h3 id="apache-crail-incubating-with-albis">Apache Crail (Incubating) with Albis</h3> -<p>For our final experiment, we try to answer the question what it would take to deliver the full 100 Gbps bandwidth for Albis. Certainly, the first bottleneck is to improve the base storage layer performance. Here we use Apache Crail (Incubating) with its <a href="https://en.wikipedia.org/wiki/NVM_Express#NVMeOF">NVMeF</a> storage tier. This tier uses <a href="https://github.com/zrlio/jNVMf">jNVMf library</a> to implement NVMeF stack in Java. As we have shown in a previous blog <a href="http://crail.incubator.apache.org/blog/2017/08/crail-nvme-fabrics-v1.html">post</a> that Crailâs NVMeF tier can deliver performance (97.8 Gbps) very close to the hardware limits. Hence, Albis with Crail is a perfect setup to evaluate on high-performance NVMe and RDMA devices. Before we get there, letâs get some calculations right. The store_sales table in the TPC-DS dataset has a data density of 93.9% (out of 100 bytes, only 93.9 is data, others are null values). As we measure the goodput, the e xpected performance of Albis on Crail is 93.9% of 97.8 Gbps, which calculates to 91.8 Gbps. In our experiments, Albis on Crail delivers 85.5 Gbps. Figure 4 shows more detailed results.</p> +<p>For our final experiment, we try to answer the question what it would take to deliver the full 100 Gbps bandwidth for Albis. Certainly, the first bottleneck is to improve the base storage layer performance. Here we use Apache Crail (Incubating) with its <a href="https://en.wikipedia.org/wiki/NVM_Express#NVMeOF">NVMeF</a> storage tier. This tier uses <a href="https://github.com/zrlio/jNVMf">jNVMf library</a> to implement NVMeF stack in Java. As we have shown in a previous blog <a href="//crail.incubator.apache.org/blog/2017/08/crail-nvme-fabrics-v1.html">post</a> that Crailâs NVMeF tier can deliver performance (97.8 Gbps) very close to the hardware limits. Hence, Albis with Crail is a perfect setup to evaluate on high-performance NVMe and RDMA devices. Before we get there, letâs get some calculations right. The store_sales table in the TPC-DS dataset has a data density of 93.9% (out of 100 bytes, only 93.9 is data, others are null values). As we measure the goodput, the expect ed performance of Albis on Crail is 93.9% of 97.8 Gbps, which calculates to 91.8 Gbps. In our experiments, Albis on Crail delivers 85.5 Gbps. Figure 4 shows more detailed results.</p> -<figure><div style="text-align:center"><img src="http://crail.incubator.apache.org/img/blog/sql-p1/albis-crail.svg" width="550" /><figcaption>Figure 4: Performance of Albis on Crail.<p></p></figcaption></div></figure> +<figure><div style="text-align:center"><img src="//crail.incubator.apache.org/img/blog/sql-p1/albis-crail.svg" width="550" /><figcaption>Figure 4: Performance of Albis on Crail.<p></p></figcaption></div></figure> <p>The left half of the figure shows the performance scalability of Albis on Crail in a setup with 1 core (8.9 Gbps) to 16 cores (85.5 Gbps). In comparison, the right half of the figure shows the performance of Crail on HDFS/NVMe at 59.9 Gbps, and on Crail/NVMe at 85.5 Gbps. The last bar shows the performance of Albis if the benchmark does not materialize Java object values. In this configuration, Albis on Crail delivers 91.3 Gbps, which is very close to the expected peak of 91.8 Gbps.</p> @@ -227,6 +227,6 @@ s.setAttribute('data-timestamp', +new Date()); <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/index.html ---------------------------------------------------------------------- diff --git a/content/blog/index.html b/content/blog/index.html index a61447b..feb6f7c 100644 --- a/content/blog/index.html +++ b/content/blog/index.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Latest posts</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/blog-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/blog-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/blog-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/blog-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li class="active"> - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -167,6 +167,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/page2/index.html ---------------------------------------------------------------------- diff --git a/content/blog/page2/index.html b/content/blog/page2/index.html index f0f630a..fe39c56 100644 --- a/content/blog/page2/index.html +++ b/content/blog/page2/index.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Latest posts</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/page2-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/page2-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/page2-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/page2-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -171,6 +171,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/page3/index.html ---------------------------------------------------------------------- diff --git a/content/blog/page3/index.html b/content/blog/page3/index.html index 2a39040..66c1c19 100644 --- a/content/blog/page3/index.html +++ b/content/blog/page3/index.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Latest posts</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/page3-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/page3-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/page3-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/page3-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -171,6 +171,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html> http://git-wip-us.apache.org/repos/asf/incubator-crail-website/blob/5b208cb9/content/blog/page4/index.html ---------------------------------------------------------------------- diff --git a/content/blog/page4/index.html b/content/blog/page4/index.html index 6fadfc3..bd8bfff 100644 --- a/content/blog/page4/index.html +++ b/content/blog/page4/index.html @@ -4,13 +4,13 @@ <meta charset="utf-8"> <title>The Apache Crail (Incubating) Project: Latest posts</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="http://crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> - <link href="http://crail.incubator.apache.org/css/group.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/bootstrap.min.css" rel="stylesheet"> + <link href="//crail.incubator.apache.org/css/group.css" rel="stylesheet"> <link rel="alternate" type="application/atom+xml" title="Atom" - href="http://crail.incubator.apache.org/blog/blog.xml"> + href="//crail.incubator.apache.org/blog/blog.xml"> - <meta property="og:image" content="http://crail.incubator.apache.org/img/blog/preview/page4-summary.png" /> - <meta property="og:image:secure_url" content="http://crail.incubator.apache.org/img/blog/preview/page4-summary.png" /> + <meta property="og:image" content="//crail.incubator.apache.org/img/blog/preview/page4-summary.png" /> + <meta property="og:image:secure_url" content="//crail.incubator.apache.org/img/blog/preview/page4-summary.png" /> </head> <body> @@ -21,50 +21,50 @@ <li > - <a href="http://crail.incubator.apache.org/"> + <a href="//crail.incubator.apache.org/"> Home </a> </li> <li > - <a href="http://crail.incubator.apache.org/overview/"> + <a href="//crail.incubator.apache.org/overview/"> Overview </a> </li> <li > - <a href="http://crail.incubator.apache.org/download/"> + <a href="//crail.incubator.apache.org/download/"> Downloads </a> </li> <li > - <a href="http://crail.incubator.apache.org/blog/"> + <a href="//crail.incubator.apache.org/blog/"> Blog </a> </li> <li > - <a href="http://crail.incubator.apache.org/community/"> + <a href="//crail.incubator.apache.org/community/"> Community </a> </li> <li > - <a href="http://crail.incubator.apache.org/documentation/"> + <a href="//crail.incubator.apache.org/documentation/"> Documentation </a> </li> </ul> - <a href="http://crail.incubator.apache.org/"> - <img src="http://crail.incubator.apache.org/img/crail_logo.png" - srcset="http://crail.incubator.apache.org/img/crail_logo.png" + <a href="//crail.incubator.apache.org/"> + <img src="//crail.incubator.apache.org/img/crail_logo.png" + srcset="//crail.incubator.apache.org/img/crail_logo.png" alt="Crail" id="logo"> </a> </div> @@ -171,6 +171,6 @@ <!-- Support retina images. --> <script type="text/javascript" - src="http://crail.incubator.apache.org/js/srcset-polyfill.js"></script> + src="//crail.incubator.apache.org/js/srcset-polyfill.js"></script> </body> </html>