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

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

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

一、数据采集

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

数据源的种类比较多:

  • 网站日志:

作为互联网行业,网站日志占的份额最大,网站日志存储在多台网站日志服务器上,

一般是在每台网站日志服务器上部署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也可以满足。

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

四、数据应用

  • 业务产品(CRM、ERP等)

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

  • 报表(FineReport、业务报表)

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

  • 即席查询

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

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

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

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

  • OLAP

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

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

  • 其它数据接口

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

五、实时计算

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

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

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

六、任务调度与监控

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

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

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

一张图解释清楚大数据技术架构,堪称阿里的核心机密相关推荐

  1. Google大数据技术架构探秘

    Google是大数据时代的奠基者,其大数据技术架构一直是互联网公司争相学习和 研究的重点,也是行业大数据技术架构的标杆和示范. 1.谷歌的数据中心 谷歌已经建立了世界上最快.最强大.最高质量的数据中心 ...

  2. Facebook大数据技术架构的演进路线

     Facebook一直是大数据技术最积极的应用者,因为它拥有的数据量极其巨大,一份资料显示2011年它拥有的压缩数据已经有25PB,未压缩数据150PB,每天产生的未压缩的新数据有400TB.在F ...

  3. 大数据技术架构都有哪些变化

    大数据分析技术是在近年来才兴起的技术,而将大数据分析技术运用到企业品牌的营销上却并没有实行太久,主要运用的企业还是行业中的各种大企业,而中小型企业在大数据营销上才刚刚进行.大数据技术对各个行业的发展都 ...

  4. 大数据技术架构_架构大数据图

    大数据管理数据处理过程图 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察力.大数据处理的主要流程包括数据收集 ...

  5. 一张图剖析企业大数据平台的核心架构

    我们先来看看这张图,这是某公司使用的大数据平台架构图,大部分公司应该都差不多: 从这张大数据的整体架构图上看来,大数据的核心层应该是:数据采集层.数据存储与分析层.数据共享层.数据应用层,可能叫法有所 ...

  6. 九张图读懂大数据医疗

    人们都想选择个性化的健康医疗,为了实现这个目标,我们必须让大数据参与到破译和分析个人的所思.所需中.除了作为一个行业的流行语以外,大数据可以为医疗保健工作者和消费者带来怎样的成功呢? 下面的信息图是由 ...

  7. 一张图读懂大型网站技术架构

    软件架构师最大的价值不在于掌握多少先进的技术,而在于具有将一个大系统切分成N个低耦合的子模块的能力,这些子模块包含横向的业务模块,也包含纵向的基础技术模块.这种能力一部分源自专业的技术和经验,还有一部 ...

  8. 供应链 信用管理 大数据_智慧供应链大数据技术架构方案(ppt)

    随着供应链变得越来越复杂,必须采用更好的工具来迅速高效地发挥数据的最大价值.供应链作为企业的核心网链,将彻底变革企业市场边界.业务组合.商业模式和运作模式等.大数据将用于供应链从需求产生,产品设计到采 ...

  9. 【大数据技术干货】阿里云伏羲(fuxi)调度器FuxiMaster功能简介(一) 多租户(QuotaGroup)管理...

    原文链接:http://click.aliyun.com/m/13950/ 各位好,这是介绍阿里云伏羲(fuxi)调度器系列文章的第一篇,今天主要介绍多租户(QuotaGroup)管理的实现 一.Fu ...

  10. 如何理解《2020年大数据白皮书》的大数据技术最新发展趋势?

    正文开始 信通院发布的<大数据白皮书2020>(以下简称白皮书,来源:中国信息通信研究院,关注本公众号后,后台回复"big2020"获得PDF),提供了一张非常全面的大 ...

最新文章

  1. 程序员春节必备金句,简直不能再机智!
  2. 2_初学者快速掌握主流深度学习框架Tensorflow、Keras、Pytorch学习代码(20181211)
  3. D1net阅闻:WhatsApp正式推出Windows和Mac本地桌面应用
  4. spring定时器分析
  5. 用维基百科训练word2vec中文词向量
  6. 父亲的忠告:把孩子培养成普通人
  7. Python的变量名、数据类型和简单运算、条件语句,循环及练习——02
  8. 用perl发送数据到钓鱼站
  9. javaweb图书管理系统源码
  10. 修改文件或文件夹的创建时间、修改时间、访问时间
  11. 荒神罪蜀山传 服务器未响应,《DOTA2》荒神罪蜀山传新手攻略
  12. word排版案例报告_Word操作技巧:图文混排,就是这么简单
  13. 数据处理第3部分:选择行的基本和高级的方法
  14. 四则运算之Right-BICEP单元测试
  15. Android中的缓存策略,实战打造ImageLoader
  16. vscode运行cpp文件:检测到 #include 错误。请更新 includePath。已为此翻译单元(E:\C++ Code\test1\test1\test1.cpp)禁用波形曲线。
  17. textarea标签中的换行符和空格
  18. ​华为轮值董事长胡厚崑:没有自建芯片厂计划;​苹果赔偿1亿美元给App开发者;Git.io停用|极客头条
  19. Android手机靠近蓝牙模块自动连接蓝牙模块,断后自动重连。也可以手机靠近手机自动连接。连接成功率百分之百,可后台运行
  20. 【实例分割|Mask2Former】 解决模型推理预测的代码中存在的一些问题

热门文章

  1. linux ipv6修改为ipv4,Linux IPV6 转 IPV4
  2. 买腾讯云服务器怎么选择
  3. 微信小程序数据库关于openId的坑
  4. html5中nav标签(导航链接)的详细介绍
  5. java获取oracle自增_java相关:MyBatis Oracle 自增序列的实现方法
  6. 关于Java中double类型的变量保留指定位数的方法
  7. Wechall Wireup(一)
  8. 全球及中国生活用纸市场营销策略与盈利前景预测报告2022版
  9. win10锁屏账户和计算机名,如何玩转Win10锁屏和主题
  10. 一分钟轻松掌握 !Java 高级数据结构 -- 原生 BitSet 源码刨析