大数据技术概览

基本特征

大数据基本特征包含4个,分别为:数据规模巨大(Volume)、数据类型多样(Variety)、生成和处理速度极快(Velocity)、价格巨大但密度较低(Value),一般也称之为4V。

应用场景

数据仓库。传统的架构中也会有数据仓库,但是传统架构中,他的数据流转大概是从业务系统产生数据存储到数据库中、然后跑批处理做一些加工处理、生成数据到仓库中,然后再做一些分析,结果最终展示。

而大数据场景下,首先数据源这部分来源更加丰富,例如:网路爬虫、传感器等等种类更多,并且数据量也更大,数据产生接入过来,存储在分布式的集群当中,然后再通过MapReduce(或者替换其他的计算框架)计算,存储以及计算都是一些分布式架构,分布式的优势首先当现有集群规模满足不了的情况下,可以动态添加增点从而提高数据存储容量、提高计算的性能,对比于传统场景往往都是单机方式,存储容量以及性能上都不能提供非常好的支持、并且也没有灵活低成本的动态机制支持。

实时流处理。传统场景也有,它是通过实时库来解决,价格非常昂贵,而且比较单一。大数据场景下,我们往往通过kafka来收集数据,首先kafka构建起来成本会低很多,并且对于各种不同来源数据接入都没有太多问题,包括数据的高可用性、读写性能支持都非常好,数据收集之后,通过像开源Storm、SparkStreaming以及我们的SlipStream进行实施分析,最终结果以图形化方式展示。

大数据编年史

20032004年Google先后开源了两篇论文GFS以及MapReduce这两篇论文中GFS即Google File System他提供了相对于传统存储方案,更加高效、海量的一种数据存储方案分布式文件系统。MapReduce是对于海量数据的高效的分布式计算框架。这两篇论文的提出,相当于奠定了大数据技术发展的基础。之后Doug Cutting基于这这两篇文论通过Java做了开源实现,GFS对应于开源的HDFS,MapReduce名称不变,HDFS、MapReduce构成了Hadoop。并且,在2008年年初Hadoop正式成为了Apache基金会的顶级项目,自此开始Hadoop在各大公司及领域迅猛推广。

一些商业公司也推出各自商业的发型版,如2008年Cloudera公司推出了CDH发行版,在其平台上将各个主流技术做了整合等。随着Hadoop的不断发展,像在易用性方面SQL框架的支持Hive、以及高可用性NameNode HA、扩展性Yarn等不同的方面,Hadoop都有很大的提升。但是随着时间推移Hadoop技术也暴露出一些弊端或者不足,如MapReduce在性能、以及像迭代计算等方面不足所以此时Spark应运而生,他推出了内存计算的思路,逐渐代替MapReduce成为运行于Hadoop之上的核心项目,在2014成为Apache顶级项目。并且星环是在2013年也宣布推出了大数据平台,区别于CDH,不仅仅是简单的将各种开源产品做了整合,而是有很多自主研发的部分。例如,底层引擎方面团队很有前瞻性的选择了Spark,而非MapReduce;开发接口上,我们提供一套非常丰富的SQL接口,而非Java、Python、Scala等方式,在项目迁移、开发成本、项目管控等上边优势显而易见;除基本数据分析外,目前对于像机器学习、人工智能等内容,都在不断的研发新的产品出来,并且可以以插件的方式方便的整合在平台上稳定运行。讲到这边,大概整理一下,到目前为止整个大数据技术的一个发展,从03年早期Google开源论文的推出,拉开了大数据的帷幕,Doug Cutting基于论文推出了Hadoop后,并在08年正式成为Apache顶级项目,一直到2014年Spark代替MapReduce成为大数据中更加主流的分析引擎。期间,各个技术在高可用性、性能上等方面不断优化,各商业公司像Cloudera、星环团队,都在各开源技术之上推出了更友好的平台方案支持。

大数据技术体系

HDFS

首先是其高可靠性以及容错性,它自身有一些副本策略以及故障检测的机制提供(后边我们详细介绍),保证他可以构建在低成本的服务器上,以及在Hadoop 2.X之后提出的高可用机制,都是HDFS高可靠性以及容错性的体现。在十分优异的可靠性以及容错性的保证下,HDFS集群的构建成本也可以非常低,在比较廉价的商用机器上运行完全没有问题,结点个数也非常之多,10K节点规模没有问题,集群规模如此之大,数据量支持也没有问题PB级别完全可以应对。并且对于这些海量数据的读取支持高并发的访问,批量读取数据,关注数据吞吐量,对于批处理的支持非常好,例如MapReduce其实就是对于HDFS当中海量数据分析的一个分布式的批处理计算框架。

MapReduce

第一、何为分布式,分而治之?

在HDFS当中可以理解为,例如10TB数据存储在一个N台服务器组件的集群中,并不是像以前直接将10TB数据存储在一台服务器上,而是将这10TB数据split切分之后,将不同的文件片段及备份均匀的放在N台服务器上。存储的分布式,也带了计算的分布式实现,例如在计算这10TB数据时,可以在N台服务器同时、并发的进行计算。

第二、移动计算,而非移动数据。

移动计算,就是我们讲到的例子,第一台服务器上的数据就应该由第一台服务器来完成计算,如果他去计算其他服务器数据、或者他上边的数据交给其他服务器去做计算,那么这样子相当于整个计算过程中我要都添加一个数据由第一台移动到另外一台的环境,涉及到数据的移动,那么网络以及磁盘IO等等开销会额外增加很多。所以MapReduce移动计算、而非移动数据,即数据存在哪个结点,则有哪个结点完成上面数据的计算。

YARN

Yarn其实是在Hadoop2.x的架构中才单独出来的一个组件。早期对于1.x的Hadoop版本来说,Yarn的功能其实是在MapReduce内置实现的,2.x做了重新设计单独抽取出来。这样独立出来最大的好处是,Hadoop平台的兼容性变得更加友好,在1.x当中除MapReduce以外的计算框架要对于HDFS数据进行分析时,都需要自身单独实现资源底层的一系列管理,但是推出Yarn之后第三方如Spark我就不需要再去完全自身实现,整合显得简单而优雅、不需要1.x那么繁杂。

Spark

1、内存计算,MapReduce在计算过程当中涉及到非常多的内存磁盘交互、从而非常浪费资源,但是Spark在计算过程当中数据全部在内存当中完成、不同结点直接需要数据传输全部通过网络来走,这样很大程度上提高了计算的效率。当然Spark实现中将内存抽象为RDD这种介质,概念我们讲到Spark具体来讨论。

2、基于DAG优化任务流程的。

3、易于部署,丰富API支持。

4、通用易用性。Spark针对不同的场景都有一个针对该场景环境的组件,致使不管是批处理、流处理、交互式计算还是机器学习、图计算,都可以使用Spark来完成。并且Spark提供的各种RDD算子以及Scala提供的链式编程等,使得Spark也具有良好的易用性。

5、Spark也支持多种运行模式,不管是Local、Standalone还是YARN/Mesos都可以。

Hive

Hive是构建在Hadoop/HBase之上的数据仓库,用于分析结构化海量数据。Hive是一个数据仓库而非数据库,也就是说虽然他提供了SQL,但是我们使用Hive更多的是借助于这种SQL方式对于平台之上的数据做更加简单有效的分析。

数据仓库VS数据库,最大区别可以理解为数据库一般存储数据主要用来提供业务系统使用、大部分数据都为在线数据,而数据仓库的设计主要是为了分析、大部分数据皆为历史数据。

Hive做分析,可以对于HDFS、HBase上的数据进行分析,但Hive本质并不执行分析、他本质仅仅只是将SQL语句转换为MapReduce程序,真正执行分析还是在Hadoop基础之上来进行。

  • 因此Hive适用于以下场景:

1.日志分析:日志分析可以优化操作系统,获知用户行为,也可以获知数据的统计信息;

2.数据挖掘:通过结构化数据的挖掘,能够获得原先使用者没有意识的信息;

3.文档索引:可以对一系列文档进行分析,并形成文档的索引结构,不一定是完整的排序表,也可能是关联信息的索引;

4.商业智能信息处理:可以对商业信息进行查询分析,从中可以获得一些只能决策的信息;

5.及时查询以及数据验证:数据分析人员可能临时需要验证数据的特性,需要查询引擎迅速进行数据分析。

HBase

HBase和Hadoop一样也是基于Google开源论文的实现(bigtable)。HBase是一个分布式的、面向列的开源数据库。分布式数据库,也是一个非关系型数据库,采用HDFS作为文件存储系统。

到目前为止我们已经对于分布式不陌生了,HBase分布式数据库也就意味着他也一种集群方式、并且支持动态扩容等等特点,非常善于海量数据存储。面向列,HBase本质是一个列式数据库,区别于我们平时开发所使用的MySQL(横式)、DB2、Oracle等,这些都是数据库。

HBase使用过程中,建表时并不需要指定具体表中字段或者列名,而是当用户写入数据时,根据实际情况动态来添加,这样对比行式数据库可以很大程度上节省存储空间。简单来说,这就是在开发过程中,行式数据库和列式数据库最大的一个区别。

ElasticSearch

posted @ 2020-02-24 21:25  20145232  阅读(328)  评论(0编辑  收藏  举报