如何创建一个大数据平台
2022-03-25 16:12:56 28 举报
AI智能生成
1、需求分析 (业务需求、用户需求、功能需求、数据需求) 2、系统设计 (技术选型、技术架构设计、数据架构设计、数据应用设计) 3、系统开发(平台部署、数据集成及数据处理、数据服务开发、数据应用开发)
作者其他创作
大纲/内容
为此,我们可以从软件工程的流程来分析数据工程,也就是大数据平台的建设步骤。
软件工程建设步骤包括需求分析、系统设计、系统开发、系统运维等4大方面。
软件工程建设步骤包括需求分析、系统设计、系统开发、系统运维等4大方面。
1、需求分析
用户需求
功能需求
数据需求
业务需求
,老板想干啥?是想赚多点钱还是政绩工程?当然一般会是精准营销、个性化服务、提升效率等
用户需求
,真正使用这个平台的用户的需求是什么?要什么数据?分析啥?
功能需求
,基于业务需求和用户需求推导出大数据平台需要具备哪些功能
数据需求
:要接入哪些数据?指标体系是怎样?数据来源于哪些系统?数据量大概什么量级?日增量大概多少?数据接口是怎样的?
2、系统设计
基于需求分析的输出设计大数据平台,设计步骤主要包含4个子环节:
技术架构设计
数据架构设计
数据应用设计
技术选型
,技术选型主要考虑3个输入:数据量、查询性能要求、实时性要求等,由此决定是采用传统数据仓库还是分布式架构,
同时还需考虑资金和团队的因素,如果有钱可采用商用平台和服务,没钱但有技术团队,可采用开源方案,没钱又没团队可以洗洗睡了。
同时还需考虑资金和团队的因素,如果有钱可采用商用平台和服务,没钱但有技术团队,可采用开源方案,没钱又没团队可以洗洗睡了。
技术架构设计
,采集、存储、计算、交互式查询、机器学习等场景分别采用什么技术?同时各技术的集成性需要考虑。
数据架构设计
,数据主题、数据分层、数据流、数据交换方式等等
数据应用设计
,也就是上层数据应用的功能设计,这个和软件差不多,但基于数据的应用设计还是有很多不同的考虑,在此不做赘述。
3、系统开发
数据集成及处理开发
数据服务开发
数据应用开发
平台部署
:部署hadoop等大数据平台;
数据集成及处理开发
:开发ETL,从数据源采集数据,并做清洗、标准化形成主题库,并根据主题库的标准数据,根据上层数据应用需求,处理成相应的专题库(也叫数据集市);
数据服务开发
:开发并发布上层所需的数据服务接口,供上层数据应用调用;
数据应用开发
:基于数据服务、数据集,开发数据应用;
大数据分析平台的建设流程
整体而言,大数据平台从平台部署和数据分析过程可分为如下几步
1、linux系统安装
一般使用开源版的Redhat系统--CentOS作为底层平台。
为了提供稳定的硬件基础,在给硬盘做RAID和挂载数据存储节点的时,需要按情况配置。
例如,可以选择给HDFS的namenode做RAID2以提高其稳定性,将数据存储与操作系统分别放置在不同硬盘上,以确保操作系统的正常运行。
一般使用开源版的Redhat系统--CentOS作为底层平台。
为了提供稳定的硬件基础,在给硬盘做RAID和挂载数据存储节点的时,需要按情况配置。
例如,可以选择给HDFS的namenode做RAID2以提高其稳定性,将数据存储与操作系统分别放置在不同硬盘上,以确保操作系统的正常运行。
2、分布式计算平台/组件安装
目前国内外的分布式系统的大多使用的是Hadoop系列开源系统。
Hadoop的核心是HDFS,一个分布式的文件系统。
在其基础上常用的组件有Yarn、Zookeeper、Hive、Hbase、Sqoop、Impala、ElasticSearch、Spark等。
目前国内外的分布式系统的大多使用的是Hadoop系列开源系统。
Hadoop的核心是HDFS,一个分布式的文件系统。
在其基础上常用的组件有Yarn、Zookeeper、Hive、Hbase、Sqoop、Impala、ElasticSearch、Spark等。
先说下使用开源组件的优点:
1)使用者众多,很多bug可以在网上找的答案(这往往是开发中最耗时的地方)。
2)开源组件一般免费,学习和维护相对方便。
3)开源组件一般会持续更新,提供必要的更新服务『当然还需要手动做更新操作』。
4)因为代码开源,若出bug可自由对源码作修改维护。
1)使用者众多,很多bug可以在网上找的答案(这往往是开发中最耗时的地方)。
2)开源组件一般免费,学习和维护相对方便。
3)开源组件一般会持续更新,提供必要的更新服务『当然还需要手动做更新操作』。
4)因为代码开源,若出bug可自由对源码作修改维护。
分布式集群的资源管理器一般用Yarn,『全名是Yet Another Resource Negotiator』。
常用的分布式数据数据『仓』库有Hive、Hbase。
Hive可以用SQL查询『但效率略低』,Hbase可以快速『近实时』读取行。
外部数据库导入导出需要用到Sqoop。
Sqoop将数据从Oracle、MySQL等传统数据库导入Hive或Hbase。
Sqoop将数据从Oracle、MySQL等传统数据库导入Hive或Hbase。
Zookeeper是提供数据同步服务,Yarn和Hbase需要它的支持。
Impala是对hive的一个补充,可以实现高效的SQL查询。
ElasticSearch是一个分布式的搜索引擎。
针对分析,目前最火的是Spark『此处忽略其他,如基础的MapReduce 和 Flink』。
Spark在core上面有ML lib,Spark Streaming、Spark QL和GraphX等库,可以满足几乎所有常见数据分析需求。
Spark在core上面有ML lib,Spark Streaming、Spark QL和GraphX等库,可以满足几乎所有常见数据分析需求。
3、数据导入
前面提到,数据导入的工具是Sqoop。用它可以将数据从文件或者传统数据库导入到分布式平台『一般主要导入到Hive,也可将数据导入到Hbase』。
4、数据分析
数据分析一般包括两个阶段:数据预处理和数据建模分析。
数据预处理
数据预处理是为后面的建模分析做准备,主要工作时从海量数据中提取可用特征,建立大宽表。
这个过程可能会用到Hive SQL,Spark QL和Impala。
这个过程可能会用到Hive SQL,Spark QL和Impala。
数据建模分析
数据建模分析是针对预处理提取的特征/数据建模,得到想要的结果。如前面所提到的,这一块最好用的是Spark。
常用的机器学习算法,如朴素贝叶斯、逻辑回归、决策树、神经网络、TFIDF、协同过滤等,都已经在ML lib里面,调用比较方便。
常用的机器学习算法,如朴素贝叶斯、逻辑回归、决策树、神经网络、TFIDF、协同过滤等,都已经在ML lib里面,调用比较方便。
5、结果可视化及输出API
可视化一般式对结果或部分原始数据做展示。一般有两种情况,行数据展示,和列查找展示。
在这里,要基于大数据平台做展示,会需要用到ElasticSearch和Hbase。
Hbase提供快速『ms级别』的行查找。ElasticSearch可以实现列索引,提供快速列查找。
在这里,要基于大数据平台做展示,会需要用到ElasticSearch和Hbase。
Hbase提供快速『ms级别』的行查找。ElasticSearch可以实现列索引,提供快速列查找。
平台搭建主要问题:
1、稳定性 Stability
理论上来说,稳定性是分布式系统最大的优势,因为它可以通过多台机器做数据及程序运行备份以确保系统稳定。
但也由于大数据平台部署于多台机器上,配置不合适,也可能成为最大的问题。
曾经遇到的一个问题是Hbase经常挂掉,主要原因是采购的硬盘质量较差。
硬盘损坏有时会到导致Hbase同步出现问题,因而导致Hbase服务停止。
由于硬盘质量较差,隔三差五会出现服务停止现象,耗费大量时间。
但也由于大数据平台部署于多台机器上,配置不合适,也可能成为最大的问题。
曾经遇到的一个问题是Hbase经常挂掉,主要原因是采购的硬盘质量较差。
硬盘损坏有时会到导致Hbase同步出现问题,因而导致Hbase服务停止。
由于硬盘质量较差,隔三差五会出现服务停止现象,耗费大量时间。
结论
大数据平台相对于超算确实廉价,但是配置还是必须高于家用电脑的。
2、可扩展性 Scalability
如何快速扩展已有大数据平台,在其基础上扩充新的机器是云计算等领域应用的关键问题。(规模的扩展和能力的扩展)
在实际2B的应用中,有时需要增减机器来满足新的需求。
如何在保留原有功能的情况下,快速扩充平台是实际应用中的常见问题。
在实际2B的应用中,有时需要增减机器来满足新的需求。
如何在保留原有功能的情况下,快速扩充平台是实际应用中的常见问题。
商业化大数据解决方案
目前国内和国际上已有多家公司提供大数据平台搭建服务,国外有名的公司有Cloudera,Hortonworks,MapR等,
国内也有华为、明略数据、星环等。另外有些公司如明略数据等还提供一体化的解决方案,
寻求这些公司合作对 于入门级的大数据企业或没有大数据分析能力的企业来说是最好的解决途径。
国内也有华为、明略数据、星环等。另外有些公司如明略数据等还提供一体化的解决方案,
寻求这些公司合作对 于入门级的大数据企业或没有大数据分析能力的企业来说是最好的解决途径。
对于一些本身体量较小或者目前数据量积累较少的公司,个人认为没有必要搭建这一套系统,暂时先租用AWS和阿里云就够了。
对于数据量大,但数据分析需求较简单的公司,可以直接买Tableau,Splunk,HP Vertica,或者IBM DB2等软件或服务即可。
收藏
0 条评论
下一页