• Spark服务启动的一些总结


    1、我理解常用的Spark部署方式有三种

    1)、本地服务,就是所谓的local,在IDE上本地跑程序,用于调试

    2)、Standalone,使用自己的master/worker进行服务的调度。  脱离yarn的资源管理

    3)、Spark on yarn。 使用yarn来进行资源的调度

    2、在spark-env.sh中配置export HADOOP_CONF_DIR= ,这样就可以使用hdfs了。

    3、提交应用使用bin/spark-submit,通过指定master来确定是使用什么模式,即spark:// yarn-cluster yarn-client。如果使用的spark://,那么代表就是standalone模式,那么就需要sbin/start-all.sh启动一下spark集群进行资源调度。

    4、使用bin/spark-shell来进行本地交互式查询。  但使用spark-shell貌似最好在standalone模式下进行

    5、最终执行进程是Executor,它的资源使用在submit时指定--executor-cores,--executor-memory,--num-executors,如果没有指定,那么就会读取spark-env.sh配置文件中的SPARK_EXECUTOR_CORES,SPARK_EXECUTOR_MEMORY

    6、在yarn模式下Executor进程名叫做CoarseGrainedExecutorBackend,在standalone模式下,Executor进程名叫做CoarseGrainedExecutorBackend。 (。。。我一直以为进程名称不一样呢,原来是一样的。 好吧,我是出来搞笑的)

    7、yarn-client,yarn-cluster区别在于driver的位置。  所谓driver是指定你的运行代码。  client模式下,你的client就是在你在客户端中。 cluster模式下,似乎应该是在ApplicationMaster中,它出现的位置是随机的。

    形象的举个例子就清楚了,如果你在你的执行代码中输出了日志,那么在client模式下是可以看到日志的,但在cluster模式下是不太容易看到日志输出的,如果想要看到, 那么需要去yarn的webui看。或者执行命令yarn application -logs xxxxxxxxxxxxx(如果我没有记错的话) 。  

    个人使用经历来看,如果是使用spark streaming ,那么用client感觉个人会好一些。

    后续会读源代码,在源代码中了解一下client 和 cluster使用的区别,才能确定哪个应用场景会更好些。

    暂时就这些,回头有想到的再补充

  • 相关阅读:
    软件质量属性简述
    浅谈MVC架构
    SOA整理
    程序员的自我修养阅读笔记3
    程序员的自我修养阅读笔记2
    程序员的自我修养阅读笔记1
    架构漫谈阅读笔记3
    架构漫谈阅读笔记2
    Weather APP
    php通过==和!==比较NULL和''结果均为真
  • 原文地址:https://www.cnblogs.com/hark0623/p/4485623.html
Copyright © 2020-2023  润新知