推广 热搜: 行业  机械  设备    系统  教师  经纪  参数    蒸汽 

开源组件系列(1):大数据技术框架

   日期:2024-11-11     移动:http://ktsh.xhstdz.com/mobile/quote/76476.html

目录

(一)通用框架概述

开源组件系列(1):大数据技术框架

(二)数据收集层

(三)数据存储层

(四)资源管理与服务协调层

(五)计算引擎层

(六)数据分析层

(七)数据可视化层

 

(一)通用框架概述

 

自底向上,与OSI类似,通用框架下的大数据体系有七层:数据源、数据收集层、数据存储层、资源管理与服务协调层、计算引擎层、数据分析层及数据可视化层。图示如下

 

(二)数据收集层

 

数据收集层直接与数据源对接,负责采集产品使用过程中生成的日志,具有分布式、通用化等属性。由于实际场景中,大部分的数据源是零散的,因此采集到一起的难度较大,因而在设计上应该具备如下几个特点

扩展性:能够配置多种不同的数据源,并且在遇到洪峰时不会成为系统瓶颈

可靠性:数据在传输的过程中不能丢失(金融类数据尤其如此

安全性:对于敏感数据,传输的过程要进行加密(密码、金钱等

低延迟:由于数据源采集的日志通常规模庞大,因此应尽快的收集到存储系统中,不能产生积压。

 

在以Hadoop/Spark为代表的开源框架下,数据收集层通常有如下几种方案选择

Sqoop:对于关系型数据库的全量导入比较通用

Canal:对于关系型数据库的增量导入比较通用

Flume:对于非关系型日志采集比较通用,例如文本日志等

Kafka:分布式消息队列,类似于数据通道的概念,具有分布式高容错的特点。

 

(三)数据存储层

 

由于传统的关系型数据库在分布式、扩展性及高可用方面存在一定的瓶颈,因而很难适应大数据场景,不建议作为主要的存储和计算系统。数据存储层主要负责数据的落地和存储,包括了关系型数据和非关系型数据,并拥有中央化的调度体系。数据存储层主要有如下特点

扩展性:作为数据落地的主要承载,数据的不断增长是长期的任务,因而集群的承载能力在一定时间内,总会达到瓶颈。因此,数据存储层需要考虑机器的扩展能力。

容错性:出于成本的考虑,数据存储层通常机器较多,因而需要建设在比较廉价的设备之上,这就要求系统自身有比较好的容错特性,在一台或多台机器出现故障时不会导致数据丢失。

存储模型:由于数据的多样性,数据存储层需要支持结构化、非结构化两种类型数据,因而需要支持文本、列存等多种数据模型。

 

由于分布式计算的概念由Google提出,在Google通常采用GFS、BigTable、MegaStore、Spanner等技术方案。在以Hadoop/Spark为代表的开源框架下,数据存储层通常有如下几种方案选择

HDFS:分布式文件系统,GFS的开源实现,具有非常好的扩展性与容错性,并非常合适搭建在廉价设备上; Hbase:以HDFS为基础构建的分布式数据库,BigTable的开源实现,能够存储结构化与半结构化数据,支持行与列的无限扩展

Kudu:Cloudera开源的运行在HDFS上的列式存储系统,具备扩展性与高可用性。

 

(四)资源管理与服务协调层

 

随着互联网技术规模的不断增长,不同技术与框架混用的情况越来越常见,对于运维、开发、资源利用等方面产生了巨大的挑战。为了将所有的技术框架部署在统一的平台上,共享机器资源,因而引入了资源管理与服务协调层。引入之后有如下几方面的优势

资源利用高:能够有效的考虑程序数量与机器资源之间的平衡性,充分利用集群资源

运维成本低:每种框架的运行情况都汇总到统一的运维平台上,对于人员的要求会更低

数据能共享:同一份数据能够提供给不同计算框架进行计算,共享计算结果,降低存储与运算成本。

 

Google采用了Borg、Omega及Chubby三种方案来进行资源管理。在以Hadoop/Spark为代表的开源框架下,资源管理与服务协调层通常有如下几种方案选择

Yarn:Hadoop框架中负责统一资源管理与调度的系统,能够集中管理机器资源(CPU、内存等,并且能够按照队列的方式调度任务

Zookeeper:分布式协调服务,基于Paxos算法实现,提供分布式队列、分布式锁等复杂场景的解决方案。

 

(五)计算引擎层

计算引擎主要分为批处理和流处理两种场景:当数据量庞大并且实时性要求不高时,或者计算逻辑复杂时,采用批处理的方式计算数据,追求高吞吐量;当数据量适中且实时性要求高,且计算逻辑相对简单时,采用流处理方式计算数据,追求低延迟性。目前不存在实时处理复杂或庞大数据的计算框架。除了以上两种场景,近年来交互式处理方式越来越受欢迎,通过标准化的OLAP方式来组织和计算数据,在使用的便捷性上有巨大的优势。三种引擎的适用场景如下

批处理:索引建立、数据挖掘、大规模复杂数据分析、机器学习

流处理:广告推荐、实时报表、反作弊

交互式:数据查询、报表计算。

 

Google提供了MapReduce、Dremel两种框架的实现原理,被开源框架采用并使用场景广泛。Pregel、Precolator、MillWheel也在开源场景下有所采用。目前Hadoop/Spark为代表的开源框架下常用的方案如下

MapReduce:经典的批处理引擎,具有非常好的扩展和容错性

Impala/Presto/Drill:分别由Cloudera、Facebook、Apache开源,使用标准SQL处理存储在HDFS上的数据,基于Google Dreml的开源实现

Spark:通过DAG引擎,提供了基于RDD的数据抽象表示,主要利用内存进行快速的数据挖掘

Storm/Spark Streaming/Flink:流式处理系统,都具备良好的容错和扩展性,实现的细节有所不同。

 

(六)数据分析层

 

直接产出结果的计算框架,但很多事情出于简化的考虑,可以通过计算引擎层的交互式框架来代替。通常情况下,出于平台端的技术考虑,该层采用Mysql、Oracle、Postgresql等关系型数据库的方案较多。按照通常的分类方式,有如下几种

Impala/Presto/Drill:交互式计算引擎代替实现

Mysql/Oracle/Postgresql:关系型数据库实现

Hive/Pig:海量数据下的计算实现

Mahout/MLlib:常用的机器学习和数据挖掘算法集合,最初基于MapReduce实现,现在大部分由Spark实现

Beam/Cascading:统一了批处理和流式计算两种框架,提供了更高级的API来实现计算逻辑。

 

(七)数据可视化层

 

在大数据场景下,通常由前端插件来实现,如ECharts等,实现选择的方案较多。常见的展现方式有:折线图、柱状图、饼图、散点图、K线图、雷达图、热力图、路径图等。

本文地址:http://ktsh.xhstdz.com/quote/76476.html    物流园资讯网 http://ktsh.xhstdz.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号