热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark各组件功能简单理解(quickstart)

各个组件confspark-env.sh配置spark的环境变量confspark-default.conf配置spark应用默认的配置项和spark-env.sh有重合之处,可在

各个组件

  • conf/spark-env.sh 配置spark的环境变量
  • conf/spark-default.conf 配置spark应用默认的配置项和spark-env.sh有重合之处,可在提交应用时指定要用的配置文件(spark-submit ….. –properties-file FILE 设置应用程序属性的文件放置位置,默认是conf/spark-defaults.conf)
  • bin/spark-shell 一个scala/java的spark REPL工具或者说命令行工具,可用来交互的跑一些脚本,或者测试环境之类
  • bin/spark-submit 部署spark应用
  • sbin/start-all.sh spark-standalone方式启动
  • sbin/start-thriftserver.sh 启动thriftserver,提供了一个jdbc接口查询hive数据库

资源调度

根据spark的部署方式的不同,会有不同的组件执行资源调度(资源主要指cpu,memory)

  • spark on yarn/mesos 由yarn/mesos来做资源调度
  • standalone由spark自己来做资源调度

任务调度

Spark应用提交后经历了一系列的转换,最后成为Task在每个节点上执行。

  1. RDD的Action算子触发Job的提交
  2. 提交到Spark中的Job生成RDD DAG
  3. 由DAGScheduler转化为Stage DAG
  4. 每个Stage中产生相应的Task集合
  5. TaskScheduler将任务分发到Executor执行
  6. 每个任务对应相应的一个数据块,使用用户定义的函数处理数据
    块。

更详细内容 : https://www.2cto.com/net/201712/703266.html

spark 基础操作

  • 主要抽象是RDD(Resilient Distributed Dataset,弹性分布式数据集),它可被分发到集群各个节点上,进行并行操作。RDDs 可以通过 Hadoop InputFormats 创建(如 HDFS),或者从其他 RDDs 转化而来。
  • RDD可以读取hdfs或者local的文件,可以读取text, csv, json, parquet, orc等格式的文件。
  • RDD支持两种类型的操作(算子):
    • action 在数据集上运行计算后返回值
    • transformation转换, 从现有数据集创建一个新的数据集
  • transformation不会立即执行,等到一个action算子触发任务提交
  • spark会根据代码生成DAG图来执行任务的调度
  • rdd结合schema可以创建DataFrame,可以执行一些存表,SQL式的join,select,filter,groupby等操作。

spark-streaming 基础操作

spark的流式处理框架

  • 支持kafka,flume,socket,text等方式创建Stream
  • 生成的对象为DStreamRDD,通过分时生成的RDD来进行操作
  • 支持常用的RDD transformation (map, flatmap,filter,repartition,union,couont,reduce等)
  • 可以通过transfrom算子,将DStream作为rdd进行操作: transform(lambda rdd: func(rdd))
  • 读取kafka消息有两种方式,high api式(带receiver,自动处理offset),low api式(直接操作kafka的offset),spark推荐使用low api式,自己操作offset来保证不冗余的读取,不漏读消息
  • 对于python的spark-streaming,可以借助kazoo包来将offset保存到zookeeper
  • 可以使用checkpoint来进行一定的容错
  • 更详细可以参考:https://blog.csdn.net/weixin_35602748/article/details/78668054

pyspark-streaming demo

from pyspark.sql import SparkSession
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
def parse_msg(spark, rdd):
pass
if __name__ == "__main__":
master = "yarn"
appName = "AppName"
kafka_params = {
"bootstrap.servers": "master:9092", # metadata.broker.list or bootstrap.servers
"auto.offset.reset": "smallest"
}
topics = ["logger"]
spark = SparkSession \
.builder \
.appName(appName) \
.getOrCreate()
# 优先使用sparkSession(spark2.0的方式),这样sparkContext比较容易得到,不用在自定义函数中额外传参
sc = spark.sparkContext
ssc = StreamingContext(sc, 10) # 10s的数据做一次处理
directKafkaStream = KafkaUtils.createDirectStream(ssc, topics, kafka_params)
# get message strings from kafka
lines = directKafkaStream.map(lambda x: x[1])
# transform可以把DStream转换为rdd进行操作
logJsOnStrRDD= lines.transform(lambda rdd: parse_msg(spark, rdd))
# pprint必须有,必须有一个输出,否则提示没法注册,报错: java.lang.IllegalArgumentException: requirement failed: No output operations registered, so nothing to execute
# pprint = pretty print 用更好的格式来打印
logJsonStrRDD.pprint(5)
ssc.start()
ssc.awaitTermination()

推荐阅读
  • 本文介绍了一种根据用户选择动态切换屏幕界面的方法,通过定义不同的选择块(Selection Block),实现灵活的用户交互体验。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 解决SVN图标显示异常问题的综合指南
    本文详细探讨了SVN图标无法正常显示的问题,并提供了多种有效的解决方案,涵盖不同环境下的具体操作步骤。通过本文,您将了解如何排查和修复这些常见的SVN图标显示故障。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • KMP算法是处理字符串匹配的一种高效算法它首先用O(m)的时间对模板进行预处理,然后用O(n)的时间完成匹配。从渐进的意义上说,这样时间复 ... [详细]
  • 信用评分卡的Python实现与评估
    本文介绍如何使用Python构建和评估信用评分卡模型,涵盖数据预处理、模型训练及验证指标选择。附带详细代码示例和视频教程链接。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • 给定行数 numRows,生成帕斯卡三角形的前 numRows 行。例如,当 numRows 为 5 时,返回的结果应为:[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]。 ... [详细]
  • 本文将探讨Java编程语言中对象和类的核心概念,帮助读者更好地理解和应用面向对象编程的思想。通过实际例子和代码演示,我们将揭示如何在Java中定义、创建和使用对象。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文探讨了如何在 F# Interactive (FSI) 中通过 AddPrinter 和 AddPrintTransformer 方法自定义类型(尤其是集合类型)的输出格式,提供了详细的指南和示例代码。 ... [详细]
  • 本文详细介绍了Linux系统中的进程管理函数,涵盖了获取进程ID、用户ID、创建子进程、信号处理等关键操作。通过这些函数,开发者可以更好地控制和管理进程行为。 ... [详细]
author-avatar
空白画叶子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有