The Cray Framework for Hadoop for the Cray XC30



Similar documents
Cray XC30 Hadoop Platform Jonathan (Bill) Sparks Howard Pritchard Martha Dumler

Understanding Hadoop Performance on Lustre

Experiences with Lustre* and Hadoop*

Enabling High performance Big Data platform with RDMA

COURSE CONTENT Big Data and Hadoop Training

HPCHadoop: A framework to run Hadoop on Cray X-series supercomputers

A Brief Introduction to Apache Tez

Hadoop Ecosystem B Y R A H I M A.

Hadoop MapReduce over Lustre* High Performance Data Division Omkar Kulkarni April 16, 2013

CSE-E5430 Scalable Cloud Computing Lecture 2

A Framework for Performance Analysis and Tuning in Hadoop Based Clusters

Cloudera Enterprise Reference Architecture for Google Cloud Platform Deployments

GraySort and MinuteSort at Yahoo on Hadoop 0.23

HPCHadoop: MapReduce on Cray X-series

HiBench Introduction. Carson Wang Software & Services Group

MapReduce and Lustre * : Running Hadoop * in a High Performance Computing Environment

Introduction to Hadoop HDFS and Ecosystems. Slides credits: Cloudera Academic Partners Program & Prof. De Liu, MSBA 6330 Harvesting Big Data

International Journal of Advancements in Research & Technology, Volume 3, Issue 2, February ISSN

CSE 590: Special Topics Course ( Supercomputing ) Lecture 10 ( MapReduce& Hadoop)

Enhancing Dataset Processing in Hadoop YARN Performance for Big Data Applications

Maximizing Hadoop Performance and Storage Capacity with AltraHD TM

Lustre * Filesystem for Cloud and Hadoop *

Hadoop Ecosystem Overview. CMSC 491 Hadoop-Based Distributed Computing Spring 2015 Adam Shook

Implement Hadoop jobs to extract business value from large and varied data sets

Hadoop* on Lustre* Liu Ying High Performance Data Division, Intel Corporation

Introduction to Big Data! with Apache Spark" UC#BERKELEY#

Big Data With Hadoop

CDH AND BUSINESS CONTINUITY:

Dell In-Memory Appliance for Cloudera Enterprise

Reference Architecture and Best Practices for Virtualizing Hadoop Workloads Justin Murray VMware

Introduction to Hadoop. New York Oracle User Group Vikas Sawhney

MapReduce Support in SLURM: Releasing the Elephant

Survey of the Benchmark Systems and Testing Frameworks For Tachyon-Perf

Moving From Hadoop to Spark

Mobile Cloud Computing for Data-Intensive Applications

CSE-E5430 Scalable Cloud Computing Lecture 11

What We Can Do in the Cloud (2) -Tutorial for Cloud Computing Course- Mikael Fernandus Simalango WISE Research Lab Ajou University, South Korea

Comparative analysis of mapreduce job by keeping data constant and varying cluster size technique

HPC ABDS: The Case for an Integrating Apache Big Data Stack

Apache Hadoop new way for the company to store and analyze big data

Can High-Performance Interconnects Benefit Memcached and Hadoop?

Overview. Big Data in Apache Hadoop. - HDFS - MapReduce in Hadoop - YARN. Big Data Management and Analytics

High Performance Computing with Hadoop WV HPC Summer Institute 2014

Prepared By : Manoj Kumar Joshi & Vikas Sawhney

Hadoop: The Definitive Guide

Hadoop Distributed File System. T Seminar On Multimedia Eero Kurkela

From GWS to MapReduce: Google s Cloud Technology in the Early Days

RED HAT ENTERPRISE LINUX 7

HADOOP MOCK TEST HADOOP MOCK TEST I

Storage Architectures for Big Data in the Cloud

Big Data Analytics - Accelerated. stream-horizon.com

Open source software framework designed for storage and processing of large scale data on clusters of commodity hardware

Outline. High Performance Computing (HPC) Big Data meets HPC. Case Studies: Some facts about Big Data Technologies HPC and Big Data converging

Accelerating and Simplifying Apache

A REVIEW PAPER ON THE HADOOP DISTRIBUTED FILE SYSTEM

CS2510 Computer Operating Systems

CS2510 Computer Operating Systems

Cloudera Enterprise Reference Architecture for Google Cloud Platform Deployments

Accelerating Hadoop MapReduce Using an In-Memory Data Grid

Policy-based Pre-Processing in Hadoop

Hadoop & Spark Using Amazon EMR

Apache Hadoop: Past, Present, and Future

JUMMP: Job Uninterrupted Maneuverable MapReduce Platform

Chase Wu New Jersey Ins0tute of Technology

Architecting for the next generation of Big Data Hortonworks HDP 2.0 on Red Hat Enterprise Linux 6 with OpenJDK 7

Big Data : Experiments with Apache Hadoop and JBoss Community projects

Introduction to Hadoop on the SDSC Gordon Data Intensive Cluster"

Distributed File System. MCSN N. Tonellotto Complements of Distributed Enabling Platforms

THE HADOOP DISTRIBUTED FILE SYSTEM

Savanna Hadoop on. OpenStack. Savanna Technical Lead

H2O on Hadoop. September 30,

Case Study : 3 different hadoop cluster deployments

Big Data: A Storage Systems Perspective Muthukumar Murugan Ph.D. HP Storage Division

Lecture 5: GFS & HDFS! Claudia Hauff (Web Information Systems)! ti2736b-ewi@tudelft.nl

Hadoop. Bioinformatics Big Data

Hadoop: Embracing future hardware

MPJ Express Meets YARN: Towards Java HPC on Hadoop Systems

Data-Intensive Programming. Timo Aaltonen Department of Pervasive Computing

SARAH Statistical Analysis for Resource Allocation in Hadoop

Take An Internal Look at Hadoop. Hairong Kuang Grid Team, Yahoo! Inc

Unstructured Data Accelerator (UDA) Author: Motti Beck, Mellanox Technologies Date: March 27, 2012

Introduction to Hadoop

Hadoop Deployment and Performance on Gordon Data Intensive Supercomputer!

Peers Techno log ies Pv t. L td. HADOOP

Benchmarking Hadoop & HBase on Violin

GraySort on Apache Spark by Databricks

HADOOP ADMINISTATION AND DEVELOPMENT TRAINING CURRICULUM

Big Data for Big Science. Bernard Doering Business Development, EMEA Big Data Software

ENABLING GLOBAL HADOOP WITH EMC ELASTIC CLOUD STORAGE

Journal of science STUDY ON REPLICA MANAGEMENT AND HIGH AVAILABILITY IN HADOOP DISTRIBUTED FILE SYSTEM (HDFS)

File S1: Supplementary Information of CloudDOE

International Journal of Advance Research in Computer Science and Management Studies

Pilot-Streaming: Design Considerations for a Stream Processing Framework for High- Performance Computing

MR+ A Technical Overview. Ralph H. Castain Wangda Tan. Greenplum/EMC. Copyright 2012 EMC Corporation. All rights reserved.

Deploying Hadoop with Manager

DATA MINING WITH HADOOP AND HIVE Introduction to Architecture

Hadoop. Sunday, November 25, 12

Department of Computer Science University of Cyprus EPL646 Advanced Topics in Databases. Lecture 14

Mambo Running Analytics on Enterprise Storage

Big Data Analytics - Accelerated. stream-horizon.com

Transcription:

PROCEEDINGS OF THE CRAY USER GROUP, 214 1 The Cray Framework for Hadoop for the Cray XC3 Jonathan Sparks, Howard Pritchard, and Martha Dumler Abstract This paper describes the Cray Framework for Hadoop on Cray XC3. This is a framework for supporting components of the Hadoop eco-system on XC3 s managed by widely used batch schedulers. The paper further describes experiences encountered in running Hadoop workloads over typical Lustre deployments on the Cray XC3. Related work to enable Hadoop to better utilize the XC high speed interconnect is discussed. Index Terms Hadoop, Cray XC3 1 INTRODUCTION Hadoop is an open source, scalable software eco system that can be used to solve many of the problems encountered by organizations trying to derive value from large amounts of data, whether structured, semi structured, or unstructured [2]. Although Hadoop has gained wide acceptance in the data intensive commercial space, and a few areas of HPC computing that map readily to the MapReduce programming model [8] (e.g. [12]), its adoption in the larger HPC community has been somewhat more limited. There are a number of obstacles slowing the adoption of Hadoop as part of typical HPC workflows. One of the most significant issues involves workload management. Many Hadoop components (e.g. HBase [1], Accumulo [1]) are intended to be used as long running, shared services and are not well suited to the batch oriented model typically used for managing large HPC systems. Even for potentially more batch oriented components of Hadoop like MapReduce, the YARN resource manager/job launcher [9] used in Hadoop 2 does not interoperate well with typical HPC batch schedulers. Although efforts have been made to, for example, integrate Slurm with some components of Hadoop [6], [7], such efforts have failed to gain acceptance within the wider Hadoop community. Another significant obstacle to broader adoption of Hadoop within the HPC community is the relatively tight coupling of Hadoop components to the Hadoop Distributed File System (HDFS), or more precisely, to the Hadoop Distributed File System Java class. Also, Hadoop works best on systems where each node has some amount of local persistent storage. Since Hadoop code is mainly developed and used where HDFS is deployed and nodes have local storage, deployment on typical HPC systems having no node-local storage, and The authors are with Cray, Inc. E-mail: jsparks,howardp,mbd@cray.com with parallel file systems designed for HPC style I/O patterns can present some challenges, particularly at scale. The Cray Framework for Hadoop for Cray XC3 is intended to address both the workload management challenges presented by the Hadoop ecosystem when used in a typical HPC environment, as well as address to some extent issues that arise from trying to use Hadoop on Lustre. The rest of this paper is organized as follows. First, an overview of the Cray Framework for Hadoop is presented. This includes a high level description of to how install a Hadoop distribution and the Framework on a Cray XC 3 system. Various tuning options available to users are also discussed. A subsequent section describes experiences using Hadoop MapReduce at scale on a XC 3 system, and measures that can be taken to improve the performance of the application when using Lustre. Additional work Cray has undertaken to improve the performance of Hadoop components is also described. 2 INSTALLING CRAY FRAMEWORK FOR HADOOP The Cray Framework for Hadoop is based on the my- Hadoop project [3]. The Framework consists of Cray myhadoop a set of scripts which enable a user of a Cray XC3 system managed either by PBS Pro or Moab/Torque to run Hadoop MapReduce jobs. Included are a default set of Hadoop configuration files tuned for typical Cray XC3 compute node configurations. The Hadoop eco-system components Pig, Mahout, and Crunch are also supported by the Framework. Also included in the package is a sample batch script users can modify for their particular Hadoop applications. Cray myhadoop does not include a Hadoop distribution. A site wishing to make use of the Cray myhadoop must first install a Hadoop distribution in the shared root. Cray myhadoop has been tested with Apache Bigtop, Cloudera, HortonWorks, IDH (Intel Hadoop)

PROCEEDINGS OF THE CRAY USER GROUP, 214 2 distributions. Cray myhadoop requires that the Apache Core Hadoop, Pig, Zookeeper, and Mahout be installed. Zookeeper is only needed for resolving RPM dependencies and support libraries. Note that all Hadoop services must be turned off in the default class view of the XC3 root filesystem. In addition, the nc binary (available in the netcat-openbsd package) is also required. The system must be running CLE 5.2 UP and also have CCM (Cray cluster compatibility package) installed. After installing a Hadoop distribution, the Cray my- Hadoop rpm can be installed in the shared root. Before using Hadoop and the Cray myhadoop, some site specific customizations are recommended: A consistent version of the Java JVM needs to be used. The /etc/hadoop/conf/hadoop-env.sh script needs to be modified so that JAVA HOME points to the default Cray CLE JDK; Adjust the following YARN parameters to reflect the number of cpus per node (cores) and memory per node for the nodes in the XC system to be used for running Hadoop jobs: yarn.nodemanager.resource.cpucores and yarn.nodemanager.resource.memory-mb. These are in the yarn-site.xml configuration file that comes on the Cray myhadoop RPM. The system administrator may also wish to adjust default the memory limits for MapReduce mapper and reducer tasks. These are controlled via the mapreduce.map.memory.mb, mapreduce.map.java.opts, mapreduce.reduce.memory.mb, and mapreduce.reduce.java.opts. These parameters are specified in the mapred-site.xml configuration file that comes on the Cray myhadoop RPM. Note that Hadoop works best when all of the nodes to be used for myhadoop batch jobs have the same amount of memory and cores per node. See [4] for further details on setting default Hadoop parameters. In addition to the Hadoop tuning parameters described above, there are additional parameters controlling the location of YARN application log directories and application work directories that need to be considered. By default Cray myhadoop uses tmpfs for these directories. This helps considerably in mitigating issues encountered with the Lustre MDS when running larger (more than about 16 nodes) myhadoop jobs on a Cray XC3. However, since the tmpfs on each node is limited, jobs requiring a lot of memory for map and reducer tasks can fail. Rather than set Lustre as the system wide default file system for these directories, it is recommended that users running Hadoop jobs which cannot use tmpfs do the following: Make a copy of the contents of /opt/cray/myhadoop/default to a directory (designated X in this example) where the user has read write permissions and which is mounted on the compute nodes. The user should modify the line in X/bin/functions.sh where the yarnlocalstoredirtmp throughput (MB/sec) 4 35 3 25 2 15 1 5 HDFS over Lustre rawfs over Lustre 1 1 1 1 1 file size (MB) Fig. 1. Single node DFSIO Test using HDFS over Lustre and rawfs over Lustre is set. In the user s batch script set the MY- HADOOP HOME environment variable to point to directory X. There are a number of environment variables users can employ in their myhadoop batch jobs to fine tune the behavior of Hadoop and the myhadoop framework. See Table 1. 3 OBSERVATIONS AND EXPERIENCES USING CRAY MYHADOOP A typical Hadoop deployment, in which many elements of the Hadoop eco system are utilized, including Hbase, etc. makes extensive use of HDFS. Application jar files are copied to HDFS as part of job launch, YARN saves job logfiles to HDFS, etc. Input and output data from MapReduce jobs are stored on HDFS. Basically any persistent data is stored on HDFS. In initial investigations of how to support Hadoop on Cray XC systems, it was considered important to try and support HDFS which meant running HDFS on top of Lustre. Although HDFS can be run on top of Lustre, there are significant performance penalties. Also as attempts were made to run larger jobs using HDFS over Lustre, numerous issues in the Lustre software stack were encountered. Tests using the DFSIO benchmark show the impact of the HDFS protocol when running over Lustre verses just having the DFSIO benchmark read and write directly to Lustre. Figure 1 compares throughput rate obtained by the DFSIO test for a single process when reading/writing to HDFS over Lustre and directly to Lustre

PROCEEDINGS OF THE CRAY USER GROUP, 214 3 TABLE 1 Environment variables for Cray myhadoop Variable Description Default or Suggested Value MYHADOOP DEBUG Turns on script debugging output, false true or false MYHADOOP HOME Location of myhadoop scripts /opt/cray/myhadoop/default HADOOP PREFIX Location of installed Hadoop / User scripts will need to set to /alt-root if Hadoop is installed in an alternate root location /alt-root HADOOP USER PATH FIRST Prepend Hadoop paths to user false path, true or false HADOOP USER CLASSPATH FIRST Prepend Hadoop classpath to true classpath, true or false MYHADOOP FSTYPE Switches Hadoop to use the rawfs built in raw file system class, or HDFS. Values: hdfs or rawfs 1 8 6 4 2 Grep Terasort RankedInvertedIndext SequenceCount HistrogramRatings HistrogramMovies Classification AdjacencyList Selfjoin InvertedIdx Wordcount hdfs lustre Fig. 2. Runtime for PUMA benchmarks using HDFS vs using Lustre (Hadoop raw file system class) using the raw file system class available in Hadoop - the file system class Hadoop uses when writing to local file systems. Note that for the HDFS default block size (64MB), using the raw file system yields over a two fold improvement in throughput rate compared to HDFS. In addition, as shown in Figure 2 using Lustre directly for job input and output, rather than HDFS, was found to speed up almost all of the PUMA Hadoop benchmarks [5] significantly. In addition, running HDFS over Lustre at scale in terms of data stored presents other challenges, particularly in the growth of file metadata, since HDFS adds yet another block storage construct on top of the striping notion intrinsic to the Lustre file system. Fortunately, a refinement of efforts to support Hadoop on Cray XC3 systems allowed for the revisiting of the assumption that HDFS needed to be supported. If usage of Hadoop is restricted to a subset of the Hadoop eco system, namely only supporting MapReduce, workflow management software for MapReduce workloads, and a few other applications making use of MapReduce, then the need to support HDFS on XC3 systems becomes optional. Note that without the presence of a global file system already (Lustre) this would not be the case. Although turning off HDFS over Lustre helps, as attempts were made to scale up job sizes run within myhadoop, the ways in which Hadoop uses filesystems still resulted in quite a number of issues with Lustre. Lustre is intended primarily for use by HPC style applications, which tend to focus on reading and writing data to files. Although Hadoop does this, parts of Hadoop, for example the OutputCommitter class, tend to do a lot of meta-data type operations: getting file attributes, renaming files and directories, traversing directory structures, changing permissions on files and directories, etc. Depending on the Hadoop workload, many threads on a given node can be simultaneously issuing these types of meta-data operations. The Lustre meta-data server (MDS) is not designed to hold up very well under these types of I/O workloads when many nodes are being used for a Hadoop job. To mitigate these Lustre issues, the default myhadoop configuration was changed to use local ramfs on the compute nodes for as many intermediate files (YARN task logs, application intermediate output files such as map output files from mapper tasks) as possible. By using the compute node ramfs, many of the problems encountered with Lustre can be bypassed. Using ramfs rather than Lustre also speeds up many MapReduce jobs significantly. The startup overhead of the myhadoop framework itself was also found to be a bottleneck when scaling beyond a few dozen nodes. By not using HDFS (and thus eliminating the startup associated with starting the

PROCEEDINGS OF THE CRAY USER GROUP, 214 4 1 myhadoop startup time 6 5 time (secs) 1 1 1 1 2 3 4 5 node count using ssh using pdsh Fig. 3. Comparison of myhadoop startup times using ssh and pdsh. namenode and datanode daemons), the startup time was reduced somewhat, but not sufficiently to make the script practical for more than about 32 nodes. By replacing the use of ssh to startup the YARN nodemanagers with pdsh, a much more significant speedup was realized. Replacing ssh with pdsh yielded a speedup of about 2 when launching the framework across 512 nodes. See Figure 3. 4 OTHER WORK At first glance, when using MapReduce with a global shared file system like Lustre, it would seem an obvious place for improvement of the algorithm would be to bypass the http get method by which reducer tasks access the map output files where mapper tasks had previously executed. Note that map output files are written to local storage on a typical Hadoop cluster, not to HDFS. In contrast, on an XC3 system using Cray myhadoop, the map output files may optionally be written to Lustre rather than ramfs. With Hadoop 2, MapReduce supports a plugin model which allows one to override the default MapReduce shuffle method with a different Java class. As part of the Cray Framework for Hadoop, a Shuffle class was implemented in which reducer tasks bypass the http get for obtaining the map output file data by reading the data directly from Lustre. It was found that this method actually is slower for cases where the map output files are small enough to remain within the file system buffer cache of the nodes where mapper tasks were run. It is actually faster in this case for the YARN nodemanager daemon (where the http server for handling the map bandwidth (Mb/sec) 4 3 2 1 gsockets TCP sockets 1e+6 2e+6 3e+6 4e+6 5e+6 6e+6 7e+6 8e+6 message size (bytes) Fig. 4. Comparison of Bandwidth using gsockets vs TCP sockets on Cray XC3. output file transfers is run) to send the data back to the requesting reducer task directly without having to retrieve the data from slow spinning media. In the course of analyzing the performance of the shuffle method it was found that on XC3 systems running MapReduce jobs of potential interest for HPC applications where its typically one of distilling a large amount of input data into a small set of interesting data points this is the more frequent MapReduce usage model. However, for large Extract-Transform-Load (ETL) style MapReduce jobs running at modest 4-8 node counts, the plugin may prove useful. This Lustre aware shuffle plugin is included as part of the Cray Framework for Hadoop. Note that to use this plugin, the user must follow the steps described in section 2. Another avenue was also explored for improving the performance of Hadoop, as well as other applications which make use of TCP sockets for inter node communication. Using the OFED rsockets package as a starting point, this user space based sockets over IBverbs library was enhanced to use the XC3 native GNI api. This native GNI port of rsockets was renamed gsockets. A significant improvement in both bandwidth and latency was observed using gsockets compared to standard TCP when using NpTest. See Figure 4. In practice it was found to be very challenging to get a user space based sockets implementation to work within even the relatively restricted Cray myhadoop usage model. Nonetheless, with sufficient modifications to the various Hadoop startup scripts, and fixes to the original OFED rsockets implementation, it could be made to work with Hadoop. Although no significant speedups of typical Mapreduce jobs has yet been observed using gsockets, it is anticipated that with further testing certain MapReduce jobs may benefit from the use of gsockets. Efforts are underway to rework gsockets into a kernel based implementation. This should significantly reduce

PROCEEDINGS OF THE CRAY USER GROUP, 214 5 effort needed to get TCP applications using this higher performing socket path. 5 CONCLUSIONS The Cray Framework for Hadoop on Cray XC3 provides a supported means by which users can run Hadoop MapReduce applications on Cray XC3 systems in a way that is batch scheduler friendly. Possible future work to extend the capabilities of the Cray myhadoop include interoperability with Spark [11], enhance the Framework to work with Slurm, as well as enhancements to better work with Lustre at scale. ACKNOWLEDGMENTS The authors would like to thank James Shimek (Cray, Inc.) and Zach Tiffany (Cray, Inc.) for their work developing the gsockets package. REFERENCES [1] Accumulo. accumulo.apache.org. [2] Hadoop. hadoop.apache.org. [3] Myhadoop. sourceforge.net/projects/myhadoop. [4] Cray Software Document S-2536-6:Installing myhadoop on Cray XC, XK, and XE Systems, April 214. [5] F. Ahmad, S. Lee, M. Thottethodi, and T. Vijaykumar. Puma: Purdue mapreduce benchmarks suite. 212. [6] R. Castain, W. Tan, J. Cao, M. Lv, M. Jette, and D. Auble. MapReduce and Support in SLURM: Releasing the Elephant. In Slurm Users Group 212, 212. [7] R. H. Castain and O. Kulkarni. MapReduce and Lustre: Running Hadoop in a High Performance Computing Environment. In Intel Developers Forum 213, 213. [8] J. Dean and S. Ghemawat. Mapreduce: simplified data processing on large clusters. Communications of the ACM, 51(1):17 113, 28. [9] V. K. Vavilapalli, A. C. Murthy, C. Douglas, S. Agarwal, M. Konar, R. Evans, T. Graves, J. Lowe, H. Shah, S. Seth, et al. Apache hadoop yarn: Yet another resource negotiator. In Proceedings of the 4th annual Symposium on Cloud Computing, page 5. ACM, 213. [1] M. N. Vora. Hadoop-hbase for large-scale data. In Computer Science and Network Technology (ICCSNT), 211 International Conference on, volume 1, pages 61 65. IEEE, 211. [11] M. Zaharia, M. Chowdhury, T. Das, A. Dave, J. Ma, M. Mccauley, M. Franklin, S. Shenker, and I. Stoica. Fast and interactive analytics over hadoop data with spark. USENIX, 212. [12] Q. Zou, X.-B. Li, W.-R. Jiang, Z.-Y. Lin, G.-L. Li, and K. Chen. Survey of mapreduce frame operation in bioinformatics. Briefings in bioinformatics, page bbs88, 213.