深度好文!多年架构师经验,详解阿里内部大数据平台架构

今天在某乎上看见这么一个问题:

深度好文!多年架构师经验,详解阿里内部大数据平台架构

其实,这个问题就相当于是把自己的组织架构透露给外部了,因为太多的人想要知道大数据的平台怎么架构,组织怎么架构,每一步应该做什么,有什么注意点等等。

今天我就把我自己所知道的,全都告诉你们。

深度好文!多年架构师经验,详解阿里内部大数据平台架构

首先,先来回答一下这个问题:大数据平台,必须要上吗?答案是肯定的,数据量TB级以上,必须上大数据平台,你这么想:你刷微博,看抖音,玩游戏,每时每刻都在产生数据,这个量如果不用一个专门的平台去分析,公司早就崩溃了。

再讲个一个段子:某公司的hadoop集群第一次故障是因为,机器放在靠窗的地方,太阳晒得宕机了(笑)。从简单的没有机房放在自家窗前的集群到一直到现在复杂的数据平台,这是一个不断演进的过程。

深度好文!多年架构师经验,详解阿里内部大数据平台架构

阿里今天的底层平台已经被odps统一了,可能有那么几个超级牛逼的业务方,超级金牛,他们可以有自己的私有集群,自己想怎么玩就怎么玩,别的业务基本都是在odps上。估计今天金牛也会在odps上了。

就是底层平台是个公共的资源池,然后各条业务线都可以在这个平台上跑自己的业务,然后中间有个数据仓库的平台部门,负责共有数据的需求,他们会负责去接入集团各种各样的数据源,然后提供公共服务给各个业务方,下面我分前台部门,中台部门,后台部门三个部分分别谈一下组织架构。

1.前台部门,就是各个业务方,阿里总体来说,有这么几个大块的重量级大数据业务:

  • 商业智能:这个是给各个大老板看的,你们不要以为老马对经济走势的判断是胡说,老马背后的商业智能团队可能是中国最好的商业智能团队,远胜各大神奇的高大上咨询公司。各条业务线的大老板估计每天都会看日报,有些关键指标他们很care的。商业智能的业务每天大概会有上万个job在跑,是绝对的大数据。
  • 搜索:搜索这个业务懂的人就会懂,在阿里,搜索也是一个很重的业务,搜索的数据预处理是个大数据处理过程。
  • 推荐:这个业务是现在的ceo在天猫ceo任上的时候力推的,尤其是个性化推荐,这个也是用数据的大头。
  • 广告:阿里的大金牛,以前他们是有自己的集群的,因为业务太重要了,当年odps为了拿下广告的业务,专门派后台工程师去帮他们优化job,可见已经到了什么地位了,广告的计算量不用我多讲了。
  • 阿金:阿里金融是odps的第一个客户,当年阿金的job对于后台工程师是可见的,因为阿金的数仓老板说了,给你们看你们也看不懂,所以哈哈哈,好多后台工程师手上居然有阿金的全部job,测试的时候动不动就拿这几千个job虐集群。
  • 安全:是的,阿里的安全已经用上大数据了。

深度好文!多年架构师经验,详解阿里内部大数据平台架构

2.中台部门,就是集团的基础数据仓库平台,这个部门负责去各个业务部门接入数据源,然后做数据清洗,做数据仓库建模,一些共有的数据需求会在这一层做掉,比如用户表,比如交易表,这两张代表很重要,属于共有需求,这个就是中台部门在做的。

当然,他们还有很多共有需求,如果有业务方觉得某个数据他们希望由中台部门来做,他们也可以跟中台聊聊,一般都会接这个业务。

3.后台部门,就是odps,这个就是各种计算模型,主要的计算模型有三种,第一sql,第二mapreduce job,第三机器学习的job。所以基本上,这个底层平台需要满足这么几种计算需求:

  • 数据导入导出
  • sql
  • mapreduce
  • 机器学习库

当然,这个平台也有其他的计算模型,比如迭代计算,内存计算什么的,不过这些太技术化了,就不聊了。

如何搭建大数据平台呢?

整体而言,大数据平台从平台部署和数据分析过程可分为如下几步:

1、linux系统安装

一般使用开源版的Redhat系统--CentOS作为底层平台。为了提供稳定的硬件基础,在给硬盘做RAID和挂载数据存储节点的时,需要按情况配置。例如,可以选择给HDFS的namenode做RAID2以提高其稳定性,将数据存储与操作系统分别放置在不同硬盘上,以确保操作系统的正常运行。

2、分布式计算平台/组件安装

目前国内外的分布式系统的大多使用的是Hadoop系列开源系统。Hadoop的核心是HDFS,一个分布式的文件系统。在其基础上常用的组件有Yarn、Zookeeper、Hive、Hbase、Sqoop、Impala、ElasticSearch、Spark等。

值得一提的是,上面提到的组件,如何将其有机结合起来,完成某个任务,不是一个简单的工作,可能会非常耗时。

3、数据导入

前面提到,数据导入的工具是Sqoop。用它可以将数据从文件或者传统数据库导入到分布式平台。

4、数据分析

数据分析一般包括两个阶段:数据预处理和数据建模分析。数据预处理是为后面的建模分析做准备,主要工作时从海量数据中提取可用特征,建立大宽表。这个过程可能会用到Hive SQL,Spark QL和Impala。

数据建模分析是针对预处理提取的特征/数据建模,得到想要的结果。如前面所提到的,这一块最好用的是Spark。

5、结果可视化及输出API

可视化对结果或部分原始数据做展示,一般有两种情况,行数据展示,特别查找展示。在这里,要基于大数据平台做展示,会需要用到ElasticSearch和Hbase。Hbase提供快速『ms级别』的行查找。 ElasticSearch可以实现列索引,提供快速列查找。

深度好文!多年架构师经验,详解阿里内部大数据平台架构

对于一些本身体量较小或者目前数据量积累较少的公司,个人认为没有必要搭建这一套系统,暂时先租用AWS和阿里云就够了。对于数据量大,但数据分析需求不是非常复杂的公司,可以直接买Tableau,FineBI、FineReport等即可,寻求这些公司合作对于入门级的大数据企业或没有大数据分析能力的企业来说是最好的解决途径。

以上是我从事大数据以来的一些认识,可能有所疏漏,欢迎补充。

原创文章 483 获赞 4033 访问量 140万+

猜你喜欢

转载自blog.csdn.net/yuanziok/article/details/106070670