目录
spark yarn模式还用开启master,worker进程吗?
spark standlone集群部署
下载解压,进入官方下载地址下载最新版 Spark。
下载spark-1.6.1-bin-hadoop2.6.tar.gz。
解压: tar -xvf spark-1.6.1-bin-hadoop2.6.tar.gz
配置 Spark
cd spark-1.6.1-bin-hadoop2.6/conf #进入spark配置目录
cp spark-env.sh.template spark-env.sh #从配置模板复制
vim spark-env.sh #添加配置内容
在spark-env.sh末尾添加以下内容(这是我的配置,你可以自行修改):
export SPARK_HOME=/home/fang/spark-1.6.1-bin-hadoop2.6
export SCALA_HOME=/home/fang/scala-2.10.6
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_77
export HADOOP_HOME=/home/fang/hadoop-2.7.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
:$HADOOP_HOME/sbin:$SCALA_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$YARN_HOME/etc/hadoop
export SPARK_MASTER_IP=218.199.92.227
SPARK_LOCAL_DIRS=/home/fang/spark-1.6.1-bin-hadoop2.6
SPARK_DRIVER_MEMORY=1G
export SPARK_LIBARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
:$HADOOP_HOME/lib/native
注:在设置Worker进程的CPU个数和内存大小,要注意机器的实际硬件条件,如果配置的超过当前Worker节点的硬件条件,Worker进程会启动失败。
vim slaves在slaves文件下填上slave主机名:
slave1
slave2
将配置好的spark-1.6.1-bin-hadoop2.6文件夹分发给所有slaves吧
scp -r ~/spark-1.6.1-bin-hadoop2.6 fang@fang-cenos:~/
启动Spark ,sbin/start-all.sh
验证 Spark 是否安装成功
主节点上启动了Master进程:
在 slave 上启动了Worker进程:
执行命令:
bin/spark-shell --executor-memory 1g --driver-memory 1g --master spark://192.168.0.187:7077
spark yarn 集群部署时
vim spark-env.sh #添加配置内容
在spark-env.sh末尾添加以下内容(这是我的配置,你可以自行修改):
export JAVA_HOME=/home/mmtrix/local/jdk/jdk1.7.0_65
export HADOOP_HOME=/home/mmtrix/Application/Gosun/enterprise/hadoop/hadoop-2.6.0-cdh5.4.1
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=www.migu-cdn-biz18.migu01.mmtrix.com:2181,www.migu-cdn-biz19.migu01.mmtrix.com:2181,www.migu-cdn-biz20.migu01.mmtrix.com:2181 -Dspark.deploy.zookeeper.dir=/spark"
### Let's run everything with JVM runtime, instead of Scala
export SPARK_LAUNCH_WITH_SCALA=0
export SPARK_LIBRARY_PATH=${SPARK_HOME}/lib
export SCALA_LIBRARY_PATH=${SPARK_HOME}/lib
export SPARK_MASTER_WEBUI_PORT=18080
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_PORT=7078
export SPARK_WORKER_WEBUI_PORT=18081
export SPARK_WORKER_DIR=/var/run/spark/work
export SPARK_LOG_DIR=/var/log/spark
export SPARK_PID_DIR='/var/run/spark/'
export SPARK_LOCAL_DIRS=/data/data4/spark/tmp,/data/data5/spark/tmp,/data/data6/spark/tmp
export SPARK_WORKER_CORES=7
export SPARK_WORKER_MEMORY=42g
spark yarn模式还用开启master,worker进程吗?
不要启动sbin/start-all.sh, 去开启master,worker进程。
hadoop yarn和spark进程它们两使用一个就好了,同时使用两个会有资源竞争的问题。
spark on yarn-cluster提交任务
./bin/spark-submit --class com.mmtrix.scala.server.SparkDataServerForHbase --master yarn --deploy-mode cluster --driver-memory 1G --executor-memory 1G --executor-cores 1 /sparkHBase-1.0-SNAPSHOT.jar 40
Spark on YARN 支持两种运行模式,分别为yarn-cluster和yarn-client,yarn-cluster适用于生产环境;而yarn-client适用于交互和调试,因为能在客户端终端看到程序输出。
对比一下两种模式
1、yarn-client用于测试,因为driver运行在本地客户端,负责调度aplication,会与yarn集群产生大量的网络通信,从而导致网卡流量激增。好处在于,直接执行时,本地可以看到所有的log,方便调试。
2、yarn-cluster用于生产环境,因为driver运行在nodemanager,没有网卡流量激增的问题,缺点在于调试不方便,本地用spark-submit提交之后,看不到log,只能通过yarn application -logs application_id 这种命令来查看,不方便。
参考:https://zhuanlan.zhihu.com/p/61902619
https://blog.csdn.net/u010638969/article/details/51283216