spark是什么
Spark 是专为大规模数据处理而设计的快速通用的计算引擎
---百度百科
由此可知,spark是一项处理大规模数据是技术,所以在了解Spark之前,熟悉以下开源的大数据技术对Spark的使用会很有帮助。
- 1、Hadoop
Hadoop是最早流行的开源大数据技术之一,是一个可扩展、可容错的系统,用来处理跨越集群的大数据集。
Hadoop基于几个重要概念:
第一,服务器成本更低。利用Hadoop横向扩展架构,增加廉价的服务器数量形成集群来同时存储和处理大量数据比购买高端昂贵的强劲服务器更便宜。
第二,以软件的形式实现容错比通过硬件实现更便宜。Hadoop不依赖于昂贵的容错服务器,能够透明的处理服务器错误。
第三,通过网络把代码从一台计算机转到另一台比通过相同网络移动大数据集更有效、更迅速。相同条件下,将处理数据的代码转移到具有100个节点的集群中每台计算机,必然会比移动100TB数据更快、更高效。
第四,把核心数据处理逻辑和分布式计算逻辑分开,使得编写一个分布式应用更加简单。
Hadoop的三个概念组件及具体实现:
关键概念组件 | 具体实现 |
---|---|
集群管理器 | YARN |
分布式计算引擎 | MapReduce |
分布式文件系统 | HDFS |
1.1、HDFS
分布式文件系统,在服务器集群中存储大文件与大数据。
它是一个块结构的文件系统,把文件分成固定大小的分块。处理一个大型文件时,通过读写分布在不同机器上的各个块,来增加处理速度。
以上为HDFS架构图
HDFS包含两种节点:NameNode和DataNode
NameNode:管理文件系统的命名空间,存储一个文件的所有元数据(文件名、权限、文件块位置);所有的元数据都存储于内存中
DataNode:以文件块形式存储实际的文件内容
DataNode周期性地向NameNode发送心跳信息和块报告信息。
通过心跳信息告诉NameNode自己正常工作,块报告信息则包含一个DataNode上所有数据块列表。
工作流程:
当一个客户端应用想要读取一个文件时,首先访问NameNode,NameNode则返回组成该文件所有文件块的位置;块的位置标识了所在的DataNode,客户端则可直接向相应DataNode发起读请求以获得每个文件块。
1.2、MapReduce
提供集群中并行处理大数据集的计算框架,两个基本组成块是:map和reduce。MapReduce中所有的数据处理作业都是用着两个函数(操作符)来表达的。
工作流程:
MapReduce对输入数据集中每一个键值对调用map函数,接着对map函数的输出进行排序,并根据值进行分组,作为输入传给reduce函数。reduce函数聚合这些值,输出最终的聚合值。
1.3、Hive
Hive是一个数据仓库软件,它提供一种类SQL的查询语言,叫作Hive查询语言(HiveQL),用于处理和分析存储在任何兼容Hadoop的存储系统中的数据。
- 2、数据序列化
把内存中的数据转换为可在硬盘上存储或者通过网络发送的过程叫做序列化,反之则为反序列化。
数据可以用多种不同的格式进行序列化,由于二进制格式的紧凑性,首选二进制格式来存储大数据集。
常用的序列化大数据的二进制格式:
Avro、Thrift、Protocol Buffers、SequenceFile
- 3、列存储
面向行存储缺点:
1.对于分析类应用来说不够高效,需要读取分析几行的所有列,是非常耗时的
2.无法高效压缩。因为压缩算法不适用于压缩多样化数据,而一条记录可能由多种不同类型数据构成,因此不能很好地进行压缩;而面向列存储的话,一列都是同种类型的数据,能更好地压缩。
Hadoop中常用的列存储文件格式:
RDFile、ORC、Parquet
- 4、消息系统
用来解决应用产生数据的速率和另一个应用使用数据的速率不对称的问题。利用消息系统或者消息代理作为中介缓冲,平衡数据产出(生产者)和接收(消费者)间的速率差。
几个广泛应用的消息系统:
Kafka、ZeroMQ
- 5、NoSQL
NoSQL数据库:非关系型的现代数据库
相对于RDBMS来说,NoSQL数据库有不同的设计目标。
广泛使用的NoSQL数据库:
Cassandra、HBase
以上,为Mohammed Guller的《Big Data Analytics with Saprk》一书的读书笔记