如何搭建大数据分析平台

讨论一:

先来谈谈企业搭建大数据分析平台的背景。

1、搭建大数据平台离不开BI。在大数据之前,BI就已经存在很久了,简单把大数据等同于BI,明显是不恰当的。但两者又是紧密关联的,相辅相成的。BI是达成业务管理的应用工具,没有BI,大数据就没有了价值转化的工具,就无法把数据的价值呈现给用户,也就无法有效地支撑企业经营管理决策;大数据则是基础,没有大数据,BI就失去了存在的基础,没有办法快速、实时、高效地处理数据,支撑应用。 所以,数据的价值发挥,大数据平台的建设,必然是囊括了大数据处理与BI应用分析建设的。

2、大数据拥有价值。来看看数据使用金字塔模型,从数据的使用角度来看,数据基本有以下使用方式:


自上而下,可以看到,对数据的要求是不一样的:

  • 数据量越来越大,维度越来越多。
  • 交互难度越来越大。
  • 技术难度越来越大。
  • 以人为主,逐步向机器为主。
  • 用户专业程度逐步提升,门槛越来越高。

企业对数据、效率要求的逐步提高,也给大数据提供了展现能力的平台。企业构建大数据平台,归根到底是构建企业的数据资产运营中心,发挥数据的价值,支撑企业的发展。

整体方案思路如下:

建设企业的基础数据中心,构建企业统一的数据存储体系,统一进行数据建模,为数据的价值呈现奠定基础。同时数据处理能力下沉,建设集中的数据处理中心,提供强大的数据处理能力;通过统一的数据管理监控体系,保障系统的稳定运行。有了数据基础,构建统一的BI应用中心,满足业务需求,体现数据价值。

提到大数据就会提到hadoop。大数据并不等同于hadoop,但hadoop的确是最热门的大数据技术。下面以最常用的混搭架构,来看一下大数据平台可以怎么来搭建,支撑企业应用:


通过Kafka作为统一采集平台的消息管理层,灵活的对接、适配各种数据源采集(如集成flume),提供灵活、可配置的数据采集能力。

利用spark和hadoop技术,构建大数据平台最为核心的基础数据的存储、处理能力中心,提供强大的数据处理能力,满足数据的交互需求。同时通过sparkstreaming,可以有效满足企业实时数据的要求,构建企业发展的实时指标体系。

同时为了更好的满足的数据获取需求,通过RDBMS,提供企业高度汇总的统计数据,满足企业常规的统计报表需求,降低使用门槛。对大数据明细查询需求,则通过构建HBase集群,提供大数据快速查询能力,满足对大数据的查询获取需求。


讨论二:

面对海量的各种来源的数据,如何对这些零散的数据进行有效的分析,得到有价值的信息一直是大数据领域研究的热点问题。大数据分析处理平台就是整合当前主流的各种具有不同侧重点的大数据处理分析框架和工具,实现对数据的挖掘和分析,一个大数据分析平台涉及到的组件众多,如何将其有机地结合起来,完成海量数据的挖掘是一项复杂的工作。


在搭建大数据分析平台之前,要先明确业务需求场景以及用户的需求,通过大数据分析平台,想要得到哪些有价值的信息,需要接入的数据有哪些,明确基于场景业务需求的大数据平台要具备的基本的功能,来决定平台搭建过程中使用的大数据处理工具和框架。


(1)操作系统的选择

操作系统一般使用开源版的RedHat、Centos或者Debian作为底层的构建平台,要根据大数据平台所要搭建的数据分析工具可以支持的系统,正确的选择操作系统的版本。

(2)搭建Hadoop集群

Hadoop作为一个开发和运行处理大规模数据的软件平台,实现了在大量的廉价计算机组成的集群中对海量数据进行分布式计算。Hadoop框架中最核心的设计是HDFS和MapReduce,HDFS是一个高度容错性的系统,适合部署在廉价的机器上,能够提供高吞吐量的数据访问,适用于那些有着超大数据集的应用程序;MapReduce是一套可以从海量的数据中提取数据最后返回结果集的编程模型。在生产实践应用中,Hadoop非常适合应用于大数据存储和大数据的分析应用,适合服务于几千台到几万台大的服务器的集群运行,支持PB级别的存储容量。


Hadoop家族还包含各种开源组件,比如Yarn,Zookeeper,Hbase,Hive,Sqoop,Impala,Spark等。使用开源组件的优势显而易见,活跃的社区会不断的迭代更新组件版本,使用的人也会很多,遇到问题会比较容易解决,同时代码开源,高水平的数据开发工程师可结合自身项目的需求对代码进行修改,以更好的为项目提供服务。

(3)选择数据接入和预处理工具


面对各种来源的数据,数据接入就是将这些零散的数据整合在一起,综合起来进行分析。数据接入主要包括文件日志的接入、数据库日志的接入、关系型数据库的接入和应用程序等的接入,数据接入常用的工具有Flume,Logstash,NDC(网易数据运河系统),sqoop等。对于实时性要求比较高的业务场景,比如对存在于社交网站、新闻等的数据信息流需要进行快速的处理反馈,那么数据的接入可以使用开源的Strom,Spark streaming等。


当需要使用上游模块的数据进行计算、统计和分析的时候,就需要用到分布式的消息系统,比如基于发布/订阅的消息系统kafka。还可以使用分布式应用程序协调服务Zookeeper来提供数据同步服务,更好的保证数据的可靠和一致性。


数据预处理是在海量的数据中提取出可用特征,建立宽表,创建数据仓库,会使用到HiveSQL,SparkSQL和Impala等工具。随着业务量的增多,需要进行训练和清洗的数据也会变得越来越复杂,可以使用azkaban或者oozie作为工作流调度引擎,用来解决有多个hadoop或者spark等计算任务之间的依赖关系问题。

(4)数据存储

除了Hadoop中已广泛应用于数据存储的HDFS,常用的还有分布式、面向列的开源数据库Hbase,HBase是一种key/value系统,部署在HDFS上,与Hadoop一样,HBase的目标主要是依赖横向扩展,通过不断的增加廉价的商用服务器,增加计算和存储能力。同时hadoop的资源管理器Yarn,可以为上层应用提供统一的资源管理和调度,为集群在利用率、资源统一等方面带来巨大的好处。


Kudu是一个围绕Hadoop生态圈建立的存储引擎,Kudu拥有和Hadoop生态圈共同的设计理念,可以运行在普通的服务器上,作为一个开源的存储引擎,可以同时提供低延迟的随机读写和高效的数据分析能力。Redis是一种速度非常快的非关系型数据库,可以将存储在内存中的键值对数据持久化到硬盘中,可以存储键与5种不同类型的值之间的映射。

(5)选择数据挖掘工具


Hive可以将结构化的数据映射为一张数据库表,并提供HQL的查询功能,它是建立在Hadoop之上的数据仓库基础架构,是为了减少MapReduce编写工作的批处理系统,它的出现可以让那些精通SQL技能、但是不熟悉MapReduce、编程能力较弱和不擅长Java的用户能够在HDFS大规模数据集上很好的利用SQL语言查询、汇总、分析数据。Impala是对Hive的一个补充,可以实现高效的SQL查询,但是Impala将整个查询过程分成了一个执行计划树,而不是一连串的MapReduce任务,相比Hive有更好的并发性和避免了不必要的中间sort和shuffle。


Spark可以将Job中间输出结果保存在内存中,不需要读取HDFS,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。Solr是一个运行在Servlet容器的独立的企业级搜索应用的全文搜索服务器,用户可以通过http请求,向搜索引擎服务器提交一定格式的XML,生成索引,或者通过HTTP GET操作提出查找请求,并得到XML格式的返回结果。


还可以对数据进行建模分析,会用到机器学习相关的知识,常用的机器学习算法,比如贝叶斯、逻辑回归、决策树、神经网络、协同过滤等。

(6)数据的可视化以及输出API


对于处理得到的数据可以对接主流的BI系统,比如国外的Tableau、Qlikview、PowrerBI等,国内的SmallBI和新兴的网易有数(可免费试用)等,将结果进行可视化,用于决策分析;或者回流到线上,支持线上业务的发展。

成熟的搭建一套大数据分析平台不是一件简单的事情,本身就是一项复杂的工作,在这过程中需要考虑的因素有很多,比如:

  • 稳定性,可以通过多台机器做数据和程序运行的备份,但服务器的质量和预算成本相应的会限制平台的稳定性;
  • 可扩展性:大数据平台部署在多台机器上,如何在其基础上扩充新的机器是实际应用中经常会遇到的问题;
  • 安全性:保障数据安全是大数据平台不可忽视的问题,在海量数据的处理过程中,如何防止数据的丢失和泄漏一直是大数据安全领域的研究热点。

讨论三:

大数据分析平台实现技术

1 硬件平台

大数据分析平台需要进行 PB 级数据的读取、写入,需要进行数据挖掘模型的大规模运算,需要进行预测结果的发布,对底层基础硬件的磁盘 IO 和运算速度要求很高,同时需要满足分布式、动态扩展的要求,因此采用配置为 2 路 8 核CPU、128GB 内存、千兆网卡的x86架构 PC Server 服务器。

2 平台软件

操作系统软件采用 Red Hat,数据采集采用 Flume-NG, 海量数据存储及分布式计算采用Hadoop,数据清洗采用 Hive,数据挖掘引擎采用 Spark R,预测结果保存在 HBase 中。

采 用 HAProxy+Keepalived+Flume-NG 构建高性能高可用分布式数据采集系统。

采用 Hadoop 构建 PB 级大数据平台,提供海量数据存储和分布式计算。

采用 Hive 做为数据清洗引擎,提供 PB级数据预处理、加工、整合服务。

采用 Spark R 组件,Spark R 提供了 Spark中弹性分布式数据集的 API,用户可以在集群上通过 R shell 交互性的运行 job。数据挖掘模型以 Spark On Yarn 的 yarn-cluster 方式构建大数据分析引擎。

采用 HBase 技术可以提供海量数据的高效发布。

3 大数据挖掘模型开发

数据采集存储模块:DPI、业务侧、网元侧数据通过文件接口方式发送到 Flume-NG 集群,Flume-NG 通过 memory 数据传输方式,将接收到的数据实时的通过 hdfs 方式汇聚到大数据分析平台。

数据清洗模块:通过编写 HQL 脚本对数据进行清洗、转换,形成特征宽表。

数据挖掘模块:基于特征宽表的数据建模采用 Spark R, 调用聚类、分类等算法,进行模型开发、模型评估、模型应用。

分析结果发布:模型应用的结果集存储在HBase 中,首先需要在 HBase 中新建存储结果集的 HBase 表,通过 Map Reduce 生成 HFile文件,然后通过 Bulk Load 方式入库。数据的调用通过 HBase API 实现,数据的展现通过ECharts 技术实现。


可以关注一下ETHINK数据智能分析平台

讨论四:

提到大数据,无可避免的就会提到Hadoop。尽管大数据并不等同于Hadoop,但Hadoop确实是最热门的大数据技术。下面是最常用的混搭架构,来看一下大数据平台可以怎么搭建,支撑企业应用:


通过Kafka作为统一采集平台的消息管理层,灵活的对接、适配各种数据源采集(如集成flume),提供灵活、可配置的数据采集能力。

利用Spark和Hadoop技术,构建大数据平台最为核心的基础数据的存储、处理能力中心,提供强大的数据处理能力,满足数据的交互需求。同时通过Sparkstreaming,可以有效满足企业实时数据的要求,构建企业发展的实时指标体系。

同时为了更好的满足的数据获取需求,通过RDBMS,提供企业高度汇总的统计数据,满足企业常规的统计报表需求,降低使用门槛。对大数据明细查询需求,则通过构建HBase集群,提供大数据快速查询能力,满足对大数据的查询获取需求。


讨论五:

如果用开源产品搭建大数据平台,还是很繁琐的,需要对细节比较了解。

可以选择商业版的hadoop平台,支持可视化一键部署。

有的大数据平台厂商利用的docker技术,直接就秒级创建一个大数据分布式平台


参考知乎:https://www.zhihu.com/question/35950209

猜你喜欢

转载自blog.csdn.net/wypersist/article/details/80248237