1、下载解压
将下载好的spark-2.2.0-bin-hadoop2.6.tgz包移动到netcloud03 netcloud04 netcloud05 各节点的/opt目录下并解压
2、Spark基于Standalone运行模式进行配置
1)测试
cd /opt/spark-2.2.0-bin-hadoop2.6
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[8] examples/jars/spark-examples_2.11-2.2.0.jar 100
其中SparkPi:指定运行程序(计算π的值),master:指定模式,local为本地模式,[1]表示一个线程,100表示传递的参数
2)配置(spark内置的主从,master,worker)
Note:主节点是netcloud03,从节点netcloud04、netcloud05
进入conf目录下重命名 slaves.template 为slaves 、spark-env.sh.template 为 spark-env.sh
vi slaves :添加从节点(worker节点)netcloud04、netcloud05
vi spark-env.sh 添加如下内容:
export JAVA_HOME=/usr/local/jdk1.8.0
export SPARK_MASTER_IP=netcloud03
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=18080
export SPARK_WORKER_WEBUI_PORT=18081
export SPARK_WORKER_PORT=7078
# export SPARK_WORKER_INSTANCES=1 #spark2.x以后不需要配置
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=2g
3、Spark基于Yarn运行模式进行配置(企业生产环境)
1)测试
cd /opt/spark-2.2.0-bin-hadoop2.6
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[8] examples/jars/spark-examples_2.11-2.2.0.jar 100
其中SparkPi:指定运行程序(计算π的值),master:指定模式,local为本地模式,[1]表示一个线程,100表示传递的参数
2)配置(spark内置的主从,master,worker)
Note:主节点是netcloud03,从节点netcloud04、netcloud05
进入conf目录下重命名 slaves.template 为slaves 、spark-env.sh.template 为 spark-env.sh
vi slaves :添加从节点(worker节点)netcloud04、netcloud05
vi spark-env.sh 添加如下内容:
export JAVA_HOME=/usr/local/jdk1.8.0
export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.5/etc/hadoop
export SPARK_HOME=/opt/spark-2.2.0-bin-hadoop2.6
export SPARK_MASTER_IP=netcloud03
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=18080
export SPARK_WORKER_WEBUI_PORT=18081
export SPARK_WORKER_PORT=7078
# export SPARK_WORKER_INSTANCES=1 #spark2.x以后不需要配置
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=2g
#以下内容是实际生产环境的性能优化的选配 这里我们先不做配置
#export SPARK_EXECUTOR_INSTANCES=1
export SPARK_EXECUTOR_CORES=4
export SPARK_EXECUTOR_MEMORY=4G
export SPARK_DRIVER_MEMORY=6G
export SPARK_WORKER_DIR=/opt/spark-2.2.0/work
export SPARK_LOG_DIR=/opt/spark-2.2.0/logs
export SPARK_PID_DIR=/opt/spark-2.2.0/tmp1
#与pyspark的集成时需要的配置(选配)
export PYSPARK_PYTHON=/opt/python2/bin/python
export PYSPARK3_PYTHON=/opt/py3.5/bin/python
注: 配置master高可用:在master节点上配置,每启动一个master都会向zk传递数据
记得配置master节点对其他节点的免密码登录,另外修改export SPARK_MASTER_IP
为对应所需的主节点,再启动sbin/start-master.sh(下面内容在该配置文件中配置,不配置高可用则不需添加)
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=netcloud03:2181,netcloud04:2181,netcloud05:2181"
4、在yarn模式下启动
[root@netcloud03 spark-2.2.0-bin-hadoop2.6]# ./sbin/start-all.sh
5、任务提交测试
1)client模式
[root@netcloud03 spark-2.2.0-bin-hadoop2.6]#./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --executor-memory 1G --num-executors 1 examples/jars/spark-examples_2.11-2.2.0.jar 100
2)cluster模式:(结果spark1:18080里面可见)
[root@netcloud03 spark-2.2.0-bin-hadoop2.6]#./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster --executor-memory 1G --num-executors 1 examples/jars/spark-examples_2.11-2.2.0.jar 100
注:如果内存不够时可以将1G改下,如512M
内存不够可能出现的错误:WARN cluster.YarnScheduler: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
6、IDEA应用程序开发
在IDEA下开发完应用程序后,将应用程序打包成的jar文件提交到spark集群中以yarn的运行模式执行。
Note:spark2.2.0版本及以后版本 应用程序设置master 为 yarn-cluster spark2.0 之前的版本可以设置为local 然后以yarn 的模式提交到集群中运行。 有待验证。