资源管理系统

Spark可以搭建在Mesos上或YARN上,两个都是资源管理系统。了解资源管理系统的话,可以先参看以下几篇文章:

浅谈Borg/YARN/Mesos/Torca/Corona一类系统  
多集群下资源共享方案介绍  
统一资源管理与调度平台(系统)介绍

淘宝借助自己的第二代集群——云梯系统,把Spark部署在了YARN上,里面是淘宝技术部对Spark的一些实战小结,也算是在捣鼓阶段。

关于Mesos的论文,可以在这里下载。他的官网上文档没有github的wiki上多。

Mesos搭建

在了解了资源管理系统的一些背景之后,简单介绍下我在搭建Mesos过程中遇到的几个坑。由于我是在公司开发机上抽空搭的,开发机上我没有root权限,在build的时候有下面几个障碍:

1. Mesos是C++写的,需要经历./configure, make和make install阶段,

我不太熟

2. 没有root权限,发布路径默认是/usr/local下,需要在./configure的时候加上 --prefix=/path 的参数

3. Mesos依赖gcc 4.1+的版本以及Python 2.7,开发机gcc和python版本都比较低,需要自己指定高版本的gcc和python,主要是gcc这个坑


4. 开发机不能上外网,python需要下一个egg,于是我是自己下了加进去,这就不说了,估计一般人不会有我这样的问题的

正常的搭建流程就是下载了Mesos的包之后,解压,然后./configure, make, make install就完了,参考这篇攻略

没有root权限的时候,不仅是发布路径要指定,还有一个问题是webui默认也会从/usr/local去找,所以我在configure的时候加上了参数:

./configure --prefix=/path --disable-webui  

即把webui取消了,这样在localhost:8080就不能看到master和slave的一些可视化信息了。

关于gcc的问题,开始的时候我把所有的Makefile手动修改了,凡是有gcc和g++的地方都添加了我的gcc路径,这样做并没有彻底让编译都按照高版本的gcc执行,因为依赖的东西比较多,子目录下的Makefile并没有都按照指定的gcc去make。

解决方案是把export自己的gcc path的时候,声明在PATH前面,因为PATH是从左往右读的,这样默认的gcc就是我的版本了:

export MY_PATH = {GCC_HOME}/bin
export PATH = $MY_PATH : $PATH #像这样声明在前面,然后尝试 gcc -v看一下版本是否是新的

当时由于这个编译问题,还在google论文上发了帖子,不过最后是自问自答解决了。把问题帖出来给大家看一下,如果有同样的情况,说明是gcc版本导致的。

Running Spark on Mesos, libmesos.so Exception: undefined symbol

其他搭建问题参考Mesos官网的简单文档

Spark Run On Mesos

make install成功后,去发布Mesos的地方,用sbin/mesos-master启动master,然后用sbin/mesos-slave.sh --master=127.0.0.1:5050在同一个机器上起slave,然后就可以到Spark_Home下跑./run spark.examples.SparkPi 127.0.0.1:5050  看看是不是依然可以算出Pi值,可以的话就是成功了。

在此之前记得去conf/spark-env.sh里增加一些Mesos的设置:

export MESOS_HOME={PATH}/mesos/
export MESOS_NATIVE_LIBRARY={PATH}/mesos/lib/libmesos.so

(全文完)

Spark on Mesos: 搭建Mesos的一些问题的更多相关文章

  1. Spark认识&环境搭建&运行第一个Spark程序

    摘要:Spark作为新一代大数据计算引擎,因为内存计算的特性,具有比hadoop更快的计算速度.这里总结下对Spark的认识.虚拟机Spark安装.Spark开发环境搭建及编写第一个scala程序.运 ...

  2. 【Spark-core学习之三】 Spark集群搭建 & spark-shell & Master HA

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  3. Scala进阶之路-Spark本地模式搭建

    Scala进阶之路-Spark本地模式搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spark简介 1>.Spark的产生背景 传统式的Hadoop缺点主要有以下两 ...

  4. (四)Spark集群搭建-Java&Python版Spark

    Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...

  5. Spark集群搭建简要

    Spark集群搭建 1 Spark编译 1.1 下载源代码 git clone git://github.com/apache/spark.git -b branch-1.6 1.2 修改pom文件 ...

  6. windows7 spark单机环境搭建及pycharm访问spark

    windows7 spark单机环境搭建 follow this link how to run apache spark on windows7 pycharm 访问本机 spark 安装py4j ...

  7. Spark集群搭建简配+它到底有多快?【单挑纯C/CPP/HADOOP】

    最近耳闻Spark风生水起,这两天利用休息时间研究了一下,果然还是给人不少惊喜.可惜,笔者不善JAVA,只有PYTHON和SCALA接口.花了不少时间从零开始认识PYTHON和SCALA,不少时间答了 ...

  8. Spark集群搭建中的问题

    参照<Spark实战高手之路>学习的,书籍电子版在51CTO网站 资料链接 Hadoop下载[链接](http://archive.apache.org/dist/hadoop/core/ ...

  9. Spark集群搭建_Standalone

    2017年3月1日, 星期三 Spark集群搭建_Standalone Driver:    node1    Worker:  node2    Worker:  node3 1.下载安装 下载地址 ...

随机推荐

  1. html 中的块级元素 内联元素

    上一个礼拜,做crm项目,使用的大部分都是js,nodejs,ajax 的内容,但是今天我想写写关于html中的块级元素和内联元素 的东西. 首先,html 中的块级元素 内联元素 我们可以看到,这两 ...

  2. linux下编码和vim编码问题解决

    Linux下编码问题 在Linux环境下经常会出现文件乱码的问题,这实际上就是因为文件编码,以Ubuntu为例,默认的字符编码为UTF-8,并且没有默认安装gbk和gb2312,所以需要我们进行安装和 ...

  3. Centos6.5快速配置可用网卡

    原文链接: Centos6.5快速配置可用网卡 安装完成后,我们启动我们的系统,此时我们的系统,是没有连网的,IP设备,并没有被激活,如果我们使用ifconfig命令查看IP地址,就会发现,此刻的地址 ...

  4. 微信红包API接口(PHP)

    根据微信高级红包接口,开发PHP版本的API接口,现在进行主要代码分析. 红包接口调用请求代码,所有请求参数为必填参数与文档对应: class Wxapi { private $app_id = 'w ...

  5. Week6(10月14日)

    Part I:提问  =========================== 1.什么是视图模型?2.我们在留言本中,加入了一个怎样的视图模型?如何处理它? Part II:Ch05 视图模型 === ...

  6. Linux定义系统提示符的变量:PS1

  7. C#动态增加边框

    if (this.Width >= 600) { timer1.Enabled = false; } else { this.Width += 30; }

  8. Android下调用收发短信邮件等

    Android下调用收发短信邮件等 1,调web浏览器Uri myBlogUri = Uri.parse("http://xxxxx.com");returnIt = new In ...

  9. java--内部类访问final成员

    局部类只能访问外包方法中的final成员.位于方法内部的局部类,可以访问局部类之外,外包方法之内的所以变量和方法,但是生命周期不同,延长生命周期的办法就是将变量设置为final类型. 1)从程序设计语 ...

  10. Python中__init__方法介绍

    本文介绍Python中__init__方法的意义.         __init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 .注意,这个名称的开始和结尾 ...