我们先来看看这张图,这是某公司使用的大数据平台架构图,大部分公司应该都差不多:

从这张大数据的整体架构图上看来,大数据的核心层应该是:数据采集层、数据存储与分析层、数据共享层、数据应用层,可能叫法有所不同,本质上的角色都大同小异。

所以我下面就按这张架构图上的线索,慢慢来剖析一下,大数据的核心技术都包括什么。

一、数据采集

数据采集的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些简单的清洗。

数据源的种类比较多:

  • 网站日志:

作为互联网行业,网站日志占的份额最大,网站日志存储在多台网站日志服务器上,一般是在每台网站日志服务器上部署flume agent,实时的收集网站日志并存储到HDFS上;

  • 业务数据库:

业务数据库的种类也是多种多样,有Mysql、Oracle、SqlServer等,这时候,我们迫切的需要一种能从各种数据库中将数据同步到HDFS上的工具,Sqoop是一种,但是Sqoop太过繁重,而且不管数据量大小,都需要启动MapReduce来执行,而且需要Hadoop集群的每台机器都能访问业务数据库;应对此场景,淘宝开源的DataX,是一个很好的解决方案,有资源的话,可以基于DataX之上做二次开发,就能非常好的解决。

当然,Flume通过配置与开发,也可以实时的从数据库中同步数据到HDFS。

  • 来自于Ftp/Http的数据源:

有可能一些合作伙伴提供的数据,需要通过Ftp/Http等定时获取,DataX也可以满足该需求;

  • 其他数据源:

比如一些手工录入的数据,只需要提供一个接口或小程序,即可完成;

二、数据存储与分析

毋庸置疑,HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。

离线数据分析与计算,也就是对实时性要求不高的部分,在笔者看来,Hive还是首当其冲的选择,丰富的数据类型、内置函数;压缩比非常高的ORC文件存储格式;非常方便的SQL支持,使得Hive在基于结构化数据上的统计分析远远比MapReduce要高效的多,一句SQL可以完成的需求,开发MR可能需要上百行代码;

当然,使用Hadoop框架自然而然也提供了MapReduce接口,如果真的很乐意开发Java,或者对SQL不熟,那么也可以使用MapReduce来做分析与计算;

Spark是这两年非常火的,经过实践,它的性能的确比MapReduce要好很多,而且和Hive、Yarn结合的越来越好,因此,必须支持使用Spark和SparkSQL来做分析和计算。因为已经有Hadoop Yarn,使用Spark其实是非常容易的,不用单独部署Spark集群。

三、数据共享

这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库;

前面使用Hive、MR、Spark、SparkSQL分析和计算的结果,还是在HDFS上,但大多业务和应用不可能直接从HDFS上获取数据,那么就需要一个数据共享的地方,使得各业务和产品能方便的获取数据;和数据采集层到HDFS刚好相反,这里需要一个从HDFS将数据同步至其他目标数据源的工具,同样,DataX也可以满足。

另外,一些实时计算的结果数据可能由实时计算模块直接写入数据共享。

四、数据应用

1、业务产品(CRM、ERP等)

业务产品所使用的数据,已经存在于数据共享层,直接从数据共享层访问即可;

2、报表(FineReport、业务报表)

同业务产品,报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层;

3、即席查询

即席查询的用户有很多,有可能是数据开发人员、网站和产品运营人员、数据分析人员、甚至是部门老大,他们都有即席查询数据的需求;

这种即席查询通常是现有的报表和数据共享层的数据并不能满足他们的需求,需要从数据存储层直接查询。

即席查询一般是通过SQL完成,最大的难度在于响应速度上,使用Hive有点慢,可以用SparkSQL,它的响应速度较Hive快很多,而且能很好的与Hive兼容。

当然,你也可以使用Impala,如果不在乎平台中再多一个框架的话。

4、OLAP

目前,很多的OLAP工具不能很好的支持从HDFS上直接获取数据,都是通过将需要的数据同步到关系型数据库中做OLAP,但如果数据量巨大的话,关系型数据库显然不行;

这时候,需要做相应的开发,从HDFS或者HBase中获取数据,完成OLAP的功能;比如:根据用户在界面上选择的不定的维度和指标,通过开发接口,从HBase中获取数据来展示。

5、其它数据接口

这种接口有通用的,有定制的。比如:一个从Redis中获取用户属性的接口是通用的,所有的业务都可以调用这个接口来获取用户属性。

五、实时计算

现在业务对数据仓库实时性的需求越来越多,比如:

  • 实时的了解网站的整体流量;
  • 实时的获取一个广告的曝光和点击;
  • 在海量数据下,依靠传统数据库和传统实现方法基本完成不了,需要的是一种分布式的、高吞吐量的、延时低的、高可靠的实时计算框架;
  • Storm在这块是比较成熟了,但我选择Spark Streaming,原因很简单,不想多引入一个框架到平台中
  • 另外,Spark Streaming比Storm延时性高那么一点点,那对于我们的需要可以忽略

我们目前使用Spark Streaming实现了实时的网站流量统计、实时的广告效果统计两块功能。

做法也很简单,由Flume在前端日志服务器上收集网站日志和广告日志,实时的发送给Spark Streaming,由Spark Streaming完成统计,将数据存储至Redis,业务通过访问Redis实时获取。

六、任务调度与监控

在数据仓库/数据平台中,有各种各样非常多的程序和任务,比如:数据采集任务、数据同步任务、数据分析任务等;

这些任务除了定时调度,还存在非常复杂的任务依赖关系,比如:数据分析任务必须等相应的数据采集任务完成后才能开始;数据同步任务需要等数据分析任务完成后才能开始;

这就需要一个非常完善的任务调度与监控系统,它作为数据仓库/数据平台的中枢,负责调度和监控所有任务的分配与运行。

一张图剖析企业大数据平台的核心架构相关推荐

  1. 企业大数据平台技术体系架构

    2015年国务院向社会公布的<促进大数据发展行动纲要>明确提出了大数据的基本概念:大数据是以容量大.类型多.存取速度快.应用价值高位为主要特征的数据集合,正快速发展为对数量巨大.来源分散. ...

  2. hadloop大数据平台论文_企业大数据平台建设过程中的问题和建议

    2 0 1 7 年 第 1 2 期 信 息 通 信 2017 (总第 180 期) INFORMATION & COMMUNICATIONS ( Sum . N o 180) 企业大数据平台建 ...

  3. 典型工业企业大数据平台解决方案(含数据治理)

    一.总体思路 当前,工业企业产生的数据日与俱增,如何利用大数据为企业产生驱动力.竞争力成为工业企业面临的重要问题.工业企业大数据平台建设的总体思路是将现有PLC.MES.ERP.CRM.SRM.SCM ...

  4. 企业大数据平台如何搭建?

    在大数据这个词出现之前,我们对日常数据的这种处理和分析,常常使用的一些类似SQL server.MySQL.Oracle等等这些关系数据库,传统的这些数据库处理T级别数据量已经是这些数据库的极限,面对 ...

  5. 如何从0到1,构建企业大数据平台

    (一)企业大数据战略概述 我们只要分享一些基础的概念,让大家明白什么是大数据,大数据有哪4个特征,作为企业战略的实施者或执行者,我们要具备6大战略,概括起来就是4V特征,6大战略: 1.1 关于大数据 ...

  6. CM+CDH构建企业大数据平台系列(一)

    问题导读: 1.CM是什么? 2.CDH是什么? 3.CM+CDH是什么? 4.什么是企业大数据平台? 5.如何用CM+CDH构建企业大数据平台? .......... 带着种种疑问让我们开启真正的企 ...

  7. 分享 | 企业大数据平台仓库架构建设思路

    本文根据阿里云高级技术专家李金波在首届阿里巴巴在线峰会的<企业大数据平台仓库架构建设思路>的分享整理而成.随着互联网规模不断的扩大,数据也在爆炸式地增长,各种结构化.半结构化.非结构化数据 ...

  8. 企业大数据平台一:企业需求及相关的基本组件

    企业大数据平台一:企业需求及相关的基本组件 标签(空格分隔): 企业大数据平台 企业大数据平台一企业需求及相关的基本组件 一企业需求 二基本组件 一,企业需求: 第一方面: 数据分析: * MapRe ...

  9. 大数据平台的整体架构由哪些组成

    大数据平台将互联网使用和大数据产品整合起来,将实时数据和离线数据打通,使数据能够实现更大规模的相关核算,挖掘出数据更大的价值,然后实现数据驱动事务.那么,大数据平台的整体架构由哪些组成呢? 一.事务使 ...

最新文章

  1. Android性能优化典范笔记(1)-GPU绘制性能优化
  2. PHP设计模式-单例模式
  3. Gradle 配置spring boot启动
  4. wxWidgets:wxArchiveClassFactory类用法
  5. 怎么确保一个集合不能被修改
  6. docker etcd
  7. jQuery微博登录
  8. 数据结构与算法 第二章 数据结构中的线性结构
  9. linux 安装Paramiko模块安装和使用
  10. centos7安装最新稳定版nginx
  11. 20145240《Java程序设计》第二周学习总结
  12. php网页怎么和PLC通讯,PLC的通讯与编程
  13. videoJs常用方法、事件、VUE中使用的注意事项
  14. 认知图谱:知识图谱+认知推理+逻辑表达
  15. vue拖拽辅助线+改变元素大小组件
  16. R语言和python语言的区别在什么地方,各自的应用场景是什么
  17. 去掉 VC2017里输出:warning LNK4099
  18. 利用运放实现信号的平移
  19. 原定7月30日上线的《暗黑破坏神:不朽》又又又”跳票“了,突发上线,如何在电脑上畅玩?
  20. 状态模式之观察者和状态模式

热门文章

  1. python能和c语音交互吗_Python和C语言交互--ctypes,struct
  2. python程序题斐波那契数列_Python编程题9--斐波那契数列
  3. 为什么我放弃饿了么产品总监,却要从事自由职业?
  4. 三角形面积=SQRT(S*(S-a)*(S-b)*(S-c)) 其中S=(a+b+c)/2,a、b、c为三角形的三边。 定义两个带参的宏,一个用来求area, 另一个宏用来求S。 写程序,在程序中用带
  5. 为什么使用@tablename起别名产生的sql语句不能用_10个简单步骤,完全理解SQL
  6. php发表图片文章代码,PHP实现发表文章时自动保存图片_php
  7. 基于微博数据对突发性环境污染事件公众感知变迁研究
  8. 【2015年第4期】基于大数据技术的P2P网贷平台风险预警模型
  9. oracle 创建用户表空间及赋权
  10. 【项目管理】管理良好沟通