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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据组件-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的热门话题分析
                本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
                SaaS 模式云数据仓库必修课
                本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
                相关文章
                |
                22天前
                |
                监控 网络协议 Java
                Tomcat源码解析】整体架构组成及核心组件
                Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
                Tomcat源码解析】整体架构组成及核心组件
                |
                23天前
                |
                Kubernetes API 调度
                Kubernetes 架构解析:理解其核心组件
                【8月更文第29天】Kubernetes(简称 K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。它提供了一个可移植、可扩展的环境来运行分布式系统。本文将深入探讨 Kubernetes 的架构设计,包括其核心组件如何协同工作以实现这些功能。
                49 0
                |
                2天前
                |
                负载均衡 5G 网络性能优化
                深入解析LTE(长期演进技术)的基本架构及其关键组件
                深入解析LTE(长期演进技术)的基本架构及其关键组件
                18 2
                |
                13天前
                |
                XML Java 数据库
                在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂
                【9月更文挑战第8天】在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂。日志作为系统行为的第一手资料,传统记录方式因缺乏全局视角而难以满足跨服务追踪需求。本文通过一个电商系统的案例,介绍如何在Spring Boot应用中手动实现日志链路追踪,提升调试效率。我们生成并传递唯一追踪ID,确保日志记录包含该ID,即使日志分散也能串联。示例代码展示了使用过滤器设置追踪ID,并在日志记录及配置中自动包含该ID。这种方法不仅简化了问题定位,还具有良好的扩展性,适用于各种基于Spring Boot的微服务架构。
                28 3
                |
                20天前
                |
                机器学习/深度学习 分布式计算 大数据
                Spark 适合解决多种类型的大数据处理问题
                【9月更文挑战第1天】Spark 适合解决多种类型的大数据处理问题
                31 3
                |
                24天前
                |
                分布式计算 大数据 Apache
                跨越界限:当.NET遇上Apache Spark,大数据世界的新篇章如何谱写?
                【8月更文挑战第28天】随着信息时代的发展,大数据已成为推动企业决策、科研与技术创新的关键力量。Apache Spark凭借其卓越的分布式计算能力和多功能数据处理特性,在大数据领域占据重要地位。然而,对于.NET开发者而言,如何在Spark生态中发挥自身优势成为一个新课题。为此,微软与Apache Spark社区共同推出了.NET for Apache Spark,使开发者能用C#、F#等语言编写Spark应用,不仅保留了Spark的强大功能,还融合了.NET的强类型系统、丰富库支持及良好跨平台能力,极大地降低了学习门槛并拓展了.NET的应用范围。
                42 3
                |
                24天前
                |
                存储 安全 虚拟化
                深入解析:Docker的架构与组件
                【8月更文挑战第27天】
                115 2
                |
                26天前
                |
                JSON 前端开发 API
                Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
                Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
                40 2
                |
                28天前
                |
                存储 分布式计算 供应链
                Spark在供应链核算中应用问题之调整Spark读取ODPS离线表分区大小如何解决
                Spark在供应链核算中应用问题之调整Spark读取ODPS离线表分区大小如何解决
                |
                20天前
                |
                Java Spring API
                Spring框架与GraphQL的史诗级碰撞:颠覆传统,重塑API开发的未来传奇!
                【8月更文挑战第31天】《Spring框架与GraphQL:构建现代API》介绍了如何结合Spring框架与GraphQL构建高效、灵活的API。首先通过引入`spring-boot-starter-data-graphql`等依赖支持GraphQL,然后定义查询和类型,利用`@GraphQLQuery`等注解实现具体功能。Spring的依赖注入和事务管理进一步增强了GraphQL服务的能力。示例展示了从查询到突变的具体实现,证明了Spring与GraphQL结合的强大潜力,适合现代API设计与开发。
                39 0

                热门文章

                最新文章