| |
|
开发:
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大数据编程实用教程》(机械工业出版社)。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |