基于hadoop的BI架构

BI系统,是企业利用数据驱动运营的一个典型系统。BI系统经过发掘企业运行过程当中的数据,发现企业的潜在风险为企业的各项决策提供数据支撑。前端

传统的BI系统一般构建于关系型数据库之上。随着企业业务量的增大和对用户行为实时提取分析的须要愈来愈高,传统的BI架构对实时性的分析和大数据量的分析已经没法知足,新的数据分析的解决方案便呼之欲出。mysql

得益于hadoop对大数据和分布式计算的优点、以及丰富的组件,使用hadoop进行BI架构便方便许多。web

一个典型的基于hadoop的BI架构以下图所示:sql


该BI架构主要包括2部分:实时处理部分、离线批处理部分。数据库

实时处理部分:

  • 功能主要是实时获取用户的网站、app等访问记录,分析用户行为轨迹,其数据来源通常是访问日志。
  • 数据流:经过flume实时拉取服务器的日志,并将其发送至spark和hadoop。spark利用spark structured streaming组件接收flume发送的日志数据,并在必定的窗口和周期下进行计算。提取出一些用户在此时的基本行为过程,并将结果存储至hbase。这一过程当中,会涉及高频的数据读写和计算需求、特别是flume和spark这一块的话对内存的需求量比较大,须要作好硬件配置的规划。同时将日志数据写入一份至hadoop,主要是为了作离线分析的须要。

离线批处理部分:

  • 功能主要是对业务数据(如进销存等)作一些统计分析,这一部分是传统BI项目。同时,结合业务数据和离线日志,能够作一些机器学习方面的应用,好比离线训练推荐系统、预测模型等。这一部分的计算量一般比较大,通常是会安排在机器闲时的时候进行。
  • 数据流:业务数据主要是经过sqoop将mysql数据以增量的形式导入hive,日志数据是在实时处理部分已经将其存入了hadoop中,这里直接拿来用就行了。这里的统计分析和机器学习应用能够依赖于hive和spark处理,比较方便。最终的分析结果存入mysql数据库,同时模型能够直接输出,验证以后拿来用。

web服务器部分:

  • 主要有2方面功能:(1)提供数据可视化,因为一般展示形式的图形、图表、地图,这一部分会涉及到比较多的前端插件如ECharts、地图api等。(2)机器学习得到的模型在这里调用,其余应用程序则只须要提交请求则可得到模型的预测结果,将模型与其它服务解耦,方便模型的迭代,同时其余应用程序调用起来也很方便、只须要一个http请求便可。

架构的基本组成部分介绍的差很少了,其实这一块基本是通用的了。数据产品的核心仍是在于数据的前处理、分析挖掘上面,因为工做利益相关 在此很少作介绍,本质仍是结合业务、市场等提供一些有价值的信息。