Spark on Mesos部署
一.Mesos的安装和部署
1.下载mesos源码和依赖包
部署环境
centOS 6.6
mesos-0.21.0
spark-1.4.1
因为mesos官方只提供源码,所以必须要自己进行编译安装使用
添加meven源
sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
下载mesos和依赖
# download mesos
$ wget http://www.apache.org/dist/mesos/0.21.0/mesos-0.21.0.tar.gz
$ tar -zxf mesos-0.21.0.tar.gz
# Install other Mesos dependencies
$ sudo yum install -y apache-maven python-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
2.编译&安装
make的时间比较长
$ mkdir build
$ cd build
$ ../configure --with-python-headers=/usr/include/python2.6 --with-java-home=$JAVA_HOME --with-java-headers=$JAVA_HOME/include --with-webui --with-included-zookeeper --prefix=/usr/install/mesos
$ make
$ make install
3.配置mesos
修改 / 创建 master列表文件
vim /usr/install/mesos/etc/masters
masterIP
修改/创建 slave列表文件
vim /usr/install/mesos/etc/slaves
slaveIP1
slaveIP2
etc
修改master配置文件
vim /usr/install/mesos/etc/mesos-master-env.sh
export MESOS_log_dir=/home/admin/mesos/logs
export MESOS_work_dir=/home/admin/mesos/work
修改slave配置文件
vim /usr/install/mesos/etc/mesos-slave-env.sh
export MESOS_master=masterIP:5050
export MESOS_log_dir=/home/admin/mesos/logs
export MESOS_work_dir=/home/admin/mesos/work
export MESOS_resources="mem:8096;cpus:2"
export MESOS_hadoop_home=/usr/install/hadoop
export MESOS_switch_user=false
export MESOS_gc_delay=1days
启动mesos
/usr/install/mesos/sbin/mesos-start-cluster.sh
不需要配置文件的启动方式
启动master
nohup sudo -u admin /usr/install/mesos/sbin/mesos-master --log_dir=/home/admin/mesos/logs --work_dir=/home/admin/mesos/work >/dev/null 2>&1 &
启动slave
nohup sudo -u admin /usr/install/mesos/sbin/mesos-slave --master=mesos://masterIP:5050 --log_dir=/home/admin/mesos/logs --work_dir=/home/admin/mesos/work --hadoop_home=/usr/install/hadoop --resources="men:100000;cpus:22" --gc_delay="1days" --switch_user="false" >/dev/null 2>&1 &
tip1
启动slave时默认使用所有资源,可以使用命令–resources来限制
--resources="mem:8096;cpus:2"
当你修改slave资源分配的时候,必须要删除原来的配置信息,然后重开slave
rm -f /home/admin/mesos/work/meta/slaves/latest
tip2
启动slave时如不添加--hadoop_home参数,将会在系统的环境变量中寻找HADOOP_HOME,如果没有设置则无法从hdfs获取到framework executor包。
tip3
--gc_delay 参数控制定期删除work下的文件,你可以设置成
3days,2weeks,etc.默认是1周删除,不过当work文件夹达到一定大小,将会提前删除该目录下的文件。详细计算公式可以去看--gc_disk_headroom 参数
tip4
‘–switch_user’参数控制启动task的用户,默认为true,就是提交任务的用户,提交任务时,mesos会调用chown -R 来修改worker下executor的拥有者,权限不够就会报错。修改为false后,则使用启动slave的用户提交任务。
报错提示一般是这样的
Failed to execute chown -R 505:100 ...
web UI
可在5050端口查看mesos web UI
Mesos HA
mesos也是使用zookeeper来实现HA的,更多zookeeper的信息可以去看其他文档。
zookeeper部署
修改conf/zoo.cfg里的内容
server.1=192.168.6.55:2888:3888
server.2=192.168.6.56:2888:3888
server.3=192.168.6.57:2888:3888
在三台机器上启动zookeeper
$ZK_HOME/bin/zkServer.sh start
修改master配置文件
master的数量一般为奇数
quorum > (number of masters)/2.
在mesos-master.env.sh中添加以下参数
export MESOS_zk=zk://192.168.6.55:2181,192.168.6.56:2181,192.168.6.57:2181/mesos
export MESOS_quorum=1
修改slave配置文件
将mesos-slave-env.sh中的以下参数修改
MESOS_master=zk://192.168.6.55:2181,192.168.6.56:2181,192.168.6.57:2181/mesos
不需要配置文件的启动方式
启动master
nohup sudo -u admin /usr/install/mesos/sbin/mesos-master --log_dir=/home/admin/mesos/logs --work_dir=/home/admin/mesos/work --cluster=td_mesos --zk://192.168.6.55:2181,192.168.6.56:2181,192.168.6.57:2181/mesos --quorum=1 &
启动slave
nohup sudo -u admin /usr/install/mesos/sbin/mesos-slave --master=zk://192.168.6.55:2181,192.168.6.56:2181,192.168.6.57:2181/mesos --log_dir=/home/admin/mesos/logs --work_dir=/home/admin/mesos/work --hadoop_home=/usr/install/hadoop --resources="men:100000;cpus:22" --gc_delay="1days" --switch_user="false" >/dev/null 2>&1 &
进入192.168.6.52,显示不是leader,马上跳转回192.168.6.53
kill掉53上的master进程后,再进入52,发现变为leader,说明HA已生效。
二.Spark on mesos
将编译过的spark包上传到hdfs
hdfs dfs -put spark-1.4.1-bin-hadoop2.4.tgz /user/shiwei/
在spark-env中添加
export MESOS_NATIVE_JAVA_LIBRARY=/usr/install/mesos/lib/libmesos.so
export SPARK_EXECUTOR_URI=hdfs://192.168.6.52:9000/user/shiwei/spark-1.4.1-bin-hadoop2.4.tgz
同时也可在spark-default.conf中添加
spark.executor.uri hdfs://192.168.6.52:9000/user/shiwei/spark-1.4.1-bin-hadoop2.4.tgz
spark.master mesos://192.168.6.53:5050
启动spark-shell
./bin spark-shell
scala>val Data = sc.parallelize(1 to 100).count
可以在mesos web ui 上看到任务运行情况
至此spark on mesos部署结束。
FAQ
1.`CXXABI_1.3.5’ not found
报错提示
Failed to load native Mesos library from /usr/install/mesos/lib/libmesos.so
java.lang.UnsatisfiedLinkError: /usr/install/mesos/lib/libmesos.so: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /usr/install/mesos/lib/libmesos.so)
查询版本
strings /usr/lib64/libstdc++.so.6 |grep CXXABI
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
升级 libstdc++.so.6 解决
2. `GLIBCXX_3.4.14’ not found
报错提示
/usr/install/mesos/sbin/mesos-master: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/install/mesos/sbin/mesos-master)
查看版本
strings /usr/install/mesos-0.27.2/lib/libstdc++.so.6 | grep GLIBCXX
~GLIBCXX_3.4
~GLIBCXX_3.4.1
~GLIBCXX_3.4.2
~GLIBCXX_3.4.3
~GLIBCXX_3.4.4
~GLIBCXX_3.4.5
~GLIBCXX_3.4.6
~GLIBCXX_3.4.7
~GLIBCXX_3.4.8
~GLIBCXX_3.4.9
~GLIBCXX_3.4.10
~GLIBCXX_3.4.11
~GLIBCXX_3.4.12
~GLIBCXX_3.4.13
~GLIBCXX_FORCE_NEW
~GLIBCXX_DEBUG_MESSAGE_LENGTH
sudo cp /usr/install/mesos/lib/libstdc++.so.6 /usr/lib64/libstdc++.so.6
Spark on Mesos部署的更多相关文章
- Apache Spark支持三种分布式部署方式 standalone、spark on mesos和 spark on YARN区别
链接地址: http://dongxicheng.org/framework-on-yarn/apache-spark-comparing-three-deploying-ways/ Spark On ...
- Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Spark .时间不一样,SBT是白天编译,Maven是深夜进行的,获取依赖包速度不同 ...
- Spark on Mesos: 搭建Mesos的一些问题
资源管理系统 Spark可以搭建在Mesos上或YARN上,两个都是资源管理系统.了解资源管理系统的话,可以先参看以下几篇文章: 浅谈Borg/YARN/Mesos/Torca/Corona一类系统 ...
- Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建
[注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用 ...
- Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载mave ...
- spark on mesos 两种运行模式
spark on mesos 有粗粒度(coarse-grained)和细粒度(fine-grained)两种运行模式,细粒度模式在spark2.0后开始弃用. 细粒度模式 优点 spark默认运行的 ...
- Spark编译与部署
Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建 [注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.S ...
- Spark记录-Spark on mesos配置
1.安装mesos #用centos6的源yum安装 # rpm -Uvh http://repos.mesosphere.io/el/6/noarch/RPMS/mesosphere-el-repo ...
- Hadoop记录-Apache hadoop+spark集群部署
Hadoop+Spark集群部署指南 (多节点文件分发.集群操作建议salt/ansible) 1.集群规划节点名称 主机名 IP地址 操作系统Master centos1 192.168.0.1 C ...
随机推荐
- linux OSlab4 添加自定义系统调用
http://blog.csdn.net/ly01kongjian/article/details/8947285 http://www.cnblogs.com/hoys/archive/2011/0 ...
- iftop ifstat
ifstat 介绍 ifstat工具是个网络接口监测工具,比较简单看网络流量 实例 默认使用 #ifstat eth0 eth1 KB/s in KB/s out KB/s in KB/s out 0 ...
- ArcGIS Engine开发之旅02--ArcGIS Engine中的类库
原文:ArcGIS Engine开发之旅02--ArcGIS Engine中的类库 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他 ...
- 纯Python包发布setup脚本编写示例
如果你有多个模块需要发布,而它们又存在于多个包中,那么指定整个包比指定模块可能要容易地多.即使你的模块并不在一个包内,这种做法也行的通:你可以告诉Distutils从根包(root package)处 ...
- H264关于RTP协议的实现
完整的C/S架构的基于RTP/RTCP的H.264视频传输方案.此方案中,在服务器端和客户端分别进行了功能模块设计. 服务器端:RTP封装模块主要是对H.264码流进行打包封装:RTCP分析模块负责产 ...
- ie8兼容border-radius方法
<!doctype html><html> <head> <meta charset="utf-8" /> &l ...
- 网页加载图片问题 插件lazyload
有些项目的,是满屏的背景图片 ,导致页面加载的速度,有简单处理的方法有两个: 1.将背景分割成几分
- ionic 上拉加载更多&瀑布流加载&滚动到底部加载更多 主意事项
首先下拉刷新的代码是这样的,标红的地方为关键代码 <html> <head> <meta charset="utf-8"> <meta n ...
- 建字段_添加数据_生成json.php
<?php header("Content-Type:text/html;charset=utf8"); class db{ static $localhost = &quo ...
- [BS-16] 尽量将View的Opaque属性设置为YES(默认就是YES)
尽量将View的Opaque属性设置为YES(默认就是YES) UIView控件都有一个Opaque属性,如果不会更改view的透明度,那么应该将其opaque属性设置为YES.为什么要这样做呢?其实 ...