IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Spark学习痛点和路线图 -> 正文阅读

[大数据]Spark学习痛点和路线图

Spark学习的痛点

对初学者(特别是自学者)学习来说,Spark学习有以下两大痛点

1.头绪太多,不知道从哪学

从Spark的技术栈可以看到,涉及的技术从操作系统到外部组件、Spark框架、交互工具、编程语言,涉及多个层次,每个层次又包括多个技术和知识点,对初学者来说,可能只是对其中的部分技术有一些模糊的认识,并不会形成图1中那么全面、清晰的层次。

图1.Spark Streaming数据源和输出

这样,就会导致学习的时候,到底是从哪开始?比如确定了先学习Linux,那么Linux的发行版又选择哪个好?Linux的命令又需要学习哪些?如果要想学得全面,仅《鸟哥的Linux私房菜》系列书可能就够学1、2年的,那么又要学到哪个程度?又比如Scala语言,仅简化版的《快学Scala》就有300多页,10多章,又该从哪开始?学习哪些?学到什么程度?Spark框架除了Spark Core以外,还有GraphX、Streaming、Spark SQL和SparkR等,它们是否都要一个一个的学?还是只选其中几个学?如果学,那又该选择哪几个最好呢?

所以,在Spark初学者的道路上,处处都存在着选择,如何在纷繁复杂的路径中,选择一条较优的路径,对初学者来说,通常是很困难的事情。

2.处处掣肘,起步艰难

Spark初学者在起步阶段会遇到各种各样的问题,例如,Linux的各种权限问题、命令使用问题、Spark环境构建的各种配置问题、Scala学习中的各种语法问题、Spark编程中的各种异常等,都是横亘在初学者面前的一座座大山。初学者往往费尽精力,解决了一个问题,结果又冒出了更多的问题,这种心力交瘁,看不到尽头的感觉在起步阶段十分常见。

Spark快速学习路线图

Spark学习没有捷径,任何宣称不需要下功夫就能轻松掌握Spark的说法,都是不靠谱、不负责任的。这里提到的快速学习路线,是让付出更有效,少踩坑,少做无用功,但不管怎样,都需要下功夫,不断实践。

1.Spark快速学习路线图

Spark学习要区分以下两种情况。

● 必须要学习的内容。对于这部分内容,从一开始就要把基础打好,必须牢固掌握。

● 可以后续再学的内容。对于这部分内容,只需要清楚其概念,心中有数就可以了,待到需要时,能迅速找到资料,确定学习方法,再快速自学。

基于上面的划分,列出Spark快速学习的路线图,如图2所示。

图2. Spark学习路线图

● 图1中列出的内容属于必学部分;

● 左侧列为要学习的知识模块,箭头方向表示学习顺序。

● 右侧为每个知识模块对应的知识点和要求,或者说是学习完该模块后,要达到的目标。

2.注意事项(重要)

图2中的内容相对Spark技术栈中所列的技术做了大幅简化,这并不是说没有列出的内容不需要学习或不重要,而是说,学习时可以先按照上图进行系统学习,可以由易到难,快速构建一个最简的Spark知识体系。

这个最简Spark知识体系是学习后续Spark其他知识点模块的基础。一旦构建了这个知识体系,其他的Spark知识点,就可以根据需要参考本书,做针对性的学习。如果不使用上面的路线图,打乱顺序,多点出击,或者全盘包揽的话,实践证明效果往往很不理想。

Spark学习中的关键点

下面列出Spark学习中需要注意的点或原则,它们可以使得后续的学习更加高效。

● 看到结果比明白原理更重要;

● 动手比看书更重要;

● 暂时理解不了的原理,或者找不到原因的问题,可以先放下,继续往后学;

● RDD、DataFrame和Dataset是Spark基础中最重要的3类数据结构;

● RDD永远不会过时,它只是逐渐退居幕后;

● DataFrame和Dataset正在成为Spark与外界打交道的统一接口;

● 结构化大数据处理在Spark中应用越来越多,Spark SQL越来越重要;

● 各种数据格式转换、数据源的连接非常重要;

● SparkR、流数据处理、GraphX和MLlib可以在后续需要的时候再去学习。

Spark技术栈

按照使用层次列出Spark的技术栈,分为4层,自底向上依次为:操作系统、外部组件、Spark框架、编程语言,如图3所示。

图3.Spark技术栈

1.底层基石——操作系统

Spark程序运行在Linux操作系统上,常用的Linux发行版是Ubuntu和CentOS。安装Linux操作系统时所涉及的技术包括:虚拟机安装与使用、Linux的安装、功能定制等;系统安装后,涉及的技术可以分为以下3类。

● Shell命令:Linux基本配置、文件操作、用户管理、权限设置、网络配置、服务的开启、关闭、自动运行、文本编辑器使用等命令;

● 脚本编程:Linux下主流的脚本语言主要是Bash等,技术涉及:变量的使用、基本数据类型、关键词、控制结构、函数定义与使用、调试技巧等;

● 操作系统接口:Spark应用和 Spark 框架的开发,更多的是和JDK以及开发语言的接口打交道,直接同操作系统接口的交互并不多。操作系统的接口对于理解JVM机制以及Spark应用和Spark框架的性能调优时会用到。

2.周围友援——外部组件

Spark 负责大数据分析处理,而数据从哪来、处理后的数据应该往哪去,则需要其他的外部组件来负责。图1-5列出了各类外部组件的主流选型,如非结构化数据存储HDFS、结构化数据存储Hbase,消息处理、数据接入工具Kafka、数据采集工具Flume、分布式程序一致性组件Zookeeper。实际开发中,Spark会同这些组件频繁交互,因此,需要掌握这些组件的基本运行原理、安装方法、基本配置、常用命令、API接口和日志查看方法等基础技术。

3.中坚核心——Spark框架

Spark框架就是 Spark 自身,它是 Spark 大数据开发的核心。Spark 框架由Spark Core、Spark SQL、GraphX、流数据处理、SparkR、MLlib/ML和 Spark 交互工具组成。后面会详述各组成部分的功能。

4.上层接口——编程语言

Spark 支持的编程语言包括Java、Scala、Python、R和SQL。上述编程语言中 Spark 对Scala的支持最好,因为 Spark 框架自身就是用Scala开发的。Spark还支持SQL,SQL和其他4种语言不一样,它可以独立出现在spark-sql(Spark 交互工具的一种)中,也可以嵌入在编程语言中。

-End-

本文作者:文艾(艾叔)系统分析师;原解放军理工大学-奇虎360联合实验室技术负责人;曾受邀为中兴通讯和奇虎360等公司做技术培训;具有多年大数据开发和运维经验,带领团队完成了与华为、中兴通讯和奇虎360等公司的多个大数据类项目;其主讲的Spark课程长期排名51CTO学院大数据类(Spark分类)年销量前列,著有《Spark大数据编程实用教程》(机械工业出版社)。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:07:10  更:2021-08-19 12:09:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:20:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码