Return-Path: X-Original-To: apmail-spark-dev-archive@minotaur.apache.org Delivered-To: apmail-spark-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 31A6617ECF for ; Sat, 1 Nov 2014 20:17:40 +0000 (UTC) Received: (qmail 15240 invoked by uid 500); 1 Nov 2014 20:17:39 -0000 Delivered-To: apmail-spark-dev-archive@spark.apache.org Received: (qmail 15170 invoked by uid 500); 1 Nov 2014 20:17:39 -0000 Mailing-List: contact dev-help@spark.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@spark.apache.org Received: (qmail 15158 invoked by uid 99); 1 Nov 2014 20:17:38 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 01 Nov 2014 20:17:38 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=10.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of pwendell@gmail.com designates 209.85.218.46 as permitted sender) Received: from [209.85.218.46] (HELO mail-oi0-f46.google.com) (209.85.218.46) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 01 Nov 2014 20:17:12 +0000 Received: by mail-oi0-f46.google.com with SMTP id g201so7072726oib.5 for ; Sat, 01 Nov 2014 13:17:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=emomOh/xR4F5Zg0isAQMAYL5ZULQq9kDkRlqLC53gpE=; b=bWXuxkuLbC21oRs6MEI1j1ucLU5uNH1VNZt5BTAi+2qYoM2M0jUTt/o7wESUpLwWeq J7bovSizII+SHm3XYg8Dv3CFv4oelAW8QkE06zE1N90ArMR6BK+nfOd1dVvVNBqrNRFl 2G7v3xrPE/NUQtcN59OQzTSpLViJmAxBZNA3OOt2BoN+i1ALMJsXC6oYW6PzbRD/OtbL PfWvVuSlKNw3va2n1Khxmn0XmzNMBeXF5bzO+uE+RhmuM/AMjtu0q8PAr5vTeYtf9phV L745Plk378dlojy8qrjppY0s4hcaMMGxtnFK4JOHWk1mxZQQuj/F+gcuSk032pNbgsnw Qidg== MIME-Version: 1.0 X-Received: by 10.182.108.229 with SMTP id hn5mr3240276obb.51.1414873030851; Sat, 01 Nov 2014 13:17:10 -0700 (PDT) Received: by 10.202.56.5 with HTTP; Sat, 1 Nov 2014 13:17:10 -0700 (PDT) Date: Sat, 1 Nov 2014 13:17:10 -0700 Message-ID: Subject: Changes to Spark's networking subsystem From: Patrick Wendell To: "dev@spark.apache.org" Content-Type: text/plain; charset=ISO-8859-1 X-Virus-Checked: Checked by ClamAV on apache.org == Short version == A recent commit replaces Spark's networking subsystem with one based on Netty rather than raw sockets. Users running off of master can disable this change by setting "spark.shuffle.blockTransferService=nio". We will be testing with this during the QA period for Spark 1.2. The new implementation is designed to increase stability and decrease GC pressure during shuffles. == Long version == For those who haven't been following the associated PR's and JIRA's: We recently merged PR #2753 which creates a "network" package which does not depend on Spark core. #2753 introduces a Netty-based BlockTransferService to replace the NIO-based ConnectionManager, used for transferring shuffle and RDD cache blocks between Executors (in other words, the transport layer of the BlockManager). The new BlockTransferService is intended to provide increased stability, decreased maintenance burden, and decreased garbage collection. By relying on Netty to take care of the low-level networking, the actual transfer code is simpler and easier to verify. By making use of ByteBuf pooling, we can lower both memory usage and memory churn by reusing buffers. This was actually a critical component of the petasort benchmark, where the code originated from. While building this component, we realized it was a good opportunity to extract out the core transport functionality from Spark so we could reuse it for SPARK-3796, which calls for an external service which can serve Spark shuffle files. Thus, we created the "network/common" package, containing the functionality for setting up a simple control plane and an efficient data plane over a network. This part is functionally independent from Spark and is in fact written in Java to further minimize dependencies. PR #3001 finishes the work of creating an external shuffle service by creating a "network/shuffle" package which deals with serving Spark shuffle files from outside of an executor. The intention is that this server can be run anywhere -- including inside the Spark Standalone Worker or the YARN NodeManager, or as a separate service inside Mesos -- and provide the ability to scale up and down executors without losing shuffle data. Thanks to Aaron, Reynold and others who have worked on these improvements over the last month. - Patrick --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@spark.apache.org For additional commands, e-mail: dev-help@spark.apache.org