大数据组件-Spark高可用架构部署

简介: 大数据组件-Spark高可用架构部署

 image.gif编辑

👨🏻‍🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟

🌈擅长领域:Java、大数据、运维、电子

🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏,相应的有空了我也会回访,互助!!!

🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!

 


解压

sudo tar -zxf ~/download/spark-2.0.2-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.0.2-bin-without-hadoop/ ./spark
sudo chown -R hadoop ./spark

image.gif

配置环境变量

在Mster节点主机的终端中执行如下命令:

vim ~/.bash_profile

image.gif

在.bash_profile添加如下配置:

export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

image.gif

执行如下命令使得配置立即生效:

source ~/.bash_profile

image.gif

Spark配置

在Master节点主机上进行如下操作:

    • 配置slaves文件将 slaves.template 拷贝到 slaves
    cd /usr/local/spark/
    cp ./conf/slaves.template ./conf/slaves

    image.gif

    slaves文件设置Worker节点。编辑slaves内容,把默认内容localhost替换成如下内容:

    master
    slave01
    slave02

    image.gif

      • 配置spark-env.sh文件将 spark-env.sh.template 拷贝到 spark-env.sh
      cp ./conf/spark-env.sh.template ./conf/spark-env.sh
      export SCALA_HOME=/usr/local/src/scala-2.13.5
      export JAVA_HOME=/usr/local/src/jdk1.8.0_144
      export HADOOP_HOME=/usr/local/src/hadoop-2.6.0
      export HADOOP_CONF_DIR=/usr/local/src/hadoop-2.6.0/etc/hadoop
      #export SPARK_MASTER_IP=master
      #export SPARK_WORKER_MEMORY=1g
      #export SPARK_EXECUTOR_MEMORY=1g
      #export SPARK_DRIVER_MEMORY=500m
      #export SPARK_WORKER_CORES=2
      export SPARK_HOME=/usr/local/src/spark-2.0.1-bin-without-hadoop
      export SPARK_DIST_CLASSPATH=$(/usr/local/src/hadoop-2.6.0/bin/hadoop classpath)
      export SPARK_HISTORY_OPTS="
      -Dspark.history.ui.port=18080
      -Dspark.history.retainedApplication=30
      -Dspark.history.fs.logDirectory=hdfs://mycluster/directory"
      #下面这个决定spark是否高可用
      export SPARK_DAEMON_JAVA_OPTS="
      -Dspark.deploy.recoveryMode=ZOOKEEPER 
      -Dspark.deploy.zookeeper.url=Master:2181,Worker1:2181,Worker2:2181 
      -Dspark.deploy.zookeeper.dir=/spark"
      • image.gifSPARK_MASTER_IP 指定 Spark 集群 Master 节点的 IP 地址;

      修改sprak-default.conf的内容如下:

      # Example:# 
      spark.master                     spark://master:7077spark.eventLog.enabled           
      truespark.eventLog.dir               hdfs://mycluster/directory
      # spark.serializer                 org.apache.spark.serializer.KryoSerializer
      # spark.driver.memory              5g
      # spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

      image.gif

      配置好之后使用scp将整个spark包发送到集群机器上,并且发送.bash_profile文件并且source.

      启动Spark集群

      启动Hadoop集群

      启动Spark集群前,要先启动Hadoop集群。在Master节点主机上运行如下命令:

      cd /usr/local/hadoop/sbin/start-all.sh

      image.gif

      启动Spark集群

        1. 启动Master节点在Master节点主机上运行如下命令,ui访问8080:
        cd /usr/local/spark/sbin/start-master.sh


        • 在Master节点上运行jps命令,可以看到多了个Master进程:
        15093 Jps
        14343 SecondaryNameNode
        14121 NameNode
        14891 Master
        14509 ResourceManager
        • 启动所有Slave节点在Master节点主机上运行如下命令:
        sbin/start-slaves.sh
        • image.gif分别在slave01、slave02节点上运行jps命令,可以看到多了个Worker进程
        37553 DataNode
        37684 NodeManager
        37876 Worker
        37924 Jps
        • 在浏览器上查看Spark独立集群管理器的集群信息在master主机上打开浏览器,访问http://master:8080
        • 如果是高可用可以在任意的机器上使用start-master.sh启动达成spark高可用,然后kill掉之前的master,过一会zookeeper更新就可以看见第二台master状态转变为Active,并且转移了task到自身。
        • 如需启动spark的历史服务器如下指令,ui访问18080
        start-history-server.sh
        • 测试loacl模式,求派案例
        **bin/spark-submit \\
        --class org.apache.spark.examples.SparkPi \\
        --master spark://master:7077,slave1:7077,slave2:7077  \\
        --executor-memory 1G \\
        --total-executor-cores 2 \\
        ./examples/jars/spark-examples_2.11-2.1.1.jar \\
        100**
        • 注意:提交的任务会在console上直接可视的执行,也就是client模式
          • 测试cluster模式,求派案例
          **bin/spark-submit \\
          --class org.apache.spark.examples.SparkPi \\
          --master spark://master:7077,slave1:7077,slave2:7077  \\
          --deploy-mode cluster  \\
          --executor-memory 1G \\
          --total-executor-cores 2 \\
          ./examples/jars/spark-examples_2.11-2.1.1.jar \\
          100**
          • 注意:提交的任务不会直接在console上可视的执行,而是直接被提交到spark节点上执行,可以查看ui观察运行成功与否。
            • 如需看job页面需要预先启动spark-shell,才可以访问4040端口
            1. Yarn模式
              • 需要先修改hadoop的yarn-site.xml
              <property>
                <name>yarn.nodemanager.pmem-check-enabled</name>
                <value>false</value>
              </property>
              <property>
                <name>yarn.nodemanager.vmem-check-enabled</name>
                <value>false</value>
              </property>
              • 测试案例
              bin/spark-submit \\--class org.apache.spark.examples.SparkPi \\--master yarn \\--deploy-mode client \\./examples/jars/spark-examples_2.11-2.1.1.jar \\100


              关闭Spark集群

                • 关闭Master节点
                sbin/stop-master.sh
                • 关闭Worker节点
                sbin/stop-slaves.sh
                • 关闭Hadoop集群
                cd /usr/local/hadoop/sbin/stop-all.sh


                相关实践学习
                基于MaxCompute的热门话题分析
                Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
                相关文章
                |
                人工智能 分布式计算 大数据
                大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
                本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
                |
                分布式计算 大数据 Apache
                ClickHouse与大数据生态集成:Spark & Flink 实战
                【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
                1387 2
                ClickHouse与大数据生态集成:Spark & Flink 实战
                |
                存储 分布式计算 Hadoop
                从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
                从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
                942 79
                |
                分布式计算 Kubernetes 调度
                Kubeflow-Spark-Operator-架构学习指南
                本指南系统解析 Spark Operator 架构,涵盖 Kubebuilder 开发、控制器设计与云原生集成。通过四阶段学习路径,助你从部署到贡献,掌握 Kubernetes Operator 核心原理与实战技能。
                725 0
                |
                机器学习/深度学习 人工智能 自然语言处理
                3 秒音频也能克隆?拆解 Spark-TTS 架构的极致小样本学习
                本文深入解析了 Spark-TTS 模型的架构与原理,该模型仅需 3 秒语音样本即可实现高质量的零样本语音克隆。其核心创新在于 BiCodec 单流语音编码架构,将语音信号分解为语义 Token 和全局 Token,实现内容与音色解耦。结合大型语言模型(如 Qwen 2.5),Spark-TTS 能直接生成语义 Token 并还原波形,简化推理流程。实验表明,它不仅能克隆音色、语速和语调,还支持跨语言朗读及情感调整。尽管面临相似度提升、样本鲁棒性等挑战,但其技术突破为定制化 AI 声音提供了全新可能。
                1267 35
                |
                SQL JSON 分布式计算
                Spark SQL架构及高级用法
                Spark SQL基于Catalyst优化器与Tungsten引擎,提供高效的数据处理能力。其架构涵盖SQL解析、逻辑计划优化、物理计划生成及分布式执行,支持复杂数据类型、窗口函数与多样化聚合操作,结合自适应查询与代码生成技术,实现高性能大数据分析。
                1053 2
                |
                SQL 机器学习/深度学习 分布式计算
                【赵渝强老师】Spark生态圈组件
                本文介绍了Spark的生态圈体系架构,包括其核心执行引擎Spark Core、结构化数据处理模块Spark SQL、实时数据流处理模块Spark Streaming,以及机器学习框架MLlib和图计算框架GraphX。文中通过图片和视频详细解析了各模块的功能及访问接口。
                521 2
                |
                存储 分布式计算 Hadoop
                数据湖技术:Hadoop与Spark在大数据处理中的协同作用
                【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
                865 2
                |
                Cloud Native Serverless API
                微服务架构实战指南:从单体应用到云原生的蜕变之路
                🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
                1112 4
                微服务架构实战指南:从单体应用到云原生的蜕变之路