zoukankan      html  css  js  c++  java
  • Spark 集群搭建

    下载并上传

    官网下载:下载 Spark 安装包, 下载时候选择对应的 Hadoop 版本,然后上传到虚拟机上

    解压并拷贝

    # 解压 Spark 安装包
    tar xzvf spark-2.2.0-bin-hadoop2.7.tgz
    
    # 移动 Spark 安装包
    mv spark-2.2.0-bin-hadoop2.7.tgz /export/servers/spark

    修改配置文件

    配置  spark-env.sh 文件

    • 进入配置目录, 并复制一份新的配置文件, 以供在此基础之上进行修改
    cd /export/servers/spark/conf
    cp spark-env.sh.template spark-env.sh
    vi spark-env.sh
    • 将以下内容复制进配置文件末尾
    # 指定 Java Home
    export JAVA_HOME=/export/servers/jdk1.8.0
    
    # 指定 Spark Master 地址
    export SPARK_MASTER_HOST=node01
    export SPARK_MASTER_PORT=7077

    配置 slaves 文件

    修改配置文件 slaves, 以指定从节点为止, 从在使用 sbin/start-all.sh 启动集群的时候, 可以一键启动整个集群所有的 Worker

    • 进入配置目录, 并复制一份新的配置文件, 以供在此基础之上进行修改
    cd /export/servers/spark/conf
    cp slaves.template slaves
    vi slaves
    • 配置所有从节点的地址
    node02
    node03

    配置 HistoryServer

    默认情况下, Spark 程序运行完毕后, 就无法再查看运行记录的 Web UI 了, 通过 HistoryServer 可以提供一个服务, 通过读取日志文件, 使得我们可以在程序运行结束后, 依然能够查看运行过程

    • 复制 spark-defaults.conf, 以供修改
    cd /export/servers/spark/conf
    cp spark-defaults.conf.template spark-defaults.conf
    vi spark-defaults.conf
    • 将以下内容复制到末尾处, 通过这段配置, 可以指定 Spark 将日志输入到 HDFS 中
    spark.eventLog.enabled  true
    spark.eventLog.dir      hdfs://node01:8020/spark_log
    spark.eventLog.compress true
    • 将以下内容复制到  ' spark-env.sh '  的末尾, 配置 HistoryServer 启动参数, 使得 HistoryServer 在启动的时候读取 HDFS 中写入的 Spark 日志
    # 指定 Spark History 运行参数
    export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node01:8020/spark_log"
    • 为 Spark 创建 HDFS 中的日志目录
    hdfs dfs -mkdir -p /spark_log

    分发和运行

    1. 将 Spark 安装包分发给集群中其它机器
      cd /export/servers
      scp -r spark node02:$PWD
      scp -r spark node03:$PWD
    2. 启动 Spark Master 和 Slaves, 以及 HistoryServer
      cd /export/servers/spark
      sbin/start-all.sh
      sbin/start-history-server.sh

    Spark 集群高可用搭建

    对于 Spark Standalone 集群来说, 当 Worker 调度出现问题的时候, 会自动的弹性容错, 将出错的 Task 调度到其它 Worker 执行

    但是对于 Master 来说, 是会出现单点失败的, 为了避免可能出现的单点失败问题, Spark 提供了两种方式满足高可用

    • 使用 Zookeeper 实现 Masters 的主备切换

    • 使用文件系统做主备切换

    停止 Spark 集群

    cd /export/servers/spark
    sbin/stop-all.sh

    修改配置文件

     增加 Spark 运行时参数, 从而指定 Zookeeper 的位置

    • 进入 spark-env.sh
    cd /export/servers/spark/conf
    vi spark-env.sh
    • 编辑 spark-env.sh, 添加 Spark 启动参数, 并去掉 SPARK_MASTER_HOST 地址
    # 指定 Java Home
    export JAVA_HOME=/export/servers/jdk1.8.0_141
    
    # 指定 Spark Master 地址
    # export SPARK_MASTER_HOST=node01
    export SPARK_MASTER_PORT=7077
    
    # 指定 Spark History 运行参数
    export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node01:8020/spark_log"
    
    # 指定 Spark 运行时参数
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181 -Dspark.deploy.zookeeper.dir=/spark"

     分发配置文件到整个集群

    cd /export/servers
    scp -r spark node02:$PWD
    scp -r spark node03:$PWD

    启动

    在 node01 上启动整个集群

    cd /export/servers/spark
    sbin/start-all.sh
    sbin/start-history-server.sh

    在 node02 上单独再启动一个 Master

    cd /export/servers/spark
    sbin/start-master.sh

    查看 node01 master 和 node02 master 的 WebUI

    • http://node01:8080    一个是 ALIVE(主), 另外一个是 STANDBY(备)

    •  如果关闭一个, 则另外一个成为'ALIVE'
    # 在 Node01 中执行如下指令
    cd /export/servers/spark/
    sbin/stop-master.sh

  • 相关阅读:
    几种委托的解释
    Python中的编码风格
    Python的循环
    Python中操作文件
    Python的random模块、string模块、time模块、os模块
    Python中的函数
    Python的数据类型
    使用iview Form 的resetFields()在f12下报错
    滚动条的滚动距离
    编程学习之资源
  • 原文地址:https://www.cnblogs.com/MoooJL/p/14243405.html
Copyright © 2011-2022 走看看