DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Deployment
  4. Installing Apache Mesos 1.6.0 on Ubuntu 18.04

Installing Apache Mesos 1.6.0 on Ubuntu 18.04

In this article, we go over a topic crucial to big data practitioners, namely, how to get Apache Mesos set up on a machine that's running Ubuntu.

Bill Ward user avatar by
Bill Ward
·
Jul. 06, 18 · Tutorial
Like (5)
Save
Tweet
Share
16.98K Views

Join the DZone community and get the full member experience.

Join For Free

In this post, I will show you how to install Mesos on Ubuntu 18.04. This article is part of my new series on Fast Data Architecture. I have installed Mesos on other versions of Ubuntu but had some difficulties getting everything working on Ubuntu 18.04. We will overcome each one and get Mesos 1.6.0 installed.

Cluster Design

This cluster will be similar to other Mesos/Marathon clusters I have created. I will make this one a little beefier because I want to use it as a training platform for the Fast Data Architecture using a SMACK stack. I will go more in-depth on what a SMACK stack is in a later post. But, to sum up, it is a Fast Data Architecture that utilizes Spark, Mesos, Akka, Cassandra, and Kafka to implement one form of Big Data. You can find out more from this free ebook from the folks at Mesosphere which inspired this series of posts.

I built 5 virtual machines. Three of them are going to be Mesos Masters and have 4 vCPUs and 4 GB of memory. I made them this big so that when I compiled Mesos it would not take all night. The last two virtual machines are the Mesos Slaves and I made them pretty stout at 8 vCPUs and 8 GB of memory each. I knew I needed a little horsepower to run my little lab so these guys are pretty strong (for my lab environment that is).

Here are the systems including hostnames and IP configurations.

Mesos Master 1 - mesos1.admintome.lab  192.168.1.30
Mesos Master 2 - mesos2.admintome.lab  192.168.1.31
Mesos Master 3 - mesos3.admintome.lab  192.168.1.32

Mesos Slave 1 - mslave1.admintome.lab 192.168.1.33
Mesos Slave 2 - mslave2.admintome.lab 192.168.1.34

All systems have a static IP address and I set up my local DNS servers with the hostnames so that NS lookups on the systems would point to the correct IP. If you don't have local DNS servers then simply update your /etc/hosts file to look like this on each server:

192.168.1.30  mesos1.admintome.lab   mesos1
192.168.1.31  mesos2.admintome.lab   mesos2
192.168.1.32  mesos3.admintome.lab   mesos3
192.168.1.33  mslave1.admintome.lab  mslave1
192.168.1.34  mslave2.admintome.lab  mslave2

You will of course have to change the domain to match yours or if you don't have a domain exclude that second entry on each line. Enough of the boring stuff, time to get started configuring Mesos on Ubuntu 18.04!

Install Mesos on Ubuntu 18.04

You will need to run the commands in this section on all your virtual machines including the Mesos Slaves.

As with most of my how-tos, we need to first update and upgrade a fresh install of Ubuntu 18.04.

# apt update && apt upgrade -y

Reboot your system and we can begin installing the dependencies.

# apt install openjdk-8-jdk -y
# export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
# apt -y install build-essential python-dev libcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev zlib1g-dev
# apt install unzip

I discovered that there is a bug with Ubuntu 18.04 and Java that causes an issue with Maven during the compile and shows an error similar to this:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

I beat my head on the wall for two hours trying to find the fix until I came across this awesome StackOverflow answer that fixes the issue. Run these commands and you won't have the same problem:

# /usr/bin/printf '\xfe\xed\xfe\xed\x00\x00\x00\x02\x00\x00\x00\x00\xe2\x68\x6e\x45\xfb\x43\xdf\xa4\xd9\x92\xdd\x41\xce\xb6\xb2\x1c\x63\x30\xd7\x92' > /etc/ssl/certs/java/cacerts
# /var/lib/dpkg/info/ca-certificates-java.postinst configure

Your systems are now set up to compile everything successfully.

Compile the Source Code

I found that this works best if you run this section on one server at a time. We will compile Mesos on each and every node in the cluster. Which sucks because it takes forever. I don't know if you can compile on one server and install on the remaining servers so I asked a question on StackOverflow. Hopefully, the experts will show me what I am doing wrong and make this install a lot quicker.

The first thing we have to do is download the source for Apache Mesos 1.6.0:

# wgethttp://www.apache.org/dist/mesos/1.6.0/mesos-1.6.0.tar.gz

Unzip the tarball and configure the build:

# tar -xzvf mesos-1.6.0.tar.gz
# cd mesos-1.6.0
# mkdir build
# cd build

# ../configure

Now we need to start compiling the source code. The Apache Mesos page says to use the number of cores when setting the -j parameter. I have found that when I did this the virtual machines would run out of memory no matter how much I gave it and would stop compiling. They would just freeze. This cost me a couple of nights of pain. It turns out that what worked for me was to make this number equal to half the number of cores your virtual machine has. Unless, of course, your virtual machine only has one core then set the value to 1. In this example, I was compiling on a virtual machine that had 4 cores so I set the value to 2:

# make -j 2 V=0

Sit back and relax (read some other great articles from the AdminTome Blog) because this is gonna take a while. Once it is complete, you can install the binaries with these commands:

# make install
# ldconfig

That completes the source compile section. Now move on to your next Mesos server and repeat this step. Once you have the source code compiled on all your servers move on to the next section.

Configuring the Mesos Masters

This section will walk you through configuring your Mesos Master servers only. Our first step is to get Apache Zookeeper installed. Apache Zookeeper is a distributed key/value store.

Installing Apache Zookeeper

We will use the built-in canonical deployment of Zookeeper to keep things simple.

# apt install zookeeperd -y

To configure Zookeeper, we need to edit a couple of files. First, open your favorite editor and edit /etc/zookeeper/conf/myid. This will be a simple number that represents the ID of the Zookeeper node. Since I have three nodes, I numbered them 1 through 3. For example, on my mesos1.admintome.lab system I have '1' as the contents of /etc/zookeeper/conf/myid.

Next, edit /etc/zookeeper/conf/zoo.cfg. Find the three files that look like this:

#server.1=zookeeper1:2888:3888
#server.2=zookeeper2:2888:3888
#server.3=zookeeper3:2888:3888

Uncomment them and change them to reflect your three Mesos Masters.

server.1=192.168.1.30:2888:3888
server.2=192.168.1.31:2888:3888
server.3=192.168.1.32:2888:3888

Save and exit the file. We can start and enable the Zookeeper service.

# systemctl start zookeeper
# systemctl enable zookeeper

Complete this step on all three of your Mesos Master servers before continuing

SystemD Service for Apache Mesos Masters

Make a new directory

# mkdir /etc/mesos-master

Next, we need to make a /etc/mesos-master/zk file:

zk://192.18.1.30:2181,192.168.1.31:2181,192.168.1.32:2181/mesos

For the zk parameter, make sure you keep the port after each IP ':2181' because it has to be there. Save and exit the file.

Open up your favorite editor again and create a new file, /etc/systemd/system/mesos-master.service, with the following content:

[Unit]
Description=Mesos Master Service
After=zookeeper.service
Requires=zookeeper.service

[Service]
ExecStart=/usr/local/sbin/mesos-master --ip=192.168.1.30 --work_dir=/var/lib/mesos --zk=file://etc/mesos-master/zk --quorum=2 --cluster=admintome

[Install]
WantedBy=multi-user.target

Make sure all the IPs match your three Mesos Master servers. Also, make sure that the -ip parameter matches the IP address for the current master server you are configuring. The last parameter is just what the name of the cluster will be when we look at the Web UI for Apache Mesos. You can make it anything you want. Save the file and exit.

Start and Enable the Service

Time to start our new Apache Mesos SystemD service.

# systemctl daemon-reload
# systemctl start mesos-master.service
# systemctl enable mesos-master

Complete this step on all three of your Mesos Masters. Your masters are now configured and ready to go. To verify that everything is working correctly so far you can go to the following URL.

http://{mesos master IP}:5050

You can pick any one of your Mesos Master IP's here. When Mesos starts up on all three servers it will use Zookeeper to pick a master that will handle all the work. If you browse to a server that was not elected as the master you will be automatically redirected to the master server.

You should see the Mesos Web GUI now:

Image title

Pat yourself on the back, you are halfway through installing Mesos on Ubuntu 18.04. Now on to configuring those Mesos Slaves.

Configuring the Mesos Slaves

You should already have Mesos compiled on your slaves from the beginning of this post. Now, all we have to do is create our SystemD service on each one of the slaves.

Make a new directory:

# mkdir /etc/mesos-slave

Next, we need to make a /etc/mesos-slave/master file:

zk://192.18.1.30:2181,192.168.1.31:2181,192.168.1.32:2181/mesos

For the zk parameter, make sure you keep the port after each IP as ':2181' because it has to be there. Save and exit the file.

Open up your favorite editor again and create a new file, /etc/systemd/system/mesos-slave.service, with the following content:

[Unit]
Description=Mesos Slave Service

[Service]
ExecStart=/usr/local/sbin/mesos-slave --master=file://etc/mesos-slave/master --work_dir=/var/lib/mesos

[Install]
WantedBy=multi-user.target

Save and exit.

Start and Enable the Service

Time to start our new Apache Mesos Slave SystemD service.

# systemctl daemon-reload
# systemctl start mesos-slave.service
# systemctl enable mesos-slave

Complete this step on both of your Mesos Slaves.

To verify that they are both working you can view the Mesos Web UI again. You should see two activated agents like below:

Image title

As you can see here, we have 2 activated nodes and, under resources, we can see that we have 8 CPUs, ~6GB of memory and 200GB of disk space! Our two slaves are up and operational.

Celebrate!

Congratulations! You made it through and now have a complete Apache Mesos cluster installed on Ubuntu 18.04! It was a long process but well worth the time if you are studying big data. This was a ton to go through - if you wanted to set up a production cluster, however, this wouldn't be recommended. In past versions, I used configuration management systems like Puppet to configure the cluster. This wasn't an option at this time because Puppet Enterprise doesn't have a puppet agent on Ubuntu 18.04. I'm sure that will change soon so keep checking back for a post on how to setup Mesos using Puppet on Ubuntu 18.04. Thanks for sticking with me through this post, I know it was a long one but one. I have been itching to write this ever since Ubuntu 18.04 was released.

Conclusion

I hope you have enjoyed this article. If so, please leave a comment below. Thanks again for reading this post!

Apache Mesos ubuntu master cluster Data architecture Apache ZooKeeper Virtual Machine Web Service

Published at DZone with permission of Bill Ward, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • GitLab vs Jenkins: Which Is the Best CI/CD Tool?
  • Rust vs Go: Which Is Better?
  • Master Spring Boot 3 With GraalVM Native Image
  • Required Knowledge To Pass AWS Certified Solutions Architect — Professional Exam

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: