首页 > 编程知识 正文

构建大数据平台,大数据分析系统设计

时间:2023-05-04 01:17:53 阅读:53188 作者:950

首先,谈谈企业构建大数据分析平台的背景。

1、构建大数据平台离不开BI。 虽然大数据之前就存在BI,但将大数据与BI相同显然是不合适的。 但两者密切相关,相辅相成。 BI是实现业务管理的应用工具,没有BI,大数据就没有价值转化工具,就不能向用户展示数据的价值,不能有效支撑企业经营管理决策; 大数据是基础,没有大数据,BI就会失去存在的基础,无法快速、实时、高效地处理数据,支撑应用。 因此,数据价值的发挥,大数据平台的建设,必然涵盖大数据处理和BI应用分析建设。

2、大数据具有价值。 看看数据使用金字塔模型。 从使用数据的角度看,数据基本上有以下几种使用方法:

自上而下可以看出,对数据的要求不同。

数据量在增加,维度在增加。 交互越来越难了。 技术难度越来越高。 以人为主,以机器为主。 用户专业性逐渐提高,门槛越来越高。 企业对数据、效率的要求逐渐提高,为大数据提供了发挥能力的平台。 企业构建大数据平台,归根到底是建立企业数据资产运营中心,发挥数据价值,支撑企业发展。

总体方案的想法如下:

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

说到大数据,我会提到hadoop。 虽然大数据与hadoop不同,但hadoop确实是最受欢迎的大数据技术。 接下来,让我们看看如何使用最常见的混合体系结构构建大数据平台,以支持企业APP应用程序。

Kafka作为统一收集平台的消息管理层,可灵活应对各种数据源收集,包括flume集成,并提供灵活、可配置的数据收集能力。

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

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

讨论2如何针对海量各种来源的数据,有效分析这些零散的数据,获取有价值的信息,是大数据领域研究的热点问题。 大数据分析处理平台是将当前主流的各种具有不同侧重点的大数据处理分析框架和工具集成起来,实现数据挖掘和分析,一个大数据分析平台涉及的组件很多,如何对其进行

在构建大数据分析平台之前,要明确业务需求场景和用户需求,通过大数据分析平台,想获得哪些有价值的信息,需要访问的数据是什么,基于场景业务需求的大数据平台

)1)操作系统选择

操作系统通常用作基于开源RedHat、Centos或Debian的构建平台,具体取决于大数据平台构建的数据分析工具所支持的系统

)2) Hadoop集群的构建

Hadoop通过开发和运行处理大型数据的软件平台,实现了在由大量廉价计算机组成的集群中分散计算大量数据。 Hadoop框架中最核心的设计是HDFS和MapReduce。 HDFS是一个非常容错的系统,部署在廉价的机器上,提供高吞吐量的数据访问,适用于数据集巨大的APP应用。 MapReduce是一种编程模型,从大量数据中提取数据,最终返回结果集。 在生产APP应用程序中,Hadoop非常适合大数据存储和大数据分析APP应用程序,适用于数千到数万台大型服务器的群集操作,支持Pb级存储容量。

Hadoop系列还包括各种开源组件,如Yarn、Zookeeper、Hbase、Hive、Sqoop、Impala和Spark。 使用开源组件的优点非常明显,活跃的社区不断反复更新组件版本,用户很多,遇到问题比较容易解决,同时代码开源、高层次的数据开发引擎

)3)选择数据访问和预处理工具

对于来自不同来源的数据,数据访问是指将这些零散的数据进行集成、集成和分析。 数据访问主要包括访问文件日志、访问数据库日志、访问关系数据库和访问APP应用程序等。 数据访问的常用工具有Flume、Logstash、NDC、sqoop等。 如果需要快速处理和反馈要求实时性的业务场景(例如社交网站、新闻等)中存在的数据信息流,则访问数据需要开源流、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平台,支持可视化一键部署。

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

讨论五

在具体回答之前,需要搞清楚以下几个问题,搞清楚了,其实问题的答案也就有了:

1、是从个人学习成长的角度想搭建平台自学?还是现在的公司需要大数据技术进行分析?

——如果是从个人学习成长的角度,建议直接按照Hadoop或者Spark的官网教程安装即可,建议看官网(英文),在大数据技术领域,英语的掌握是非常重要的,因为涉及到组件选型、日后的安装、部署、运维,所有的任务运行信息、报错信息都是英文的,包括遇到问题的解答,所以还是非常重要的。

如果是公司需要进行大数据分析,那么还要研究以下几个问题:

为什么需要搭建大数据分析平台?要解决什么业务问题?需要什么样的分析?数据量有多少?是否有实时分析的需求?是否有BI报表的需求?

——这里举一个典型的场景:

公司之前采用Oracle或MySQL搭建的业务数据库,而且有简单的数据分析,或者可能采购了BI系统,就是直接用业务系统数据库进行支持的,现在随着数据量越来越大,那么就需要采用大数据技术进行扩容。


搞清楚需求之后,按照以下的步骤进行:

1、整体方案设计;

整体方案设计时需要考虑的因素:

数据量有多少:几百GB?几十TB?数据存储在哪里:存储在MySQL中?Oracle中?或其他数据库中?数据如何从现在的存储系统进入到大数据平台中?如何将结果数据写出到其他存储系统中?分析主题是什么:只有几个简单指标?还是说有很多统计指标,需要专门的人员去梳理,分组,并进行产品设计;是否需要搭建整体数仓?是否需要BI报表:业务人员有无操作BI的能力,或团队组成比较简单,不需要前后端人员投入,使用BI比较方便;是否需要实时计算?

2、组件选型;

架构设计完成后就需要组件选型了,这时候最好是比较资深的架构师参与设计,选型包括:

离线计算引擎:Hadoop、Spark、Tez……实时计算引擎:Storm、Flink、Samza、Spark Streaming……BI软件:Tableau、QlikView、帆软……

3、安装部署;

选型完成后,就可以进行安装部署了,这部分其实是最简单的,直接按照每个组件的部署要求安装即可。

4、另一种选择:采用商用软件

如果是企业需要搭建大数据平台,那么还有一种选择是直接采用商用的数据平台。市面上有很多成熟的商用大数据平台,Cloudera、星环、华为、亚信等等,都有对应的产品线,我司也有一款非常优秀的大数据平台产品:数栈。

数栈主要有以下几个特点:

1、完全基于开源:基于开源Spark(离线)、Flink(实时)计算引擎,绑定性不强,很多企业担心被某一家供应商绑定,但数栈完全基于开源,不存在这个问题;

基于这一点,其实企业也可以自行搭建底层平台,而数栈只是提供开发套件(包括数据集成、计算任务管理,用户可以直接在WEB页面编写SQL逻辑代码、调度依赖配置等)

2、简单易用:数栈包含数据开发套件、数据计算引擎(Spark、Flink)、数据治理套件(数据地图、数据质量、数据模型)、数据应用引擎(数据API),覆盖了企业内的数据采集、数据统计分析与挖掘、数据治理、数据开放的全链路,并同时覆盖离线分析与实时分析,满足企业内的各种数据处理需求。

3、性价比高:很多传统企业的数据量其实并不是特别大,例如几百GB、1,2TB,数栈最小支持3台虚拟机部署,与其他厂商动辄几十、上百个节点相比,成本可以降低很多;

数栈与搭建大数据团队的关系又是怎样的呢?

——数栈是开发团队的生产力工具,有了它可以让开发团队用大数据平台用的更爽,更好,解决需求的速度更快,同时基于开源的技术,开发人员编写MapReduce代码进行运行,可以在数栈上面配置任务调度、依赖关系,查看运行日志,也加快了团队的成长速度,因此数栈的引入,其实是开发团队的一个好帮手,让团队更有效率。

讨论六 一般的大数据平台从平台搭建到数据分析大概包括以下几个步骤:

1、Linux系统安装

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

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

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

使用开源组件的优点:1)使用者众多,很多bug可以在网上找的答案(这往往是开发中最耗时的地方);2)开源组件一般免费,学习和维护相对方便;3)开源组件一般会持续更新;4)因为代码开源,如果出现bug可自由对源码作修改维护。

在这里我还是要推荐下我自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据开发相关的),包括我自己整理的一份2018最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴。

常用的分布式数据数据仓库有Hive、Hbase。
Hive可以用SQL查询,Hbase可以快速读取行。外部数据库导入导出需要用到Sqoop。Sqoop将数据从Oracle、MySQL等传统数据库导入Hive或Hbase。Zookeeper是提供数据同步服务, Impala是对hive的一个补充,可以实现高效的SQL查询

3、数据导入

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

4、数据分析

数据分析一般包括两个阶段:数据预处理和数据建模分析。

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

数据建模分析是针对预处理提取的特征/数据建模,得到想要的结果。如前面所提到的,这一块最好用的是Spark。常用的机器学习算法,如朴素贝叶斯、逻辑回归、决策树、神经网络、TFIDF、协同过滤等,都已经在ML lib里面,调用比较方便。

5、结果可视化及输出API

可视化一般式对结果或部分原始数据做展示。一般有两种情况,行数据展示,和列查找展示。

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



—–乐于分享,共同进步!
—–更多文章请看:http://blog.csdn.net/BLSPers

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。