1.3 Spark技术栈
本节按照使用层次列出了Spark的技术栈,分为4层,自底向上依次为:操作系统、外部组件、Spark框架、编程语言,如图1-6所示。
图1-6 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交互工具的一种)中,也可以嵌入在编程语言中。