在进行以下操作前,以经在虚拟机中安装了Hadoop集群环境。
下载解压
将spark下载解压到虚拟机中:
tar -zxvf spark-2.0.2-bin-without-hadoop.tgz -C ./
修改配置文件
以下命令进入spark配置文件所在目录:
cd /home/spark-2.0.2-bin-without-hadoop/conf
修改配置文件spark-env.sh.template名称为spark-env.sh,并填写如下内容:
export SPARK_DIST_CLASSPATH=$(/home/hadoop-2.7.7/bin/hadoop classpath)
export HADOOP_CONF_DIR=/home/hadoop-2.7.7/etc/hadoop
export SPARK_MASTER_IP=192.168.2.7
export JAVA_HOME=/home/jdk1.8.0_181
修改配置文件slaves.template名称为slaves,填写slave节点的host:
slave1
slave2
到这里,spark配置文件修改完毕,只需将spark分发到所有节点即可。
配置环境变量
.bash_profile文件添加以下内容:
export SPARK_HOME=/home/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
启动集群
启动完Hadoop集群的HDFS和YARN以后,执行以下命令就可以启动集群的master和work:
start-master.sh
start-slaves.sh
可以通过master:8080访问spark的Web端页面。
使用集群
可以用以下命令测试是否能用yarn来执行这个任务:
./spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--driver-memory 512m \
--executor-memory 512m \
--total-executor-cores 2 \
/home/spark-2.0.2-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.0.2.jar \
100
由于是虚拟机环境,有可能Spark集群会报如下错误:
[YARN] 2.2 GB of 2.1 GB virtual memory used. Killing container.
这个报错是虚拟内存超出限制,当使用虚拟机或者虚拟化服务器配置集群,很可能会报这个错误,这是因为有虚拟内存的设置,而使用的过程中超出了虚拟内存的限制。解决办法是在etc/hadoop/yarn-site.xml文件中,修改检查虚拟内存的属性为false:
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
另外,内存设置的太小导致内存溢出也可能报错,这时需要在yarn-site.xml中设置比较大的内存设置,或者jvm的内存也要增加,就可以解决。