本文共 2979 字,大约阅读时间需要 9 分钟。
分布式集群搭建:
上面试spark普通的分布式集群搭建,存在master节点的单点故障问题。Hadoop2.x开始,已经使用zookeeper解决了单点故障。同样的策略,spark也利用了zookeeper解决了spark集群的单点故障问题。① 如果已经使用,并启动了spark分布式集群,请手动停止:
$SPARK_HOME/sbin/stop-all.sh②配置并启动zookeeper集群:③修改 $SPARK_HOME/conf 目录中的 spark-env.sh 配置文件如果是之前有分布式集群的话:删除:**export SPARK_MASTER_HOST=xxx**加入:export SPARK_DAEMON_JAVA_OPTS= "-Dspark.deploy.recoveryMode=ZOOKEEPER - Dspark.deploy.zookeeper.url=hadoop01,hadoop02,hadoop03 - Dspark.deploy.zookeeper.dir=/spark"
相关参数解释:
-Dspark.deploy.recoveryMode=ZOOKEEPER:说明整个集群状态是通过zookeeper来维护的,整个集群状态的恢复,也是通过zookeeper来维护的。就是说用 zookeeper 做了 Spark 的 HA 配置,Master(Active)挂掉的话, Master(standby)要想变成 Master(Active)的话,Master(Standby)就要像 zookeeper 读取 整个集群状态信息,然后进行恢复所有 Worker 和 Driver 的状态信息,和所有的 Application 状态信息。-Dspark.deploy.zookeeper.url:将所有配置了 zookeeper,并且在这台机器上有可能做 master(Active)的机器都配置进来-Dspark.deploy.zookeeper.dir:zookeeper中保存 spark 的元数据的znode,保存了 spark 的作业运行状态; zookeeper 会保存 spark 集群的所有的状态信息,包括所有的 Workers 信息,所有的 Applactions 信息,所有的 Driver 信息,如果集群。④如果hadoop集群是高可用集群的话,一定要将core-site.xml 和 hdfs-site.xml放置$SPARK_HOME/conf 目录中,然后同步所有的spark节点。⑤同步配置文件:这里是在已经安装了spark分布式的基础上,只同步spark-env.sh即可:(spark集分布式集群的安装:)scp -r $SPARK_HOME/confspark-env.sh hadoop02:$SPARK_HOME/confscp -r $SPARK_HOME/confspark-env.sh hadoop03:$SPARK_HOME/conf⑥启动集群:$SPARK_HOME/sbin/start-all.sh注意:此时,通过观察启动日志,或者检查 hadoop02 上是否包含有 master 进程等都可以得知 hadoop02 上的 master 并不会自动启动,所以需要手动启动 那么在 hadoop02 执行命令进行启动:$SPARK_HOME/sbin/start-master.sh我们运行的 spark 程序运行的情况来看,可以看到大量的 INFO 级别的日志信息。淹没了 我们需要运行输出结果。可以通过修改 Spark 配置文件来 Spark 日志级别。
具体步骤:进入:cd $SPARK_HOME/conf准备log4j.properties:cp log4j.properties.template log4j.properties配置日志级别:$SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://hadoop02:7077 \ --executor-memory 512m \ --total-executor-cores 3 \$SPARK_HOME/examples/jars/spark-examples_2.11-2.3.0.jar \ 100
启动local模式:[hadoop@hadoop01 ~]$ spark-shell
启动集群模式:$SPARK_HOME/bin/spark-shell \ --master spark://hadoop02:7077,hadoop04:7077 \ #指定 Master 的地址--executor-memory 512M \ #指定每个 worker 可用内存为 512M--total-executor-cores 2 #指定整个集群使用的 cup 核数为 2 个
如果底层使用的yarn的任务资源管理:
修改yarn-site.xml:加入:yarn.nodemanager.vmem-check-enabled false Whether virtual memory limits will be enforced for containers yarn.nodemanager.vmem-pmem-ratio 4 Ratio between virtual memory to physical memory when setting memory limits for containers
之后在重启yarn即可。
转载于:https://blog.51cto.com/14048416/2337711