閱讀118 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Spark on Mesos: 搭建Mesos的一些問題

資源管理係統

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


(全文完)


最後更新:2017-04-03 16:49:03

  上一篇:go 把內容寫入指定目錄指定文件的java文件工具類,支持日期格式目錄名的生成
  下一篇:go 【轉載】SDL2.0在mfc窗口中顯示yuv的一種方法