当前位置: 首页 > 编程日记 > 正文

在CentOS7上部署Apache Mesos

概述

Apache Mesos是一款基于多资源(内存、磁盘、CPU、端口等)调度的开源集群管理套件,能使容错和分布式系统更加容易。

工作原理

Apache Mesos采用了Master/Slave结构来简化设计,将Master做得尽可能轻量级,仅保存了各种计算框架(Framework)和Mesos Slave的状态信息,这些状态很容易在Mesos出现故障的时候被重构,除此之外Mesos还可以使用Zookeeper解决Master单点故障问题。

Mesos Master充当全局资源调度器角色,采用某种策略算法将某个Slave上的 空闲资源分配给某个Framework,而各种Framework则是通过自己的调度器向Master注册进行接入。Mesos Master则是收集任务状态和启动各个Framework的Executor。工作原理如图所示:
在CentOS7上部署Apache Mesos

Apache Mesos基本术语

  • Mesos master:负责管理各个Framework和Slave,并将Slave上的资源分配给各个Framework。
  • Mesos Slave:负责管理本节点上的各个Mesos Task,为各个Executor分配资源。
  • Framework:计算框架,如:Hadoop、Spark等,可以通过MesosSchedulerDiver接入。
  • Executor:执行器,在Master Slave上安装,用于启动计算框架中的Task。

实验要求

1.必须使用CentOS7系统,需要内核为3.10及以上

2.虚拟机内存必须是2GB及以上

实验环境表

主机名IP地址安装软件包
master192.168.126.156mesos-0.25.0.tar.gz;jdk-8u91-linux-x64.tar.gz
slave192.168.126.160mesos-0.25.0.tar.gz;jdk-8u91-linux-x64.tar.gz; docker

安装步骤

1.配置Java环境

[root@localhost ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/  #解包
[root@localhost ~]# cd /usr/local/
[root@localhost ~]# mv jdk1.8.0_91/ java   #重命名
[root@localhost ~]# vim /etc/profileexport JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
[root@localhost ~]# source /etc/profile

2.安装相关环境

1)安装开发工具

[root@localhost ~]# yum groupinstall -y "Development Tools"

2)添加apache-maven源,为Mesos提供项目管理和构建自动化工具的支持。

[root@localhost ~]# wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

3)安装相关依赖包

[root@localhost ~]# yum install -y apache-maven python-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel apr-util-devel subversion-devel

4)配置WANdiscoSVN网络源

[root@localhost ~]# vim /etc/yum.repos.d/wandisco-svn.repo
添加以下内容
[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

3.配置Mesos环境变量

[root@localhost ~]# vim /etc/profile
在行尾添加以下内容
export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so
export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so
[root@localhost ~]# source /etc/profile

4.构建Mesos

这里使用源编码方式编译安装Mesos

[root@localhost ~]# wget http://www.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz
[root@localhost ~]# tar zxvf mesos-0.25.0.tar.gz -C /opt/
[root@localhost ~]# cd /opt/mesos-0.25.0/
[root@localhost ~]# mkdir build
[root@localhost ~]# cd build/
[root@localhost ~]# ../configure   
[root@localhost ~]# make   #等待时间较长(网络在线状态)
[root@localhost ~]# make install 

安装Mesos时间较长,故实验环境安装一台Mesos后其余克隆即可。

配置单台Mesos-Master与Mesos-Slave

1.配置Mesos-master

1)Mesos-master负责维护slave集群的心跳,从slave提取资源信息。配置之前应先做好相应的解析工作。

[root@localhost ~]# hostnamectl set-hostname master  #更改主机名称为master
[root@localhost ~]# init 6   #重启虚拟机
[root@master ~]# vim /etc/hosts  
192.168.126.156  master
192.168.126.160 slave[root@master ~]# ln -sf /root/mesos-0.25.0/build/bin/mesos-master.sh /usr/sbin/mesos-master  #建立软链接

2)简配启动Mesos-master

[root@master ~]# mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 减配参数:
--work_dir :运行期数据存放路径,包含了sandbox、slave、meta等信息,建议修改。--log_dir  :Mesos日志存放路径,建议修改。--no-hostname_lookup :是否从DNS获取主机名,本例中关闭了此配置,直接显示IP。--ip :Mesos进程绑定的IP。

3)配置完成后可以使用浏览器访问本地的5050端口进行验证,如图1所示:
在CentOS7上部署Apache Mesos

2.配置Mesos-Slave

1)Mesos-Slave负责接收并执行来自Mesos-master传递的任务以及监控任务状态,收集任务使用系统的情况,配置之前也应先做好相应的解析工作。

[root@localhost ~]# hostnamectl set-hostname slave  #更改主机名称为master
[root@localhost ~]# init 6   #重启虚拟机
[root@master ~]# vim /etc/hosts  
192.168.126.156  master
192.168.126.160 slave[root@slave ~]# ln -sf /root/mesos-0.25.0/build/bin/mesos-slave.sh /usr/sbin/mesos-slave   #建立软链接

2)在Mesos-Slave端安装并启动Docker容器

[root@slave ~]# yum install docker -y
[root@slave ~]# systemctl start docker.service
[root@slave ~]# systemctl enable docker.service

3)简配启动Mesos-Slave

[root@slave ~]# mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --master=192.168.126.156:5050 --no-hostname_lookup --ip=0.0.0.0

4)关闭Mesos-master防火墙后使用浏览器再次对Master的5050端口进行验证,在Mesos Web页面左侧可以看到Slave的状态,如图1.1所示:
在CentOS7上部署Apache Mesos

5)点击菜单栏中的Slaves链接,可以查看到Slave主机的硬件信息与注册时间,如图1.2所示:
在CentOS7上部署Apache Mesos

3.单台Mesos-master配置ZooKeeper

ZooKeeper是 一个开源的分布式应用程序协调服务,可以为分布式应用提供一致性服务软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper的目的就是将复杂易出错的关键服务进行封装,提供给用户性能高效、功能稳定、简单易用的系统。

1)下载ZooKeeper后,只需要将配置文件模板进行改名即可使用。

[root@master ~]# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
[root@master ~]# tar zxvf zookeeper-3.4.6.tar.gz -C /home/q/
[root@master ~]# cd /home/q/zookeeper-3.4.6/
[root@master zookeeper-3.4.6]# mv conf/zoo_sample.cfg conf/zoo.cfg

2)启动ZooKeeper服务

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zoo.cfg 
JMX enabled by default
Using config: conf/zoo.cfg
Starting zookeeper ... STARTED

3)单机模式的ZooKeeper处于standalone状态

[root@master zookeeper-3.4.6]# ./bin/zkServer.sh status conf/zoo.cfg 
JMX enabled by default
Using config: conf/zoo.cfg
Mode: standalone

4)在ZooKeeper服务启动以后,就可以使用ZooKeeper的客户端来连接测试。

[root@master zookeeper-3.4.6]# ./bin/zkCli.sh 
Connecting to localhost:2181
2018-08-15 22:16:03,625 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
2018-08-15 22:16:03,631 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=master
.....//省略[zk: localhost:2181(CONNECTED) 1] ls /     #查看根节点
[zookeeper]

4.后台运行Mesos-master与Mesos-slave

ZooKeeper简称为zk,在整个Apache Mesos中,主要用来存储Mesos-master地址,方便Mesos-slave读取。当Mesos-slave从zk中获取地址后,可直接使用Mesos-master地址以及端口连接Mesos-master。

1)nohup命令可以忽略所有挂断(SIGHUP)信号,作为后台程序运行Mesos-master与Mesos-slave。

[root@master ~]# nohup mesos-master --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs --no-hostname_lookup --ip=0.0.0.0 --zk=zk://192.168.126.163:2181/mesos --quorum=1 &>/dev/null &
[1] 3272
配置参数:
--zk :ZooKeeper地址,用于Leader选举。指定zk端口号--zk_session_timeout :根据网络环境调整zk session超时时间(默认10s)。--quorum :Master replica logs多写数量,多Master场景下此值要超过Master数量的一半。--credential :提供密钥对,介入集群时用于验证。

2)此时,Mesos-slave使用zk地址和端口号连接Mesos-master。

[root@slave ~]# nohup mesos-slave --containerizers="mesos,docker" --work_dir=/home/q/mesos/data --log_dir=/home/q/mesos/logs--master=zk://192.168.126.163:2181/mesos --no-hostname_lookup --ip=0.0.0.0 &>/dev/null &
[1] 3996

3)使用浏览器进行验证,如图1.3所示:
在CentOS7上部署Apache Mesos

转载于:https://blog.51cto.com/13642258/2161093

相关文章:

CTA核心技术及应用峰会开幕!(附第二日参会攻略)

全球智能化趋势当前,人工智能技术正蓬勃发展。为了直击开发者在机器学习与人工智能技术研究与落地过程中的痛点与瓶颈,深入解析机器学习和知识图谱技术在行业中的实践和落地。2019 年 5 月 26 - 27 日,由中国 IT 社区 CSDN 与数字经济人才发展…

Sharepoint学习笔记—ECMAScript对象模型系列-- 8、组与用户操作(一)

这里总结一下关于使用ECMAscript对象模型来操作Goup与User的常用情况,因为内容较多,所以拆分为两个部分,这部分主要内容如下: 1、取得当前Sharepoint网站所有的Group 2、获取当前登录用户的Title与所属Group 3、获取指定Group下的…

【FFmpeg】ffmpeg工具源码分析(三):分配过滤器内存(宏GROW_ARRAY)详解

0、引言 在ffmpeg.c源码的核心函数transcode() 中,先执行初始化操作transcode_init() ; 首先初始化过滤器filtergraphs,在寻找过滤器在哪分配时,发现它使用宏GROW_ARRAY以增长的方式来分配内存。 1、GROW_ARRAY原型 #define GROW_ARRAY(array, nb_elems)\array = grow_a…

技术引路:机器学习仍大有可为,但方向在哪里?

整理 | CTA 直播小分队出品 | AI科技大本营(id:rgznai100)杭州国际博览中心,这里曾经是二十国集团领导人第十一次峰会的主场馆,5 月 26 日 CTA 核心技术与应用峰会(杭州)同样在这里正式召开&…

基于GTID模式MySQL主从复制

基于GTID模式MySQL主从复制 GTID复制原理:基于GTID的复制是MySQL 5.6后新增的复制方式GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交的事务在集群中有一个唯一的ID.在原来基于日志的复制中, 从库需要告知主库要从哪个偏移量positio…

NET Framework 2.0中的数据访问新特性

1异步数据访问 a)支持异步数据编程 b)SqlConnection – BeginOpen – EndOpen c)SqlCommand – BeginExecuteNonQuery – BeginExecuteReader – BeginExecuteXmlReader – EndExecuteNonQuery – EndEx…

【网络】通讯名词解释:带宽、速率、波特率、奈奎斯特定律、香农定理

1、带宽 1.1 解释一 带宽,又叫频宽,是数据的传输能力,指单位时间内能够传输的比特数。高带宽意味着高能力。 数字设备中带宽用bps(b/s)表示,即每秒最高可以传输的位数。 模拟设备中带宽用Hz表示,即每秒传送的信号周期…

这可能是最全的机器学习工具手册!

作者 | 红色石头转载自 AI有道(ID:redstonewill)工欲善其事必先利其器!之前我也断断续续给大家发文整理过一些关于数据科学,尤其是机器学习、深度学方面的速查手册!但是,每次分享的都比较是针对某一块的内容…

保持分布式团队同步

分布式团队最大的挑战是沟通,这对建立协作的基本原则必不可少。调整工作时间,互相适应,而团队联络员有助于沟通和同步工作。以信任、尊重和开明为基础的团队会鼓励组织中的人们互相帮助,培养一种使团队保持同步的文化。\\SkuVault…

Word2010开发——操作文档

参考: http://blog.csdn.net/akipeng/article/details/6534375 http://www.haogongju.net/art/19029 首先建立一个Word外接程序(Word AddIn)(家里的Vs竟然是中文版,汗!) 接着在项目中新增项&…

【驱动】ubuntu安装内核头文件

1、检查是否已经安装 使用dpkg-query命令检查是否有可用的内核头文件。 $ dpkg-query -s linux-headers-$(uname -r) 如果输出显示install ok installed说明已经安装成功 Package: linux-headers-4.15.0-142-generic Status: install ok installed2、安装内核头文件 $ sudo…

嫌Terminal终端太单调?快收下这几个有趣的改造工具!

整理 | Rachel责编 | 琥珀出品 | AI科技大本营(ID:rgznai100)【导语】Terminal(终端)是程序员常用的工具之一,常用于系统的相关配置修改。系统自带的 terminal 较为简单,很多 Github 的开源项目都尝试对终端…

关于matlab向文件写入数据的方法——留着备用

MATLAB数据采集的时候,往往需要把得到的数据保存下来。 fid fopen(文件名,‘打开方式’); 说明:fid用于存储文件句柄值,如果fid>0,这说明文件打开成功。打开方式有如下选择: ‘r’&#xff…

js在页面滚动到一定位置时触发事件?

function getTop(e) {var offsete.offsetTop;if(e.offsetParent!null) //只要还有父元素,也就是当前元素不是根节点就继续往上累计元素的高度offsetgetTop(e.offsetParent);return offset; } var myBlockTop getTop(document.getElementById("homepageBanner")); va…

【C语言】学习笔记3——字符串

1. 字符串(charcacter string)是一个或多个字符的序列 2. C语言没有专门用于存储字符串的变量类型。字符串都被存储在char类型的数组种。 3. 数组由连续的存储单元组成,字符串种的字符被存储在相邻的存储单元中, 每个单元存储一个…

Facebook 的AI翻身之战!

作者 | Michael K. Spencer译者 | 王艳妮,责编 | 屠敏出品 | CSDN(ID:CSDNnews)Facebook最近举办了F8会议,这是了解这个平台未来发展的绝佳机会。 F8是Facebook的年度开发者大会——一个为期数日的活动,期间…

【Linux驱动】ThinkPad笔记本wifi模块rtl8821ce在ubuntu16.04的驱动(默认没有)

0、wifi模块型号 在win10下设备管理器中查看,型号为:Realtek 8821CE Wireless LAN 802.11ac PCI-E NIC 1、问题描述 在ThinkPad上安装win10ubuntu16.04双系统后,在win10下wifi可以正常使用,但是在ubuntu下没有wifi列表。 2、…

关于Linux的inode和dentry的一组文章

先mark一下,有时间再看。 http://www.ruanyifeng.com/blog/2011/12/inode.htmlhttp://teaching.idallen.com/dat2330/04f/notes/links_and_inodes.htmlhttp://www.thegeekstuff.com/2012/01/linux-inodes/http://blog.chinaunix.net/uid/7828352/frmd/-1.htmlhttp:/…

为什么Rust连续4年获“最受喜爱编程语言”?

作者 | Mike Tang责编 | Aholiab出品 | 区块链大本营(blockchain_camp)2015年5月15日,Rust编程语言核心团队正式宣布发布Rust 1.0版本。4年来,它优雅的解决高并发和高安全性系统问题的能力,受到了越来越多开发者的喜爱。并且连续4…

【Windows】清除win10开始菜单中失效打程序标签

1、问题描述 安装新版本Qt程序,卸载旧版本Qt后,在开始菜单中,还有残留,但是已经失效,需要删除这些失效的程序标签。 2、显示隐藏文件夹 打开此电脑——查看——勾选“隐藏项目”: 3、删除失效的程序标签…

解析equals(Object obj)和compareTo(T obj)

背景:最近在研究静态扫描的东西,遇到一个规则:"equals(Object obj)" should be overridden along with the "compareTo(T obj)" method 然后就想深度扒一扒equals和compareTo有什么区别 1.java.lang.Object是所有类的父类…

安装和部署Exchange Server 2007

为什么Exchange Server 2007使用服务器角色? 简化部署和管理 增强可扩展性 改进安全性 见下图:什么是邮箱服务器角色? 邮箱服务器角色: 存储用户邮箱和公共文件夹 通过群集, LCR, CCR实现高可用性 并不在邮箱之间转输邮件邮箱服务器: 不应该能从Internet直接访问 必须是活动…

AI时代,中国技术创新如何弯道超车?

2019 年 5 月 26 日 - 27 日,杭州国际博览中心,由工信部人才交流中心指导,CSDN 和数字经济人才发展中心主办的 CTA 核心技术及应用峰会圆满落下帷幕。本次大会聚焦机器学习、知识图谱等 AI 领域的热门技术,关注技术在行业中的实践…

【TX2】英伟达Nvidia TX2连接蓝牙设备

1、问题描述 买了一个蓝牙键盘(航世B.O.W 折叠键盘HB099,200大洋),尝试在连接TX2的蓝牙,试试好使不 2、安装蓝牙 Blueman 是一个适合在 GNOME 桌面环境使用的图形化蓝牙管理工具。 sudo apt-get install blueman b…

usermod

功能说明:用于修改系统已经存在的用户账号信息。 参数选项:-c comment 修改用户password文件中用户说明栏,同useradd -c功能。-d home_dir 修改用户每次登入时所使用的家目录,同useradd -d功能。-e expired_date 修改用户终止日期…

asp.net 获取当前时间的格式

在平时的编程中,经常会用到获取当前的系统时间,格式也很特定,今天就把一些格式整理了一下,贴出来,以便以后的使用。 //获取日期时间 DateTime.Now.ToString(); // 2008-9-4 20:02:10 DateTime.Now.ToLocalT…

史上最大规模ACL大会放榜,百度10篇NLP论文被录用!

近日,自然语言处理(NLP)领域的国际顶级学术会议“国际计算语言学协会年会”(ACL 2019)公布了今年大会论文录用结果。根据 ACL 2019 官方数据,今年大会的有效投稿数量达到 2694 篇,相比去年的 15…

【Ubuntu】安装Ubuntu+Win双系统后,每次开机默认是进入Ubuntu,如何设置成默认进入Win?

1、问题描述 安装UbuntuWin双系统后,每次开机默认是进入Ubuntu,如何设置成默认进入Win? 2、解决方法 1)记住开机选择中windows 10是第几个,从0开始记,如下图本人的是4 2)进入ubuntu系统&am…

MFC 多线程及线程同步

一、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。  工作者线程没有消息机制,通常用来执行后台计算和维护任务&…

太火!这本AI图书微软强推,程序员靠它拿下50K!

如何能够短时间内抓住技术重点,集中突击?如何不在惧怕“算法”?如何才能在面试中对答如流,打造属于自己的“offer收割机”?也许这本书——《百面机器学习 算法工程师带你去面试》就能帮你实现!《百面机器学…