参考网址:https://spark.apache.org/docs/latest/running-on-mesos.html
https://mesos-cn.gitbooks.io/mesos-cn/content/OverView/spark-on-mesos.html
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html#put
http://mesos.apache.org/documentation/latest/configuration/agent/
https://spark.apache.org/docs/latest/configuration.html
节点 | mesos 角色 | hdfs 角色 | spark 角色 |
---|---|---|---|
192.168.122.131 | master.mesos | hdfs namenode、secondarynode | spark driver 、spark-shell |
192.168.122.132 | slave1.mesos | hdfs datanode | |
192.168.122.133 | slave2.mesos | hdfs datanode |
1、安装meos
安装mesos请参考官方网站或者我的一篇博客http://blog.csdn.net/wenwenxiong/article/details/78352181
2、安装hdfs
下载hadoop二进制包,修改配置文件core-site.xml 、hdfs-site.xml、mapred-site.xml、yarn-site.xml。最主要配置core-site.xml 、hdfs-site.xml。修改hadoop-env.sh中的JAVA _HOME变量。
配置的修改参考https://github.com/krejcmat/hadoop-docker/tree/master/hadoop-master/files/hadoop
各节点配置环境变量HADOOP_HOME、JAVA_HOME、PATH
#for java
export JAVA_HOME=/root/jdk1.8.0_65
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:.
export PATH=$JAVA_HOME/bin:$PATH
#for maven
export PATH=/root/apache-maven-3.5.0/bin:$PATH
#for hadoop
export HADOOP_HOME=/root/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
各节点运行下面命令启动 hdfs
hadoop-daemon.sh start namenode
hadoop-daemon.sh start secondarynamenode
hadoop-daemon.sh start datanode
3、上传spark二进制包到hdfs
在master.mesos节点上
hadoop fs -mkdir /sparkbinfile
hadoop fs -put spark-2.2.0-bin-hadoop2.7.tgz /sparkbinfile/
注意,上传的spark-2.2.0-bin-hadoop2.7.tgz要在conf/spark-env.sh中配置JAVA_HOME环境变量,否则运行spark-shell时会报JAVA_HOME not set 错误。
4、配置spark使用mesos调度
在master.mesos节点上
vim spark-2.2.0-bin-hadoop2.7/conf/spark-env.sh
export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so
export MASTER=mesos://master.mesos:5050
export SPARK_LOCAL_IP=192.168.122.131
export SPARK_LOCAL_HOSTNAME=master.mesos
export JAVA_HOME=/root/jdk1.8.0_65
export SPARK_EXECUTOR_URI=hdfs://master.mesos:9000/sparkbinfile/spark-2.2.0-bin-hadoop2.7.tgz
5、配置mesos-salve使用hadoop 命令
cat /etc/mesos-slave/hadoop_home
/root/hadoop-2.7.2
注意,/root/hadoop-2.7.2/etc/hadoop/hadoop-env.sh要设置正确的JAVA_HOME环境变量,否则mesos-slave使用hadoop命令从hdfs中拉取spark二进制文件会报java command not find错误。
6、启动spark-shell
spark-2.2.0-bin-hadoop2.7/bin/spark-shell
saprk-shell启动后会注册Spark shell到mesos的frameworks中,并且预先激活几个Spark shell 0/1 mesos Active Tasks。只要spark-shell一直运行中,mesos中Spark shell frameworks得到的资源则不会减少(即使在spark shell中没有运行任务),停止saprk-shell后,Spark shell 0/1 mesos Active Tasks会成为完成状态,Spark shell mesos frameworks会成为Completed Frameworks,并且释放它所占用的资源(cpu,内存,存储很少占用)。
spark-mesos
mesos-spark-tasks
mesos-spark-frameworks
mesos-spark-agents
spark-jobs
spark-executes
spark-env