大数据的技术体系通常被分为三个层次:
(一)大数据的采集与预处理
(二)大数据的存储与管理
(三)大数据的计算与处理
大数据分布式系统,目标是能处理更大的数据。(5人6足游戏,相当于大数据分布式系统。)
开源的大数据平台和系统:
Hadoop(Hadoop上的Hive和Hbase的作用是什么)
当人们思考大数据的时候,他们会立即想到Hadoop。Hadoop是一个开源软件架构(logo是一头可爱的大象),它由 Hadoop分布式文件系统(HDFS)构成,它允许使用分布式硬件对大数据进行存储、抽象和分析。如果你真的想让某人对这个东西印象深刻,你可以跟他说 YARN(Yet Another Resource Scheduler),顾名思义,就是另一个资源调度器。
Hadoop是由由Apache基金会所开发的分布式系统基础架构,是一个能够对大量数据进行分布式数据的软件框架。Hadoop包含多个技术核心:HDFS、MapReduce、Hive、Hbase。
1 HDFS:Hadoop Distributed File System,即分布式文件系统,其关键技术:NameNode、DataNode。
2 MapReduce
MapReduce是一个编程模型,Map和Reduce是两个不同的过程。在 MapReduce中,程序模型首先将大数据集分割成一些小块,然后这些小块会被分发给不同位置上的不同计算机(也就是说之前描述过的集群),这在Map过程是必须的。然后模型会收集每个计算结果,并且将它们「reduce」成一个部分。Map是数据分解的过程,Reduce是数据聚合过程,可以把Map理解做汉堡时的牛肉、洋葱、西红柿切片,把Reduce理解组装成一个个汉堡。MapReduce的数据处理模型和Hadoop分布式文件系统是分不开的。
3 Hive:建立在Hadoop上的数据仓库基础架构,它提供一系列的工具,可以用来进行存储、查询、分析存储在Hadoop上的大规模数据的机制。
4 Hbase:是一个分布式、面向列的开源数据库。
大数据系统分类:
ODPS(开放数据处理服务)是基于飞天开放平台实现的一套用于海量数据存储和计算的服务,打造数据分享的第一平台。
ODPS可支持丰富的计算工具和编程模型,如SQL,准实时SQL,流计算,MapReduce,图计算,算法平台。
01 云计算(Cloud computing)
单台PC通过分布式调度联结起来,就是云计算。云计算的目的是降低IT成本,最大限度利用单台CPU的处理能力。发展方向是在线服务与离线任务混合运算。
02 集群计算(Cluster computing)
这是一个来描述使用多个服务器丰富资源的一个集群(cluster)的计算的形象化术语。更技术层面的理解是,在集群处理的语境下,我们可能会讨论节点(node)、集群管理层(cluster management layer)、负载平衡(load balancing)和并行处理(parallel processing)等等。
03 分布式文件系统(Distributed File System)
大数据数量太大,不能存储在一个单独的系统中,分布式文件系统是一个能够把大量数据存储在多个存储设备上的文件系统,它能够减少存储大量数据的成本和复杂度。
几个核心功能:读写流程、QoS:服务质量保证、Checksum:数据校验、数据复制、数据平衡、垃圾回收、数据压缩方法。
常见分布式文件系统:HDFS:集中式meta管理架构,对外提供文件接口。
Pangu:集中式meta管理架构,对外提供三种文件接口:1.通用文件类型,类似于HDFS;2.日志文件,长度不固定,读写时采用日志文件操作接口;3.随机读写文件,提供同步和异步的posix 文件接口。
Ceph:
04 分布式调度系统:核心是如何把很多台机器高效组织起来,如何进行任务调度和管理,从而使得像使用台式机一样高效和方便。
分布式调度要解决的核心问题:任务调度、资源调度、容错机制、规模挑战、安全与性能隔离
任务调度:如何将几PB的数据切分,并在几千上万台机器上并行处理,最终汇聚成用户需要的结果?当并行任务中个别失败了如何处理?不同任务之间的数据如何传递?
资源调度:分布式计算天生就是面向多用户、多任务的,如何让多个用户能够共享集群资源?如何在多个任务之间调配资源以使得每个任务公平地得到资源?
常见的分布式调度系统:伏羲、Hadoop MapReduce(Hadoop1.0)、YARN(Hadoop2.0)、Mesos。
Hadoop MapReduce:
YARN(Hadoop2.0):资源和任务调度分离
伏羲:资源调度和任务调度分离,两层架构。支持多种计算框架,包括离线批处理、在线服务、实时计算、Streaming。
分布式调度的发展方向:
在线服务与离线任务混跑
实时计算:Spark,Storm,Flink等新的框架。
分布式调度系统与大数据计算框架的关系?
Spark(Apache Spark)
Apache Spark 是一个快速的内存数据处理引擎,它能够有效地执行那些需要迭代访问数据库的流处理、机器学习以及SQL负载。Spark通常会比我们前面讨论过的MapReduce 快好多。Spark:类似Hadoop MapReduce的通用并行框架,不同之处在于Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,可优化迭代工作负载。发展势头很猛,有人甚至因此认为Hadoop已死。Spark支持环式数据流和内存计算,针对计算任务中的多轮迭代进行优化。
Storm:分布式实时计算框架,适合流式数据处理。
05 大数据计算框架
离线计算框架: 1、MapReduce,基于Hadoop的第一代分布式计算框架。 2、Spark,基于MapReduce模型,把中间计算转移到内存当中,大大提升计算处理效率。
实时流计算框架: 1、Storm,侧重于低延迟的流处理框架,以近实时方式处理数据,延时可以达到亚秒级。 2、Spark Streaming,Spark核心API的扩展,以微批次(Micro-Batch)的概念来进行流处理,与Storm相比,延时会相对更高一些。 3、Flink,设计之初就是完全考虑做流处理的,批处理被看作是有边界的流来处理,实现了低延迟、高吞吐和真正逐条处理。 三个国内主流都在用的实时流计算框架,Storm延迟低但是吞吐量小,Spark Streaming吞吐量大但是延迟高,而后来的Flink,兼具了Storm和Spark的优势,长大很快。国内的话,阿里对Flink的推崇度很高。 另外,在离线计算和实时流计算之外,也有认为Spark和Flink是混合处理框架,也就是既支持离线,也支持实时。
06 内存计算(In-memory computing)
通常认为,任何不涉及到 I/O访问的计算都会更快一些。内存计算就是这样的技术,它把所有的工作数据集都移动到集群的集体内存中,避免了在计算过程中向磁盘写入中间结果。Apache Spark 就是一个内存计算的系统,它相对 Mapreduce 这类 I/O 绑定的系统具有很大的优势。
07 批处理(Batch processing)
尽管批量数据处理从大型机(mainframe)时代就已经存在了,但是在处理大量数据的大数据时代面前,批处理获得了更重要的意义。批量数据处理是一种处理大量数据(如在一段时间内收集到的一堆交易数据)的有效方法。分布式计算(Hadoop),后面会讨论,就是一种专门处理批量数据的方法。
08 流处理(Stream processing)
流处理被设计来用于持续地进行流数据的处理。与流分析技术(指的是能够持续地计算数值和统计分析的能力)结合起来,流处理方法特别能够针对大规模数据的实时处理。
21 非关系型数据库(NoSQL)
这个词听起来几乎就是「SQL,结构化查询语言」的反义词,SQL 是传统的关系型数据管理系统(RDBMS)必需的,但是 NOSQL 实际上指的是「不止SQL」。NoSQL实际上指的是那些被设计来处理没有结构(或者没有「schema」,纲要)的大量数据的数据库管理系统。NoSQL 适合大数据系统,因为大规模的非结构化数据库需要 NoSQL的这种灵活性和分布式优先的特点。
8、NoSQL:Not only SQL,泛指非关型数据库,区分传统的关系型数据库。表现最突出的产品有:MongoDB、Hbase、CouchDB、Cassandra、SequoiaDB等。
6、Zookeeper:为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
7、Pig:大数据分析平台、为用户提供多种接口。Pig是一种编程语言,它简化了Hadoop常见的工作服务。
10、Docker:一个开源的应用程序容器,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。目前只能虚拟基于Linux的服务,Windows服务还不能被虚拟,但据说未来会。相对于虚拟机可以大大提高资源的利用率,而不是把有限的资源浪费在虚拟化硬件上,所以一经推出就备受吹捧。
编程模型:
命令式编程:C语言
声明式模型:SQL
编程模型的未来展望:
实时计算:
1.ad-hoc computing:计算不可枚举,计算在query时发生。(数据的实时计算)http://2.stream
2.stream computing:计算可枚举,计算在数据发生变化时发生,计算在数据进入系统时发生。(实时数据的计算)
3.continuous computing:大数据集的在线复杂实时计算。(实时数据的实时计算)
stream computing的应用场景:
日志采集与在线分析。 eg:基于访问日志、交易数据的BI算法分析。
大规模的预处理。eg:
风控和告警。
网站与移动应用分析统计。
网络安全监测。
在线服务计量与计费管理系统。
下一篇:大数据技术的主要特点有哪些?