当前位置: 首页 > news >正文

Spark入门

目录

  1. Spark入门: 概述+历史+概述
  2. SparkCore:RDD
  3. SparkSQL:
  4. SparkStreaming
  5. Spark内核调优

Spark概述

回顾: Hadoop = HDFS存储 + MR分析计算 + YARN调度
Hadoop的MR计算中的shuffle需要落盘,速度不够快。
Spark是一种基于内存的分析计算引擎。

历史

2009诞生于加州伯克利分校,项目采用scala编写。
2010年开源。
2013年6月成为Apache孵化项目,将资源和任务调度分开。
2014年2月成为Apache顶级项目。

两种模式

  1. standalone独立部署模式:不可以更换为MR来计算
  2. yarn模式:可以更换为MR来分析计算

Hadoop和Spark的对比

  1. Hadoop MR框架: 计算过程中Map和Reduce之间的shuffle过程需要落盘,reduce结束后也需要落盘。
  2. Spark RDD框架:会主动考虑前后数据的逻辑性,只在必要时进行shuffle落盘。适合迭代式计算,图形计算。Spark支持优化,避免了一些重复冗余的计算操作,是基于懒加载机制的框架。

Spark模块和特点

模块: SparkSQL + SparkCore +Yarn
特点:

  1. 快:基于内存运算比Hadoop MR快100倍以上, 有很强的自适应优化,帮你自动计算出最合适的任务资源调度方案。
  2. 易用:支持java, Python, Scala的API
  3. 通用:提供了统一的解决方案,支持SQL、实时流处理
  4. 兼容性:调度和计算分离,支持其他调度器,比如yarn调度器

安装部署

本地模式

  1. 提交Spark任务
bin/spark-submit \ # 提交任务
--class org.apache.spark.examples.SparkPi \
--master local[2] \ # 运行模式
# Spark案例任务,求PI
./examples/jars/spark-examples_2.12-3.1.1.jar \   
10  # 任务跑10次,取平均值

–master : 表示运行模式,默认是local[], 中括号里面表示CPU核数, 表示当前机器的全部CPU。

  1. hadoop102:4040 Spark任务运行查看界面,建议将10替换为1000,任务结束后无法进入。可以看到计算过程的有向无环图。

YARN模式

  1. 关闭虚拟机
  2. 重新解压spark,命名为spark-yarn目录
  3. 关闭物理和虚拟的内存检查
  4. 修改spark-env.sh配置文件的YARN_CONF_DIR,告诉spark,yarn配置文件在哪里。
  5. hadoop103:8088 通过YARN查看任务执行情况。
  6. 配置历史服务
    • 修改spark-defaults.conf, 配置日志存储路径
    • 修改spark-env.sh, 添加如下配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory 
-Dspark.history.retainedApplications=30"
  1. 创建历史服务器的目录
  2. sbin/start-history-server.sh,启动历史服务器HistoryServer
  3. 再次提交计算PI的任务,使用Hadoop102:18080查看任务DAG图解,查看有多少个阶段和计算过程。主要查看executor界面,查看任务申请了多少个执行器,和执行器的运行时间。
    10.配置历史日志,为了能够通过YARN网页跳转到Spark历史日志网页中。在spark-defaults.conf添加如下信息:
spark.yarn.historyServer.address=hadoop102:18080
spark.history.ui.port=18080

运行流程

Spark yarn 也有两种模式:

  1. 客户端模式:初始化,任务的切分都在本地执行。适合内网执行,大数据一般都是内网运行,故一般是客户端模式,任务结果就在当前客户端可以看到。
  2. 集群模式:初始化,任务的切分在集群的AM中执行,适合外网执行,任务结果需要到YARN中才能查看到。
http://www.lryc.cn/news/193159.html

相关文章:

  • react–antd 实现TreeSelect树形选择组件,实现点开一层调一次接口
  • android 固定进度环形刷新效果
  • python jieba 词性标注 中文词性分类 nlp jieba.posseg
  • LeetCode 每日一题 2023/10/9-2023/10/15
  • 相似性搜索:第 3 部分--混合倒排文件索引和产品量化
  • 小程序使用uni.createAnimation只执行一次的问题
  • win10取消ie浏览器自动跳转edge浏览器
  • 目录启示:使用 use 关键字为命名空间内的元素建立非限定名称
  • Go语言介绍与安装
  • 常用傅里叶变换表
  • 生活中的视音频技术
  • 一种用于肽图分析的烷化剂,Desthiobiotin-Iodoacetamide
  • 【(数据结构) —— 顺序表的应用-通讯录的实现】
  • macbook磁盘清理免费教程分享
  • cartographer_ros数据加载与处理
  • 设计模式-7种结构型模式
  • 华为李鹏:加速5G商业正循环,拥抱更繁荣的5.5G(5G-A)
  • Marin说PCB之CoilcraftBourns POC 电感的性能对比
  • 聊聊Maven的依赖传递、依赖管理、依赖作用域
  • centos6/7 SOCKS5 堆溢出漏洞修复(RPM方式)curl 8.4 CVE-2023-38545 CVE-2023-38546
  • C#,数值计算——数据建模Proposal的计算方法与源程序
  • 如何使用命令生成动态链接库.dll文件(保姆级教学)
  • Qt之模块介绍
  • Socks5代理和代理IP
  • 计算机指令、机器码
  • MyLife - Docker安装Consul
  • Leetcode刷题笔记--Hot61-70
  • python特别篇—github基本操作手册
  • tiktok直播websocket序列化与反序列化
  • 微信picker弹出之后 , 背景变成灰色是怎么做的