CentOS7下安装Mesos教程

简介: 基于centos7,安装mesos以及相关示例运行的教程。转载请注明出处:https://blog.lzoro.com,谢谢~Mesos简介Mesos is built using the same principles as the Lin...

基于centos7,安装mesos以及相关示例运行的教程。
转载请注明出处:https://blog.lzoro.com,谢谢~

Mesos简介

Mesos is built using the same principles as the Linux kernel, only at a different level of abstraction. The Mesos
kernel runs on every machine and provides applications (e.g., Hadoop, Spark, Kafka, Elasticsearch) with API’s for
resource management and scheduling across entire datacenter and cloud environments.

Mesos是根据Linux内核相同原则而创建的,而不同点仅是在于抽象的层面。Mesos内核运行在每一个机器上,同时通过 API 为各种应用提供跨数据中心和云的资源管理调度能力(如:Hadoop、Spark、Kafka、Elastic Search)。

唔,够简介的。

架构图

通俗来讲,它提供了资源调度,让我们可以像使用单台机器一样使用整个数据中心。

唔,还是不够通俗,算了。

Mesos是Apache下的开源分布式资源管理框架,记住这点就行了,反正本文是负责介绍安装的,具体使用和相关概念之后另开一章,Hia~ Hia~。

环境说明

1、centOS7虚拟机一台(配置最好高一些)
2、mesos-1.6.1
3、xshell

格子这边用的是win10作为宿主机,安装了VMware作为虚拟机平台,然后安装了一台centos7虚拟机,建议给虚拟机至少分配2核CPU4G内存以上,不然安装效率比较低,毕竟还是有些吃资源的。

虚拟机安装完毕启动后,用xsell连接(毕竟界面字体看着舒服多了)进行操作。

步骤

1、下载

官网下载地址,请选择自己需要的一个版本进行下载。

这里你有几种方式可以选择

  • 在Windows平台下载后通过xftp上传到虚拟机

适合虚拟机无法联网的同学

  • 直接在虚拟机上下载

比如1.6.1版本的下载

wget http://archive.apache.org/dist/mesos/1.6.1/mesos-1.6.1.tar.gz

适合虚拟机可以联网的同学,简单便捷。

2、系统要求

Mesos的安装队系统是有要求的,下面说明摘抄自官网。

大致意思如下(凑合着看哈,毕竟不是专业翻译,keke~)

Mesos在64位的Linux/MacOs上运行,从源码构建Mesos,需要有gcc 4.8.1 +/Clang 3.5 +环境。

在Linux上,在构建/运行时都要对内核版本的要求是必须高于(含)2.628,为了完全支持进程隔离,要求内核版本高于(含)3.10.

Mesos代理也可以在Windows上运行,有另外的说明。

为允许完全支持Docker的主机联网功能,请确主机名可以通过DNS//etc/hosts解析,这是Mesos测试所需要的。当有问题时,请验证/etc/host是否包含主机名。

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.

On Linux, a kernel version >= 2.6.28 is required at both build time and run time. For full support of process isolation under Linux a recent kernel >= 3.10 is required.

The Mesos agent also runs on Windows. To build Mesos from source, follow the instructions in the Windows section.

Make sure your hostname is resolvable via DNS or via /etc/hosts to allow full support of Docker’s host-networking capabilities, needed for some of the Mesos tests. When in doubt, please validate that /etc/hosts contains your hostname.

对于不同的系统,会有不同的组件要求要求,mesos官网列举了诸如

  • Ubuntu
  • Mac OS
  • centos

下面具体看一下centos的环境要求。

不知道自己系统版本的可以

cat /etc/redhat-release 
# 会有类似输出 CentOS Linux release 7.5.1804 (Core)

另外,如果是非root用户登录,请记得采用sudo命令,本文是基于root用户操作的,所以略去sudo命令。

安装部分实用工具

yum install -y tar wget git

获取 Apache Maven repo文件。

wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

安装REPL repo

yum install -y epel-release

高于0.21.0版本的Mesos要求subversion > 1.8的开发包,这在默认库中是不可用的,所以在文件'/etc/yum.repos.d/wandisco-svn.repo'中添加如下内容件来安装正确的版本。

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'

Mesos有一部分需要Systemd来操作,但是Mesos只支持包含Delegata标志的systemd版本。
这个标志在systemd 218版本初次被引入,它低于centos下默认安装的版本。
幸运的是,centos7.1有一个补丁systemd<218包含Delegate标志,下面操作升级systemd

yum update systemd

安装必要的开发工具

yum groupinstall -y "Development Tools"

安装其他Mesos依赖(会花费点时间,如果机器和网络比较一般的话,可以先去泡点茶喝~)

yum install -y apache-maven python-devel python-six python-virtualenv 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

到这一步,系统依赖的事项基本处理完毕。

3、编译安装

还记得刚刚下载的mesos-version-no.tar.gz(version-no就是你下载的版本号)在哪里吧,忘记了的话,可能要吃点核桃长长记性了~

提供查找命令,用法find [path] -options [regx],可以在指定目录下用指定选项查找匹配表达式的文件。

find  /usr/local/ -iname mesos*

记得在哪儿的话,进入压缩包所在目录,进行解压

# 切换目录
cd /usr/local/setup
# 解压
tar zxvf mesos-1.6.1.tar.gz

如果是从git仓库下载的话,先执行下面命令(不是则跳过)

./bootstrap

配置并构建安装

mkdir build
cd build
# 上面两条命令也可以合并成
mkdir build & cd $_

# 配置
../configure --prefix=/usr/local/mesos-1.6.1

# 有类似输出
configure: Build option summary:
    CXX:        g++
    CXXFLAGS:   -g1 -O0 -Wno-unused-local-typedefs -std=c++11
    CPPFLAGS:   -I/usr/include/subversion-1 -I/usr/include/apr-1 -I/usr/include/apr-1.0       
    LDFLAGS:    
    LIBS:       -lz -lsvn_delta-1 -lsvn_subr-1 -lsasl2 -lcurl -lapr-1  -lrt


# 编译(根据机器配置不一样,时间有所不同)
make

# 不说了,我先去泡点茶喝。
...

...

...

# 多年以后,有类似以下输出

running install_scripts
creating build/bdist.linux-x86_64/wheel/mesos.scheduler-1.6.1.dist-info/WHEEL
make[2]: Leaving directory `/usr/local/setup/mesos-1.6.1/build/src'
make[1]: Leaving directory `/usr/local/setup/mesos-1.6.1/build/src'


# 运行测试案例(可选,如果要跑后面的示例的话,该步骤不可省略)
make check

#安装
make install

# 安装完会有类似以下输出

for name in libfixed_resource_estimator         \
    libload_qos_controller              \
    liblogrotate_container_logger; do           \
    for lib in `cd //usr/local/mesos-1.6.1/lib/mesos/modules && ls ${name}*`; do \
      rm -f $lib;                   \
      ln -s mesos/modules/$lib $lib; \
    done;                       \
done
make[4]: Leaving directory `/usr/local/setup/mesos-1.6.1/build/src'
make[3]: Leaving directory `/usr/local/setup/mesos-1.6.1/build/src'
make[2]: Leaving directory `/usr/local/setup/mesos-1.6.1/build/src'
make[1]: Leaving directory `/usr/local/setup/mesos-1.6.1/build/src'

一些示例

Mesos捆绑了Java/Python/C++框架示例,框架二进制文件只有在运行mmake check之后才可用(运行这个命令才会编译示例框架),如上面的部分所描述的。

下面描述下例子使用。

# 进入编译目录
$ cd build

# 开启 Mesos master (需要确保工作目录/var/lib/mesos存在,且有相关权限).
# 如果不在本机访问,允许内网访问,可以先不指定--ip选项
$ ./bin/mesos-master.sh --ip=127.0.0.1 --work_dir=/var/lib/mesos

# 开启 Mesos agent (需要确保工作目录/var/lib/mesos存在,且有相关权限).
$ ./bin/mesos-agent.sh --master=127.0.0.1:5050 --work_dir=/var/lib/mesos

下面运行框架示例

# 访问web页面.
$ http://127.0.0.1:5050

大概界面如下图


控制台

# 运行 C++ 框架 (任务运行成功后会退出).
$ ./src/test-framework --master=127.0.0.1:5050

# 运行 Java 框架 (任务运行成功后会退出).
$ ./src/examples/java/test-framework 127.0.0.1:5050

# 运行 Python 框架 (任务运行成功后会退出).
$ ./src/examples/python/test-framework 127.0.0.1:5050

这边格子只跑了Java框架示例,会有如下输出

WARNING: Logging before InitGoogleLogging() is written to STDERR
W0825 12:55:18.954269 39142 sched.cpp:1719] 
**************************************************
Scheduler driver bound to loopback interface! Cannot communicate with remote master(s). You might want to set 'LIBPROCESS_IP' environment variable to use a routable IP address.
**************************************************
I0825 12:55:18.956892 39142 sched.cpp:232] Version: 1.6.1
I0825 12:55:18.966061 39163 sched.cpp:336] New master detected at master@127.0.0.1:5050
I0825 12:55:18.969393 39163 sched.cpp:351] No credentials provided. Attempting to register without authentication
I0825 12:55:18.991411 39159 sched.cpp:749] Framework registered with 0d317686-be4b-42b8-9e3f-ff3e0068991f-0000
Registered! ID = 0d317686-be4b-42b8-9e3f-ff3e0068991f-0000
Received offer 0d317686-be4b-42b8-9e3f-ff3e0068991f-O0 with cpus: 4.0 and mem: 2750.0
Launching task 0 using offer 0d317686-be4b-42b8-9e3f-ff3e0068991f-O0
Launching task 1 using offer 0d317686-be4b-42b8-9e3f-ff3e0068991f-O0
Launching task 2 using offer 0d317686-be4b-42b8-9e3f-ff3e0068991f-O0
Launching task 3 using offer 0d317686-be4b-42b8-9e3f-ff3e0068991f-O0
Status update: task 2 is in state TASK_RUNNING
Status update: task 1 is in state TASK_RUNNING
Status update: task 0 is in state TASK_RUNNING
Status update: task 3 is in state TASK_RUNNING
Status update: task 2 is in state TASK_FINISHED
Finished tasks: 1
Status update: task 1 is in state TASK_FINISHED
Finished tasks: 2
Status update: task 0 is in state TASK_FINISHED
Finished tasks: 3
Status update: task 3 is in state TASK_FINISHED
Finished tasks: 4
Received offer 0d317686-be4b-42b8-9e3f-ff3e0068991f-O1 with cpus: 4.0 and mem: 2750.0
Launching task 4 using offer 0d317686-be4b-42b8-9e3f-ff3e0068991f-O1
Status update: task 4 is in state TASK_RUNNING
Status update: task 4 is in state TASK_FINISHED
Finished tasks: 5
I0825 12:55:20.585199 39160 sched.cpp:2013] Asked to stop the driver
I0825 12:55:20.585676 39160 sched.cpp:1189] Stopping framework 0d317686-be4b-42b8-9e3f-ff3e0068991f-0000
I0825 12:55:20.589548 39142 sched.cpp:2013] Asked to stop the driver

另外,控制台可以看到

控制台-Java示例框架

后话

之前了解了Mesos,但是没有花时间去实践,趁着周末下雨没出门,试着安装并写一些Hello World,毕竟纸上得来终觉浅,绝知此事要躬行.

溜了溜了,如果对你有点帮助的话,无妨点个赞呗~3克呦

参考资料:Mesos官网

目录
相关文章
|
4月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
861 69
|
3月前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
1305 2
|
4月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
415 78
|
5月前
|
Linux 网络安全 Apache
针对在Centos/Linux安装Apache过程中出现的常见问题集锦
以上每个问题的解决方案应深入分析错误日志、系统消息和各种配置文件,以找到根本原因并加以解决。务必保持系统和Apache软件包更新到最新版本,以修复已知的bugs和安全漏洞。安装和管理Web服务器是一项需要细致关注和不断学习的任务。随着技术的发展,推荐定期查看官方文档和社区论坛,以保持知识的更新。
255 80
|
3月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
663 16
|
4月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
394 10
|
5月前
|
人工智能 数据挖掘 Linux
Centos安装Python3.7(亲测可用)
本指南详细介绍了在基于Linux(以CentOS系统为例,使用yum包管理器)的系统上安装Python 3.7版本的完整流程。Python是一种广泛使用的高级编程语言,在各种领域如软件开发、数据分析、人工智能和区块链开发等都有着重要的应用。
547 2
|
6月前
|
机器人 Linux
CentOS 7系统中安装特定版本CMake 3.21.2的方法。
到这里,过程已经全部完成。如果你跟随上面的步骤来,那么你现在已经拥有了一个全新的CMake版本在你的CentOS 7系统上了。这个过程就像是你通过一系列仪式,唤醒了一个沉睡已久的古老机器人,它现在完全按照你的意愿来帮你构建和编译软件了。
535 18
|
4月前
|
运维 网络协议 Linux
CentOS下Bind服务的安装与故障排查
通过以上的步骤,您应该能够在CentOS系统上安装并配置BIND DNS服务,并进行基本的故障排查。
423 0
|
4月前
|
存储 Ubuntu Linux
安卓手机免root安装各种Linux系统:Ubuntu, Centos,Kali等
此外还可以安装Slackware、Archstrike等系统,还可以通过github查找方法安装更多有趣的东西。 昨日小编就是通过Termux安装的Kali Linux工具包。