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官网

目录
相关文章
|
2月前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
107 64
|
2月前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
116 61
|
20天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
21天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
93 1
Linux系统之Centos7安装cockpit图形管理界面
|
28天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
78 3
|
29天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
50 2
|
2月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
133 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
89 2
|
2月前
|
Linux 知识图谱
Centos7安装killall,fuser, killall,pstree和pstree.x11
通过上述步骤,您已在CentOS 7系统中成功部署了killall、fuser、pstree以及pstree.x11,为高效管理系统进程打下了坚实基础。更多关于服务器管理与优化的知识,获取全面技术支持与解决方案。
53 1