spark-submit opencypher morpheus exmaples教程
1. 项目准备
我的集群环境是CentOS7集群,十台机器,每台64G内存,4个CPU。
在spark集群运行opencypher-morpheus-example,得先在集群上安装spark,然后克隆morpheus项目到spark的master节点上。
1.1 安装spark
安装spark集群需要依赖Scala, JDK, Hadoop。
具体安装spark的教程可以参考这篇博客:Linux集群安装Spark, 这篇博客里面也有如何安装Hadoop集群的教程:Linux上安装Hadoop集群
我安装的是Scala 2.12.8,JDK 1.8,Hadoop 2.8.1,Spark 2.4.2。Scala 2.4.2的下载地址为spark-2.4.2-bin-hadoop-2.7.tgz Morpheus的Git地址为opencypher/morpheus。
一定要注意版本号! Spark 2.4.2是用Scala 12编译的,而Spark 2.4.1和Spark 2.4.3都是用Scala 2.11编译的,Morpheus需要用Scala 2.12编译,因此如果你装的是Spark 2.4.3,你提交morpheus程序到spark上运行时会报NoSuchMethodError,这其实是morpheus和Spark依赖的Scala版本不一致导致的。博主已踩过这个坑,望注意版本号!
接下来贴一下我在集群里每台机器上他们的安装路径:
- Spark 路径(SPARK_HOME):/opt/spark-2.4.2-bin-hadoop2.7/
- Hadoop路径(HADOOP_HOME):/opt/hadoop/
- Jdk路径(JAVA_HOME):/usr/java/jdk1.8.0_201-amd64/
- Scala路径(SCALA_HOME):/opt/scala-2.12.8/
请检查是否将这些安装路径添加到环境变量中,若没有,请vim /etc/profile, 向其中添加好环境变量后保存并退出,再source /etc/profile使其生效。 下面是我的/etc/profile部分环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export SCALA_HOME=/opt/scala-2.12.8
export PATH=$PATH:$SCALA_HOME/bin
export SPARK_HOME=/opt/spark-2.4.2-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
export SBT_HOME=/usr/local/sbt/sbt
export PATH=$PATH:$SBT_HOME/bin
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
接下来确认spark配置文件是否正确,首先是spark安装目录下的conf/spark-env.sh文件,我的spark-env.sh配置是这样的, spark-executor-memory可以不设置,运行spark程序时可以通过参数手动设置。SPARK_MASTER_IP是你集群的公网IP地址。
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME