Spark内存并行盘算框架

[复制链接]
发表于 2025-10-26 06:22:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  • spark焦点概念
  • spark集群架构
  • spark集群安装摆设
  • spark-shell的使用
  • 通过IDEA开辟spark步伐
1. Spark是什么

   Apache Spark™ is a unified analytics engine for large-scale data processingspark是针对于大规模数据处理惩罚的同一分析引擎
  spark是在Hadoop根本上的改进,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行盘算框架,Spark基于map reduce算法实现的分布式盘算,拥有Hadoop MapReduce所具有的优点;但差别于MapReduce的是Job中心输出和效果可以生存在内存中,从而不再须要读写HDFS,因此Spark能更好地实用于数据发掘与呆板学习等须要迭代的map reduce的算法。 ​ spark是基于内存盘算框架,盘算速率非常之快
输入 盘算 输出
分发 盘算 网络
第一步 生存中心效果 第二步

2. Spark

2.1 速率快

   相对于hadoop来说,有使用hadoop MR履历会有领会
  

  • 运行速率进步100倍
    Apache Spark使用开始进的DAG调治步伐,查询优化步伐和物理实行引擎,实现批量和流式数据的高性能。
  • spark比mapreduce快的2个重要缘故原由
    基于内存
    mapreduce任务后期再盘算的时间,每一个job的输出效果会落地到磁盘,后续有其他的job须要依赖于前面job的输出效果,这个时间就须要举行大量的磁盘io使用。性能就比力低。 ​ spark任务后期再盘算的时间,job的输出效果可以生存在内存中,后续有其他的job须要依赖于前面job的输出效果,这个时间就直接从内存中获取得到,克制了磁盘io使用,性能比力高
    历程与线程
    mapreduce任务以历程的方式运行在yarn集群中,比如步伐中有100个MapTask,一个task就须要一个历程,这些task要运行就须要开启100个历程。 ​ spark任务以线程的方式运行在历程中,比如步伐中有100个MapTask,后期一个task就对应一个线程,这里就不在是历程,这些task须要运行,这里可以非常一点:只须要开启1个历程,在这个历程中启动100个线程就可以了。历程中可以启动许多个线程,而开启一个历程与开启一个线程须要的时间和调治代价是不一样。 开启一个历程须要的时间远弘大于开启一个线程。
2.2 易用性



  • 可以快速去编写spark步伐通过 java/scala/python/R/SQL等差别语言
2.3 通用性



  • spark框架不在是一个简单的框架,可以把spark明确成一个生态体系,它内部是包罗了许多模块,基于差别的应用场景可以选择对应的模块去使用
    sparksql、api
    通过sql去开辟spark步伐做一些离线分析
    sparkStreaming
    重要是用来办理公司有实时盘算的这种场景
    Mlib
    它封装了一些呆板学习的算法库
    Graphx 图盘算
2.4 兼容性



  • spark步伐就是一个盘算逻辑步伐,这个任务要运行就须要盘算资源(内存、cpu、磁盘),那边可以给当前这个任务提供盘算资源,就可以把spark步伐提交到那边去运行
    standAlone
    少量的节点,比力纯粹的spark任务
    它是spark自带的集群模式,整个任务的资源分配由spark集群的老大Master负责
    yarn
    yarn有接口,可以对接其他的盘算框架 mr flink spark java
    可以把spark步伐提交到yarn中运行,整个任务的资源分配由yarn中的老大ResourceManager负责
    mesos
    云原生支持的比力快
    它也是apache开源的一个雷同于yarn的资源调治平台。
3. Spark与Yarn

mesos standalone yarn cpu 磁盘 内存
spark提交任务到yarn


  • Driver
    它会实行客户端写好的main方法,它会构建一个名叫SparkContext对象
  • Task
    spark任务是以task线程的方式运行在worker节点对应的executor历程中
spark是调用了yarn的接口,将任务提交给yarn来实行盘算,现实的盘算逻辑就是我们driver中的代码
4. Spark集群安装摆设



  • 事先搭建好hadoop分布式情况


  • 下载安装包
  • 解压安装包到指定的安装目次/root
  • 重定名解压目次
    mv spark-3.1.1-bin-hadoop3.2 spark
  • 修改设置文件,进入到spark的安装目次下对应的conf文件夹
    vim spark-env.sh ( mv spark-env.sh.template spark-env.sh)
    vim slaves ( mv slaves.template salves)
    1. #指定spark集群的worker节点
    2. hadoop01
    3. hadoop02
    4. hadoop03
    复制代码
  • 分发安装目次到其他呆板
    1. xsync /root/spark /root/spark
    复制代码
  • 8、修改spark情况变量(也可以不设置,这里重要是为了)
    vim /etc/profile
    1. export SPARK_HOME=/root/spark
    2. export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
    复制代码
当启动好spark集群之后,可以访问如许一个地点http://hadoop01:8080
5. Spark怎么使用

5.1 生产情况

  1. bin/spark-submit \
  2. --class org.apache.spark.examples.SparkPi \
  3. --master yarn \
  4. examples/jars/spark-examples_2.12-3.1.1.jar \
  5. 10
  6. ​
  7. ##参数说明
  8. --class:指定包含main方法的主类
  9. --master:指定spark集群master地址
  10. --executor-memory:指定任务在运行的时候需要的每一个executor内存大小
  11. --total-executor-cores: 指定任务在运行的时候需要总的cpu核数
  12. ​
复制代码
5.2 暂时调试情况

spark整合HDFS,在hadoop01节点vim /root/spark/conf/spark-env.sh
  1. export HADOOP_CONF_DIR=/opt/bigdata/hadoop/etc/hadoop
复制代码
分发到其他节点
  1. xsync /root/spark/conf/spark-env.sh /root/spark/conf/spark-env.sh
复制代码
实行spark-shell --master yarn
  1. sc.textFile("/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
  2. ​
  3. sc.textFile("hdfs://hadoop01:9000/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
复制代码
5.3 开辟情况

构建maven工程,添加pom依赖
  1. <dependencies>
  2.    <dependency>
  3.        <groupId>org.apache.spark</groupId>
  4.        <artifactId>spark-core_2.12</artifactId>
  5.        <version>3.1.1</version>
  6.    </dependency>
  7. </dependencies>
  8. ​
  9. <build>
  10.        <sourceDirectory>src/main/scala</sourceDirectory>
  11.        <plugins>
  12.            <plugin>
  13.                <groupId>net.alchim31.maven</groupId>
  14.                <artifactId>scala-maven-plugin</artifactId>
  15.                <version>3.2.2</version>
  16.                <executions>
  17.                    <execution>
  18.                        <goals>
  19.                            <goal>compile</goal>
  20.                            <goal>testCompile</goal>
  21.                        </goals>
  22.                        <configuration>
  23.                            <args>
  24.                                <arg>-dependencyfile</arg>
  25.                                <arg>${project.build.directory}/.scala_dependencies</arg>
  26.                            </args>
  27.                        </configuration>
  28.                    </execution>
  29.                </executions>
  30.            </plugin>
  31.            <plugin>
  32.                <groupId>org.apache.maven.plugins</groupId>
  33.                <artifactId>maven-shade-plugin</artifactId>
  34.                <version>2.4.3</version>
  35.                <executions>
  36.                    <execution>
  37.                        <phase>package</phase>
  38.                        <goals>
  39.                            <goal>shade</goal>
  40.                        </goals>
  41.                        <configuration>
  42.                            <filters>
  43.                                <filter>
  44.                                    <artifact>*:*</artifact>
  45.                                    <excludes>
  46.                                        <exclude>META-INF/*.SF</exclude>
  47.                                        <exclude>META-INF/*.DSA</exclude>
  48.                                        <exclude>META-INF/*.RSA</exclude>
  49.                                    </excludes>
  50.                                </filter>
  51.                            </filters>
  52.                            <transformers>
  53.                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  54.                                    <mainClass></mainClass>
  55.                                </transformer>
  56.                            </transformers>
  57.                        </configuration>
  58.                    </execution>
  59.                </executions>
  60.            </plugin>
  61.        </plugins>
  62. </build>
复制代码
提交任务使用的脚本
  1. spark-submit \
  2. --class com.mejava.day02.WordCount \
  3. --master yarn \
  4. --executor-memory 1G \
  5. scala_learn-1.0-SNAPSHOT.jar
复制代码




回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表