非科班出身,年薪50万的大数据Spark学习心得
需积分: 15 88 浏览量
更新于2024-08-04
收藏 95KB DOCX 举报
"某二本非计算机专业16年毕业,通过深入学习大数据技术Spark,实现了职业转型,目前年薪达到50万。本文是该学习者在尚硅谷学习大数据技术Spark的总结,旨在分享其学习经验和理解,帮助其他有志于大数据领域的学习者。"
Spark是大数据处理领域的重要工具,以其高效、易用和可扩展性著称。Spark的核心原理在于它的内核设计,包括了SparkContext、ApplicationMaster、Driver和Executor等关键组件。
Spark应用的提交通常是在Yarn这样的集群管理器上进行。当使用`bin/spark-submit`命令启动Spark应用时,会在集群中启动一个JVM进程,这个进程包含了ApplicationMaster和Driver。其中,ApplicationMaster是一个独立的进程,负责资源的申请和任务的调度;而Driver则是一个运行在JVM中的线程,它通常与SparkContext相联系,SparkContext是Spark程序的入口点,负责创建和管理RDD(弹性分布式数据集)。
Executor是Spark中执行实际计算的实体,它是一个计算对象,同时包含ExecutorBackend作为后台通信接口。Executor们运行在集群的不同节点上,负责执行由Driver分配的任务。
Spark的内部通信机制基于高效的网络框架,早期使用AKKA,现在更多地采用Netty。Netty提供了基于AIO(异步非阻塞I/O)的高性能网络通信能力。在Linux系统中,虽然AIO的底层实现与NIO的EPOLL类似,但在Windows系统上,AIO通过IOCP(I/O完成端口)提供了真正的异步I/O,因此在选择Netty时,需要考虑目标运行环境。
Spark的组件之间通过RPC(远程过程调用)进行通信。Driver通过CoarseGrainedSchedulerBackend与Executor进行交互,Executor则通过CoarseGrainedExecutorBackend响应Driver的调度指令。所有的通信终端都继承自Endpoint,并通过RpcEndpoint接收消息,通过RpcEndpointRef发送或请求消息。
在Spark作业的生命周期中,用户通过SparkConf设置应用名称,创建SparkContext后,逻辑代码被转换为RDD。RDD是Spark的基础数据抽象,它们可以通过转换算子(如map、filter)进行操作,并通过行动算子(如count、collect)触发实际计算。RDD的转换和行动会触发Job的生成,Job会被进一步划分为多个Stage,Stage的划分依据转换算子和依赖关系,尤其是窄依赖和宽依赖。窄依赖允许数据在Stage内部高效传递,而宽依赖则可能导致数据shuffle,从而划分新的Stage。RDD的分区数量在默认情况下是不变的,但某些shuffle操作(如groupByKey、reduceByKey)可能会改变分区数量,这会影响计算的并行度和效率。
通过深入理解Spark的内核原理、组件通信机制以及作业调度流程,可以帮助开发者更好地优化Spark应用,提升大数据处理的效率和性能。这位年薪50万的大佬的学习经验表明,即使是非计算机专业的学习者,也能通过系统学习和实践在大数据领域取得显著成就。
128 浏览量
点击了解资源详情
点击了解资源详情
2024-07-18 上传
2023-08-08 上传
213 浏览量
2023-07-09 上传

冷酷的本杰明
- 粉丝: 5
最新资源
- 乘风多用户PHP统计系统v4.1:源码与项目实践指南
- Vue.js拖放组件:vue-smooth-dnd的封装与应用
- WPF图片浏览器开发教程与源码分享
- 泰坦尼克号获救预测:分享完整版机器学习训练测试数据
- 深入理解雅克比和高斯赛德尔迭代法在C++中的实现
- 脉冲序列调制与跳周期调制相结合的Buck变换器研究
- 探索OpenCV中的PCA人脸检测技术
- Oracle分区技术:表、索引与索引分区深入解析
- Windows 64位SVN客户端下载安装指南
- SSM与Shiro整合的实践案例分析
- 全局滑模控制Buck变换器设计及其仿真分析
- 1602液晶动态显示实现源码及使用教程下载
- Struts2、Hibernate与Spring整合在线音乐平台源码解析
- 掌握.NET Reflector 8.2.0.42:反编译及源码调试技巧
- 掌握grunt-buddha-xiaofangmoon插件的入门指南
- 定频滑模控制在Buck变换器设计中的应用