| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Apache Mesos - Getting Started</title> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| |
| <meta property="og:locale" content="en_US"/> |
| <meta property="og:type" content="website"/> |
| <meta property="og:title" content="Apache Mesos"/> |
| <meta property="og:site_name" content="Apache Mesos"/> |
| <meta property="og:url" content="http://mesos.apache.org/"/> |
| <meta property="og:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/> |
| <meta property="og:description" |
| content="Apache Mesos abstracts resources away from machines, |
| enabling fault-tolerant and elastic distributed systems |
| to easily be built and run effectively."/> |
| |
| <meta name="twitter:card" content="summary"/> |
| <meta name="twitter:site" content="@ApacheMesos"/> |
| <meta name="twitter:title" content="Apache Mesos"/> |
| <meta name="twitter:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/> |
| <meta name="twitter:description" |
| content="Apache Mesos abstracts resources away from machines, |
| enabling fault-tolerant and elastic distributed systems |
| to easily be built and run effectively."/> |
| |
| <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> |
| <link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml"> |
| <link href="../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" /> |
| |
| |
| |
| <!-- Google Analytics Magic --> |
| <script type="text/javascript"> |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-20226872-1']); |
| _gaq.push(['_setDomainName', 'apache.org']); |
| _gaq.push(['_trackPageview']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| })(); |
| </script> |
| |
| </head> |
| <body> |
| <!-- magical breadcrumbs --> |
| <div class="topnav"> |
| <div class="container"> |
| <ul class="breadcrumb"> |
| <li> |
| <div class="dropdown"> |
| <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a> |
| <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> |
| <li><a href="http://www.apache.org">Apache Homepage</a></li> |
| <li><a href="http://www.apache.org/licenses/">License</a></li> |
| <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| <li><a href="http://www.apache.org/security/">Security</a></li> |
| </ul> |
| </div> |
| </li> |
| |
| <li><a href="http://mesos.apache.org">Apache Mesos</a></li> |
| |
| |
| <li><a href="/documentation |
| /">Documentation |
| </a></li> |
| |
| |
| </ul><!-- /.breadcrumb --> |
| </div><!-- /.container --> |
| </div><!-- /.topnav --> |
| |
| <!-- navbar excitement --> |
| <div class="navbar navbar-default navbar-static-top" role="navigation"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mesos-menu" aria-expanded="false"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <a class="navbar-brand" href="/"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo"/></a> |
| </div><!-- /.navbar-header --> |
| |
| <div class="navbar-collapse collapse" id="mesos-menu"> |
| <ul class="nav navbar-nav navbar-right"> |
| <li><a href="/gettingstarted/">Getting Started</a></li> |
| <li><a href="/blog/">Blog</a></li> |
| <li><a href="/documentation/latest/">Documentation</a></li> |
| <li><a href="/downloads/">Downloads</a></li> |
| <li><a href="/community/">Community</a></li> |
| </ul> |
| </div><!-- /#mesos-menu --> |
| </div><!-- /.container --> |
| </div><!-- /.navbar --> |
| |
| <div class="content"> |
| <div class="container"> |
| <div class="row-fluid"> |
| <div class="col-md-4"> |
| <h4>If you're new to Mesos</h4> |
| <p>See the <a href="/gettingstarted/">getting started</a> page for more |
| information about downloading, building, and deploying Mesos.</p> |
| |
| <h4>If you'd like to get involved or you're looking for support</h4> |
| <p>See our <a href="/community/">community</a> page for more details.</p> |
| </div> |
| <div class="col-md-8"> |
| <h1>Getting Started</h1> |
| |
| <h2>Downloading Mesos</h2> |
| |
| <p>There are different ways you can get Mesos:</p> |
| |
| <p>1. Download the latest stable release from <a href="http://mesos.apache.org/downloads/">Apache</a> (<strong><em>Recommended</em></strong>)</p> |
| |
| <pre><code>$ wget http://www.apache.org/dist/mesos/1.2.0/mesos-1.2.0.tar.gz |
| $ tar -zxf mesos-1.2.0.tar.gz |
| </code></pre> |
| |
| <p>2. Clone the Mesos git <a href="https://git-wip-us.apache.org/repos/asf/mesos.git">repository</a> (<strong><em>Advanced Users Only</em></strong>)</p> |
| |
| <pre><code>$ git clone https://git-wip-us.apache.org/repos/asf/mesos.git |
| </code></pre> |
| |
| <p><em>NOTE: If you have problems running the above commands, you may need to first run through the </em><strong>System Requirements</strong><em> section below to install the <code>wget</code>, <code>tar</code>, and <code>git</code> utilities for your system.</em></p> |
| |
| <h2>System Requirements</h2> |
| |
| <p>Mesos runs on Linux (64 Bit) and Mac OS X (64 Bit). To build Mesos from source, GCC 4.8.1+ or Clang 3.5+ is required.</p> |
| |
| <p>For full support of process isolation under Linux a recent kernel >=3.10 is required.</p> |
| |
| <p>The Mesos agent also runs on Windows. To build Mesos from source, follow the instructions in the <a href="/documentation/latest/./windows/">Windows</a> section.</p> |
| |
| <p>Make sure your hostname is resolvable via DNS or via <code>/etc/hosts</code> to allow full support of Docker’s host-networking capabilities, needed for some of the Mesos tests. When in doubt, please validate that <code>/etc/hosts</code> contains your hostname.</p> |
| |
| <h3>Ubuntu 14.04</h3> |
| |
| <p>Following are the instructions for stock Ubuntu 14.04. If you are using a different OS, please install the packages accordingly.</p> |
| |
| <pre><code># Update the packages. |
| $ sudo apt-get update |
| |
| # Install a few utility tools. |
| $ sudo apt-get install -y tar wget git |
| |
| # Install the latest OpenJDK. |
| $ sudo apt-get install -y openjdk-7-jdk |
| |
| # Install autotools (Only necessary if building from git repository). |
| $ sudo apt-get install -y autoconf libtool |
| |
| # Install other Mesos dependencies. |
| $ sudo apt-get -y install build-essential python-dev libcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev |
| </code></pre> |
| |
| <h3>Ubuntu 16.04</h3> |
| |
| <p>Following are the instructions for stock Ubuntu 16.04. If you are using a different OS, please install the packages accordingly.</p> |
| |
| <pre><code># Update the packages. |
| $ sudo apt-get update |
| |
| # Install a few utility tools. |
| $ sudo apt-get install -y tar wget git |
| |
| # Install the latest OpenJDK. |
| $ sudo apt-get install -y openjdk-8-jdk |
| |
| # Install autotools (Only necessary if building from git repository). |
| $ sudo apt-get install -y autoconf libtool |
| |
| # Install other Mesos dependencies. |
| $ sudo apt-get -y install build-essential python-dev libcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev zlib1g-dev |
| </code></pre> |
| |
| <h3>Mac OS X 10.10 (Yosemite), Mac OS X 10.11 (El Capitan), macOS 10.12 (Sierra)</h3> |
| |
| <p>Following are the instructions for stock Mac OS X Yosemite and El Capitan. If you are using a different OS, please install the packages accordingly.</p> |
| |
| <pre><code># Install Command Line Tools. |
| $ xcode-select --install |
| |
| # Install Homebrew. |
| $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
| |
| # Install Java. |
| $ brew install Caskroom/cask/java |
| |
| # Install libraries. |
| $ brew install wget git autoconf automake libtool subversion maven |
| </code></pre> |
| |
| <p>When compiling on macOS 10.12, the following is needed:</p> |
| |
| <pre><code># There is an incompatiblity with the system installed svn and apr headers. |
| # We need the svn and apr headers from a brew installation of subversion. |
| # You may need to unlink the existing version of subversion installed via |
| # brew in order to configure correctly. |
| $ brew unlink subversion # (If already installed) |
| $ brew install subversion |
| |
| # When configuring, the svn and apr headers from brew will be automatically |
| # detected, so no need to explicitly point to them. Also, |
| # `-Wno-deprecated-declarations` is needed to suppress warnings. |
| $ ../configure CXXFLAGS=-Wno-deprecated-declarations |
| |
| # Lastly, you may encounter the following error when the libprocess tests run: |
| $ ./libprocess-tests |
| Failed to obtain the IP address for '<hostname>'; the DNS service may not be able to resolve it: nodename nor servname provided, or not known |
| |
| # If so, turn on 'Remote Login' within System Preferences > Sharing to resolve the issue. |
| </code></pre> |
| |
| <p><em>NOTE: When upgrading from Yosemite to El Capitan, make sure to rerun <code>xcode-select --install</code> after the upgrade.</em></p> |
| |
| <h3>CentOS 6.6</h3> |
| |
| <p>Following are the instructions for stock CentOS 6.6. If you are using a different OS, please install the packages accordingly.</p> |
| |
| <pre><code># Install a recent kernel for full support of process isolation. |
| $ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org |
| $ sudo rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm |
| $ sudo yum --enablerepo=elrepo-kernel install -y kernel-lt |
| |
| # Make the just installed kernel the one booted by default, and reboot. |
| $ sudo sed -i 's/default=1/default=0/g' /boot/grub/grub.conf |
| $ sudo reboot |
| |
| # Install a few utility tools. This also forces an update of `nss`, |
| # which is necessary for the Java bindings to build properly. |
| $ sudo yum install -y tar wget git which nss |
| |
| # 'Mesos > 0.21.0' requires a C++ compiler with full C++11 support, |
| # (e.g. GCC > 4.8) which is available via 'devtoolset-2'. |
| # Fetch the Scientific Linux CERN devtoolset repo file. |
| $ sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo |
| |
| # Import the CERN GPG key. |
| $ sudo rpm --import http://linuxsoft.cern.ch/cern/centos/7/os/x86_64/RPM-GPG-KEY-cern |
| |
| # Fetch the Apache Maven repo file. |
| $ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo |
| |
| # 'Mesos > 0.21.0' requires 'subversion > 1.8' devel package, which is |
| # not available in the default repositories. |
| # Create a WANdisco SVN repo file to install the correct version: |
| $ sudo bash -c 'cat > /etc/yum.repos.d/wandisco-svn.repo <<EOF |
| [WANdiscoSVN] |
| name=WANdisco SVN Repo 1.8 |
| enabled=1 |
| baseurl=http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/ |
| gpgcheck=1 |
| gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco |
| EOF' |
| |
| # Install essential development tools. |
| $ sudo yum groupinstall -y "Development Tools" |
| |
| # Install 'devtoolset-2-toolchain' which includes GCC 4.8.2 and related packages. |
| $ sudo yum install -y devtoolset-2-toolchain |
| |
| # Install other Mesos dependencies. |
| $ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel |
| |
| # Enter a shell with 'devtoolset-2' enabled. |
| $ scl enable devtoolset-2 bash |
| $ g++ --version # Make sure you've got GCC > 4.8! |
| |
| # Process isolation is using cgroups that are managed by 'cgconfig'. |
| # The 'cgconfig' service is not started by default on CentOS 6.6. |
| # Also the default configuration does not attach the 'perf_event' subsystem. |
| # To do this, add 'perf_event = /cgroup/perf_event;' to the entries in '/etc/cgconfig.conf'. |
| $ sudo yum install -y libcgroup |
| $ sudo service cgconfig start |
| </code></pre> |
| |
| <h3>CentOS 7.1</h3> |
| |
| <p>Following are the instructions for stock CentOS 7.1. If you are using a different OS, please install the packages accordingly.</p> |
| |
| <pre><code># Install a few utility tools |
| $ sudo yum install -y tar wget git |
| |
| # Fetch the Apache Maven repo file. |
| $ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo |
| |
| # Install the EPEL repo so that we can pull in 'libserf-1' as part of our |
| # subversion install below. |
| $ sudo yum install -y epel-release |
| |
| # 'Mesos > 0.21.0' requires 'subversion > 1.8' devel package, |
| # which is not available in the default repositories. |
| # Create a WANdisco SVN repo file to install the correct version: |
| $ sudo bash -c 'cat > /etc/yum.repos.d/wandisco-svn.repo <<EOF |
| [WANdiscoSVN] |
| name=WANdisco SVN Repo 1.9 |
| enabled=1 |
| baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/\$basearch/ |
| gpgcheck=1 |
| gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco |
| EOF' |
| |
| # Parts of Mesos require systemd in order to operate. However, Mesos |
| # only supports versions of systemd that contain the 'Delegate' flag. |
| # This flag was first introduced in 'systemd version 218', which is |
| # lower than the default version installed by centos. Luckily, centos |
| # 7.1 has a patched 'systemd < 218' that contains the 'Delegate' flag. |
| # Explicity update systemd to this patched version. |
| $ sudo yum update systemd |
| |
| # Install essential development tools. |
| $ sudo yum groupinstall -y "Development Tools" |
| |
| # Install other Mesos dependencies. |
| $ sudo yum install -y apache-maven python-devel java-1.8.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel |
| </code></pre> |
| |
| <h3>Windows</h3> |
| |
| <p>Follow the instructions in the <a href="/documentation/latest/./windows/">Windows</a> section.</p> |
| |
| <h2>Building Mesos (Posix)</h2> |
| |
| <pre><code># Change working directory. |
| $ cd mesos |
| |
| # Bootstrap (Only required if building from git repository). |
| $ ./bootstrap |
| |
| # Configure and build. |
| $ mkdir build |
| $ cd build |
| $ ../configure |
| $ make |
| </code></pre> |
| |
| <p>In order to speed up the build and reduce verbosity of the logs, you can append <code>-j <number of cores> V=0</code> to <code>make</code>.</p> |
| |
| <pre><code># Run test suite. |
| $ make check |
| |
| # Install (Optional). |
| $ make install |
| </code></pre> |
| |
| <h2>Examples</h2> |
| |
| <p>Mesos comes bundled with example frameworks written in C++, Java and Python. |
| The framework binaries will only be available after running <code>make check</code>, as |
| described in the <strong><em>Building Mesos</em></strong> section above.</p> |
| |
| <pre><code># Change into build directory. |
| $ cd build |
| |
| # Start mesos master (Ensure work directory exists and has proper permissions). |
| $ ./bin/mesos-master.sh --ip=127.0.0.1 --work_dir=/var/lib/mesos |
| |
| # Start mesos agent (Ensure work directory exists and has proper permissions). |
| $ ./bin/mesos-agent.sh --master=127.0.0.1:5050 --work_dir=/var/lib/mesos |
| |
| # Visit the mesos web page. |
| $ http://127.0.0.1:5050 |
| |
| # Run C++ framework (Exits after successfully running some tasks.). |
| $ ./src/test-framework --master=127.0.0.1:5050 |
| |
| # Run Java framework (Exits after successfully running some tasks.). |
| $ ./src/examples/java/test-framework 127.0.0.1:5050 |
| |
| # Run Python framework (Exits after successfully running some tasks.). |
| $ ./src/examples/python/test-framework 127.0.0.1:5050 |
| </code></pre> |
| |
| <p><em>Note: These examples assume you are running Mesos on your local machine. |
| Following them will not allow you to access the Mesos web page in a production |
| environment (e.g. on AWS). For that you will need to specify the actual IP of |
| your host when launching the Mesos master and ensure your firewall settings |
| allow access to port 5050 from the outside world.</em></p> |
| |
| </div> |
| </div> |
| |
| </div><!-- /.container --> |
| </div><!-- /.content --> |
| |
| <hr> |
| |
| |
| |
| <!-- footer --> |
| <div class="footer"> |
| <div class="container"> |
| <div class="col-md-4 social-blk"> |
| <span class="social"> |
| <a href="https://twitter.com/ApacheMesos" |
| class="twitter-follow-button" |
| data-show-count="false" data-size="large">Follow @ApacheMesos</a> |
| <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> |
| <a href="https://twitter.com/intent/tweet?button_hashtag=mesos" |
| class="twitter-hashtag-button" |
| data-size="large" |
| data-related="ApacheMesos">Tweet #mesos</a> |
| <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> |
| </span> |
| </div> |
| |
| <div class="col-md-8 trademark"> |
| <p>© 2012-2017 <a href="http://apache.org">The Apache Software Foundation</a>. |
| Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation. |
| <p> |
| </div> |
| </div><!-- /.container --> |
| </div><!-- /.footer --> |
| |
| <!-- JS --> |
| <script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script> |
| <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script> |
| </body> |
| </html> |