Spark参数的设置

        spark-env.sh

                    整个集群的设置与资源配置

        spark-submit

                    例  --executor-cores  , 指定这个Application主要的资源配置

                    例  --conf spark.eventLog.enabled=true  --conf spark.eventLog.dir=hdfs://node1:9000/spark/test

                                指定集群特殊的资源配置与运行参数,同 SparkConf.set(properties, value)

        Spark-default.xml(.conf)

                    每个应用程序默认的运行参数配置



SparkShell的使用

    概念:

            SparkShell是Spark自带的一个快速原型开发工具,也可以说是Spark的scala REPL(Read-Eval-Print-Loop),即交互式shell。

            支持使用scala语言来进行Spark的交互式编程。

            就是在命令行里输入一行代码,Spark执行一行。

    使用:

            启动Standalone集群

                   ./start-all.sh 

            在客户端上启动spark-shell:

                    ./spark-shell --master spark://node1:7077 

            启动hdfs,创建目录spark/test,上传文件wc.txt

            启动hdfs集群:

                    start-all.sh

            创建目录:

                    hdfs dfs -mkdir -p /spark/test

            上传wc.txt

                    hdfs dfs -put /root/test/wc.txt /spark/test/

            运行wordcount , 不用创建SparkContext,脚本里面已经创建了,指定了MasterIp,AppName

                    sc.textFile("hdfs://node1:9000/spark/test/wc.txt")

                    .flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).foreach(println)



SparkUI界面介绍

       默认WEB UI 端口 8080: 两种修改方式

A: 在 spark-env.sh 添加 SPARK_MASTER_WEBUI_PORT

B: 修改sbin下的 start-master.sh 脚本,将8080修改

        每个Application的AppName在WebUI中标记每个Application

                ./spark-shell --master  spark://node1:7077 --name myapp


配置historyServer

        临时配置 对本次提交的应用程序起作用 ,客户端提交时指定

                ./spark-shell --master spark://node1:7077 

                    --name myapp1

                    --conf spark.eventLog.enabled=true

                     --conf spark.eventLog.dir=hdfs://node1:9000/spark/test

                停止程序,在Web UI中 Completed Applications 对应的 ApplicationID 中能查看history

        永久配置spark-default.conf 配置文件中配置 HistoryServer,对所有提交的Application都起作用

                在客户端节点,进入 ${SPARK_HOME} /conf/ spark-defaults.conf  最后加入:

  # 开启记录事件日志的功能

  spark.eventLog.enabled  true

  # 设置事件日志存储的目录

  spark.eventLog.dir  hdfs://node1:9000/spark/test

  # 设置HistoryServer加载事件日志的位置

  spark.history.fs.logDirectory   hdfs://node1:9000/spark/test

  # 日志优化选项,压缩日志

  spark.eventLog.compress  true

                启动HistoryServer:

                        ./start-history-server.sh

                访问HistoryServer:node4:18080,之后所有提交的应用程序运行状况都会被记录。


Master HA

1、Master的高可用原理

        Standalone集群只有一个Master,如果Master挂了就无法提交应用程序,需要给Master进行高可用配置:

        Master的高可用可以使用 fileSystem(文件系统)zookeeper(分布式协调服务)

                fileSystem 

                        只有存储功能,可以存储Master的元数据信息,用fileSystem搭建的Master高可用,在Master失败时,需要我们手动启动另外的备用Master,这种方式不推荐使用。

                zookeeper

                        有选举和存储功能,可以存储Master的元数据信息,使用zookeeper搭建的Master高可用,当Master挂掉时,备用的Master会自动启动,推荐使用这种方式搭建Master的HA。

        

2、Master高可用搭建
        1) 在Spark Master节点上配置主Master,配置spark-env.sh 里的 JAVA参数
                指定部署恢复模式,zookeeper的地址,zookeeper中保存spark信息的文件夹
export SPARK_DAEMON_JAVA_OPTS="
    -Dspark.deploy.recoveryMode=ZOOKEEPER
    -Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181 
    -Dspark.deploy.zookeeper.dir=/sparkmasterha"
        2) 发送到其他worker节点上
        3) 找一台节点(非主Master节点)配置备用 Master,修改spark-env.sh配置节点上的MasterIP,修改MasterIP为自己
export SPARK_MASTER_IP=node02
        4) 启动集群之前启动zookeeper集群:
./zkServer.sh start
        5) 启动spark Standalone集群,启动备用Master
        6) 打开主Master和备用Master WebUI页面,观察状态。
3、注意点
        主备切换过程中不能提交Application。
        主备切换过程中不影响已经在集群中运行的Application。因为Spark是粗粒度资源调度。
4、测试验证
        提交SparkPi程序,kill主Master观察现象。
./spark-submit  --master spark://node1:7077,node2:7077  --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 10000

添加新评论