导读:本文将大数据的工做角色分为三种类型,包括业务相关、数据科学相关和数据工程。大数据平台偏向于工程方面,大数据平台通常包括数据源、数据采集、数据存储、数据分析等方面。算法
讲师从数据来源、数据源结构、数据变化程度和数据规模等4个维度对数据源进行分类,数据源分类维度的不一样决定最后的技术选型。讲师还对数据源分类的定义及选型方式进行详细讲解,最终联系到大数据的应用场景,让数据应用方式更加直观。数据库
大数据在工做中的应用有三种:编程
数据工程师在业务和数据科学家之间搭建起实践的桥梁。本文要分享的大数据平台架构技术选型及场景运用偏向于工程方面。安全
如图所示,大数据平台第一个要素就是数据源,咱们要处理的数据源每每是在业务系统上,数据分析的时候可能不会直接对业务的数据源进行处理,而是先通过数据采集、数据存储,以后才是数据分析和数据处理。微信
从整个大的生态圈能够看出,要完成数据工程须要大量的资源;数据量很大须要集群;要控制和协调这些资源须要监控和协调分派;面对大规模的数据怎样部署更方便更容易;还牵扯到日志、安全、还可能要和云端结合起来,这些都是大数据圈的边缘,一样都很重要。网络
数据源的特色决定数据采集与数据存储的技术选型,我根据数据源的特色将其分为四大类:数据结构
内部数据架构
来自企业内部系统,能够采用主动写入技术(push),从而保证变动数据及时被采集。框架
外部数据机器学习
企业要作大数据的话确定不会只局限于企业内部的数据,好比银行作征信,就不能只看银行系统里的交易数据和用户信息,还要到互联网上去拉取外部数据。
外部数据分为两类:
这两类数据都不是咱们可控制的,须要咱们去得到,它的结构也可能跟咱们企业内部数据的结构不同,还须要进行转换,爬虫爬取的数据结构更乱,所以大数据平台里须要作ETL,由ETL进行数据提取、转换、加载,清洗、去重、去噪,这个过程比较麻烦。爬虫爬过来的数据每每是非结构性的、文档型的数据,还有视频、音频,这就更麻烦了。
结构化数据 & 非结构化数据
结构化和非结构化数据在存储时的选型彻底不一样,非结构化数据偏向于文件,或者选择NoSQL数据库;考虑到事务的一致性,咱们也可能选择传统的数据库。
不变可添加数据
若是数据源的数据是不变的,或者只容许添加(一般,数据分析的事实表,例如银行交易记录等都不容许修改或删除),则采集会变得很是容易,同步时只须要考虑最简单的增量同步策略,维持数据的一致性也相对变得容易。
对于大数据分析来讲,咱们天天在处理的数据大部分是不可变动的。正如Datomic数据库的设计哲学就是数据为事实(fact),它是不可变的,即数据是曾经发生的事实,事实是不能够被篡改的,哪怕改一个地址,从设计的角度来讲也不是改动一个地址,而是新增了一个地址。交易也是如此。
可修改可删除数据
银行的交易记录、保险单的交易记录,互联网的访客访问记录、下单记录等都是不可变的。可是数据源的数据有些可能会修改或删除,尤为是许多维表常常须要变更。要对这样的数据进行分析处理,最简单的办法就是采用直连形式,但直连可能会影响数据分析的效率与性能,且多数数据模型与结构可能不符合业务人员进行数据分析的业务诉求。若是采用数据采集的方式,就要考虑同步问题。
大数据量
针对大数据量,若是属于高延迟的业务,能够采用batch的处理方式,实时分析则须要使用流式处理,将二者结合就是Lambda架构,即有实时处理、又能知足必定的大数据量,这是如今比较流行的大数据处理方式。
大数据平台特征:相同的业务数据会以多种不一样的表现形式,存储在不一样类型的数据库中,造成一种poly-db的数据冗余生态。
先把数据源进行分类,而后根据其特色判断用什么方式采集,采集以后要进行存储。数据存储的技术选型依据有三点:
场景一:舆情分析
作舆情分析的时候客户要求全部数据存放两年,一天600多万,两年就是700多天×600多万,几十亿的数据。并且爬虫爬过来的数据是舆情,作了分词以后获得的多是大段的网友评论,客户要求对舆情进行查询,作全文本搜索,并要求响应时间控制在10s之内。
咱们后来选择用ES,在单机上作了一个简单的测试,大概三亿多条数据,用最坏的查询条件进行搜索,保证这个搜索是全表搜索(基于Lucence建立了索引,使得这种搜索更高效),整个查询时间能控制在几秒之内。
如图所示,爬虫将数据爬到Kafka里,在里面作流处理,去重去噪作语音分析,写到ElasticSearch里。咱们作大数据的一个特色是多数据库,会根据不一样的场景选择不一样的数据库,因此会产生大量的冗余。
场景二:商业智能产品
BI产品主要针对数据集进行的数据分析以聚合运算为主,好比求合、求平均数、求同比、求环比、求其余的平方差或之类的标准方差。咱们既要知足大数据量的水平可伸缩,又要知足高性能的聚合运算。选择Parquet列式存储,能够同时知足这两个需求。
场景三:Airbnb的大数据平台
Airbnb的大数据来自两块:一是自己的业务数据,二是大量的事件。数据源不一样,采集方式也不同。日志数据经过发送Kafka事件,而线上数据则经过Sqoop同步。数据存储选择HDFS集群,而后经过Presto对Hive表执行即席查询。S3是一个独立的存储系统。
数据处理分为三大类:
结合前文讲述的数据源特色、分类、采集方式、存储选型、数据分析、数据处理,我在这里给出一个整体的大数据平台的架构。值得注意的是,架构图中去掉了监控、资源协调、安全日志等。
左侧是数据源,有实时流的数据(多是结构化、非结构化,但其特色是实时的),有离线数据,离线数据通常采用的多为ETL的工具,常见的作法是在大数据平台里使用Sqoop或Flume去同步数据,或调一些NIO的框架去读取加载,而后写到HDFS里面,固然也有一些特别的技术存储的类型,好比HAWQ就是一个支持分布式、支持事务一致性的开源数据库。
从业务场景来看,若是咱们作统计分析,就可使用SQL或MapReduce或streaming或Spark。若是作查询检索,同步写到HDFS的同时还要考虑写到ES里。若是作数据分析,能够建一个Cube,而后再进入OLAP的场景。
这个图基本上把全部的内容都涵盖了,从场景的角度来分析倒推,用什么样的数据源、采用什么样的采集方式、存储成什么样子,能知足离线、内存、实时、流的各类模型,都能从图中获得解答.
文章转载于:http://geek.csdn.net/news/detail/203332.以为这篇文章很是好,好你们一块儿分享。同时也为了之后的便于学习回顾。