本来安装这件事情,不用单独开一篇谈的。但是Spark的安装实在是一件点蛋疼的事情,这和Spark的语言和框架两者有颇大的关系。
Spark是Scala语言写的,所以要先安装Java和Scala,而底层的调度框架是Mesos,Mesos是C++写的,所以又对机器的glibc和gcc环境有一定的要求。装好了Mesos和Spark,还要把2者衔接起来,版本要选择正确,这几个步骤,中间任何一步错了都Spark都不能以集群方式正常运行,所以Spark的安装,还是颇有点周折的,在这里把完整的过程记录下来,包括mesos 0.9的安装过程,希望后来者尽量不需要掉坑里。
本攻略基于版本是Spark 0.5 和Mesos 0.9,服务器是Redhat Enterprise 6.1 32位,其它服务器的命令可能会稍微有所区别
安装Spark安装Mesos启动Mesos启动Spark On Mesos集群部署1、安装Spark推荐版本是JDK1.6.0 u18,具体下载安装过程就不说了,最后一定要设定JAVA_HOME,这个是后面步骤,尤其是mesos安装必须
手工模式启动:
cd /usr/local/mesos (sbin/mesos-master –log_dir=/usr/local/mesos/logs & ) &
出现下面的提示Master就成功
Starting Mesos master Master started on :5050 Master ID: Elected as master! Loading webui script at ‘/usr/local/new_mesos/share/mesos/webui/master/webui.py’ Bottle server starting up (using WSGIRefServer())… Listening on http://0.0.0.0:8080/ Use Ctrl-C to quit.
(sbin/mesos-slave -m 127.0.0.1:5050 –log_dir=/home/andy/mesos/logs –work_dir=/home/andy/mesos/works & ) &
使用–resources=”mem:20240;cpus:10”参数,可以根据具体的机器情况,指定分配的资源
Starting Mesos slave Slave started on :42584 Slave resources: cpus=16; mem=23123 New master detected at master@:5050 Registered with master; given slave ID * Loading webui script at ‘/usr/local/new_mesos/share/mesos/webui/slave/webui.py’ Bottle server starting up (using WSGIRefServer())… Listening on http://0.0.0.0:8081/ Use Ctrl-C to quit.
好了,终于来到最关键的一步了,在Mesos上运行Spark,要把Spark和Mesos连接到一起了。Spark是披着Scala外衣的Java,Mesos是C++,他们的通道,不可避免的就是JNI
配置的关键是Spark的配置文件,Spark带了样例文件conf/spark-env.sh.template,并有详细的解释,根据我们之前的安装路径,参考该文件,配置如下:
#新版本的配置项,直接指定libmesso.so的位置,该so和spark目录下的mesos-0.9.0.jar必须一致,是spark和mesos沟通的关键export MESOS_NATIVE_LIBRARY=/usr/local/mesos/lib/libmesos.so
#旧版本的配置项,其它的so,目前看来不需要了export SPARK_LIBRARY_PATH=/usr/local/mesos/lib
#自定义的程序jar包,可以放在该目录下export SPARK_CLASSPATH=…
#保持与系统的SCALA_HOME一致export SCALA_HOME=/usr/share/scala
#必须小于或者等于Slave中的mem,Slave resources: cpus=16; mem=23123
#本地模式下,运行大任务也需要修改该参数,默认是512m,很小export SPARK_MEM=10g 好了,一切就绪之后,尝试运行下面的命令:
如果你再次成功的看到Pi值,恭喜,Spark的安装又成功了一步