
大数据开发项目实战-大数据项目概述.pptx
46页单击此处编辑母版标题样式,单击此处编辑母版文本样,大数据项目概述,1,大数据项目实战基础,目录,企业大数据项目简介,2,企业项目,如开发一款软件、一个信息管理系统、部署实施一套网络环境等,涉及多个方面的多个环节在互联网,IT,企业的偏软件交付类项目中,一般涉及两个公司:一个公司发布需求(甲方招标,即提出软件或系统或硬件的需求),而另一个公司满足需求(乙方投标,即完成需求的响应)一般情况下,偏软件交付类项目可以分为可行性分析、需求分析、软件设计(概要设计、详细设计)、编码(软件设计实现)、测试、运行维护等几个阶段有时,因为甲方会提前进行可行性分析,所以乙方的工作更加偏向后面几个阶段企业项目数据处理流程,企业偏软件交付类项目包含的项目种类比较多,常见的项目如企业,CRM,(,Customer Relationship Management,,客户关系管理)系统、用户个性化推荐系统等基于数据处理类项目,企业项目数据处理流程如下图企业项目数据处理流程,数据获取:数据获取可能是一个文本文件、一个数据库、一个网络端口、一个爬虫程序等,其主要功能是提供数据数据采集:数据采集即数据传输(狭义的概念),如通过文件传送协议(,File Transfer Protocol,,,FTP,)下载文件就是一种数据传输的过程。
数据存储:数据采集后,需要一个地方来存储这些数据,以供备份或数据分析、挖掘使用企业项目数据处理流程,数据分析、挖掘:此层主要完成一些和业务相关的计算、分析、挖掘任务数据调用:数据调用是针对数据分析、挖掘的结果提供某种获取结果的接口,供第三方(或本系统)访问调用数据展现:数据展现负责数据的最终结果的展现展现方式有多种,如表格、趋势图等,需要和具体业务挂钩企业项目数据处理流程,企业大数据项目一般架构,架构分析,数据的来源多种多样如文本文件、端口数据、移动设备数据、互联网数据一般情况下,如果项目是科技项目或论文结题项目,那么数据源会直接给出数据,如,CSV,文件而项目是企业级项目时,如建立一个推荐系统,企业的数据一般是放在数据库中的,如放在,Oracle,或,MySQL,中还有一些项目需要通过爬虫程序去爬取互联网中的数据,此时数据源就是一个爬虫程序架构分析,1,数据获取层,数据采集框架,Flume,是,Apache,软件基金会的一个数据采集框架,它是一个分布式的、可靠的、高可用的,可以从多种不同的数据源收集、聚集、移动大量日志数据至集中数据存储层的框架Flume,可以匹配多种输入、输出源,使得不同输入、输出源的连接配置简单化。
架构分析,2,数据采集层,数据采集框架,Apache Sqoop,(简称,Sqoop,)项目旨在协助关系数据库管理系统(,Relational Database Management System,,,RDBMS,)与,Hadoop,系统(,Hadoop,生态环境)进行高效的大数据传输Sqoop,可以建立一个连接,RDBMS,和,Hadoop,系统的数据传输通道Kafka,是由,Apache,软件基金会开发的一个开源流处理平台,其目标是为处理实时数据提供一个统一、高吞吐量、低延迟的平台Kafka,的持久化层本质上是一个“按照分布式事务日志架构的大规模发布,/,订阅消息队列”,因此,Kafka,更适合用于需要进行实时采集大批量数据的数据源(如端口数据源)架构分析,Hadoop,分布式文件系统(,Hadoop Distributed File System,,,HDFS,)、,HBase,、,Hive,都是,Hadoop,技术流的数据存储框架HDFS,是,HBase,、,Hive,的底层存储技术HBase,使用键值对的存储结构,适用于针对特定键的搜索场景Hive,则是一个大数据仓库,它可以针对,HDFS,中的数据建立元数据,并对元数据进行各种查询操作。
Elasticsearch,(简称,ES,)是一个基于,Lucene,的开源搜索引擎,它不但稳定、可靠、快速,而且具有良好的水平扩展能力,是专门为分布式环境设计的因为,ES,是面向文档型数据库的,所以它存储的是整个对象或者文档它还会为存储的数据建立索引,因此可以在,ES,中高效地索引、搜索、排序和过滤文档架构分析,3,数据存储层,MongoDB,是,NoSQL,数据库,它是一个高扩展、高性能和高可用的数据库MongoDB,是一种面向文档的数据库,以,JavaScript,对象表示法(,JavaScript Object Notation,,,JSON,)的形式进行数据存储和,ES,一样,,MongoDB,也支持全文搜索,,MongoDB,和,ES,的不同主要体现在使用场景上,可根据不同的使用场景(建议读者根据自己的实际环境进行预判)有针对性地选择这些产品在大数据项目架构的数据存储层也可能会有传统数据库的身影,如,MySQL,、,Oracle,、,DB2,等,传统数据库的作用是结果存储架构分析,在数据分析、挖掘层中,常用的计算引擎有内存计算引擎(,Spark,)、离线计算引擎(,MapReduce,)、流处理引擎(,Streaming,)、搜索引擎(,ES,)。
这些计算引擎都用于最终完成数据统计、数据分析或机器学习这样的任务,为具体业务中的任务提供匹配的计算能力架构分析,4,数据分析、挖掘层,数据调用层要完成的任务就是提供接口,可以很方便地供第三方调用数据调用层为获取数据分析、挖掘层计算结果的数据提供了一种标准化的接口,使得如果各个应用都按照设计的标准来获取数据,那么各个应用都可以通过标准化的接口来获取这些数据,而不需要额外进行编码架构分析,5,数据调用层,数据展现层指的是系统最终对外提供了什么服务与大数据结合比较紧密的大屏应用可视化在公安、电力、园区管理、网络、航天等信息化程度相对较高的领域发挥了巨大作用,可以帮助行业从业务管理、事前预警、事中指挥调度、事后分析研判等多个方面提升智能化决策能力因此,其实一个可视化应用也可以作为一个业务来理解架构分析,6,数据展现层,销售(售前),项目前期,乙方(完成项目的一方)的售前人员需要和甲方沟通具体需求、签订合同等双方需要明确地把需求书面化、文档化,体现在类似需求说明书等文件中,确保双方对于需求的理解是一致的数据分析师,/,架构师,拿到需求说明书后,数据分析师针对这些需求提出预研方案(或模型),并进行预研探索(包括一些基本的数据处理、模型构建等);,架构师需要结合需求以及数据分析师的预研结果来提出需要实现的工程系统架构及方案,同时需要通过对提出的一个或多个架构、方案进行分析,根据其可行性、适合性来确定最终的工程系统架构及系统实现方案。
人员安排,程序员,架构师设计出整个系统的架构后,程序员会根据系统架构搭建系统框架,并和项目组成员共同制订各种开发计划、细则、要求等,而项目组成员负责整个系统的技术实现及各自的单元测试部分测试人员,整个系统实现后,需要有专门的测试人员对系统实现的各个模块进行一系列的集成测试、系统测试,并协助完成最后的验收测试人员安排,实施,/,运维人员,乙方在测试环境中部署、测试整个系统后,需要在甲方提供的实际环境中再次部署,因此需要由实施人员到甲方现场部署系统项目后期,系统运行过程中出现的各种问题,都需要通过运维人员来解决;如果涉及程序漏洞等,那么可以协调相关人员解决一般来说,项目进行到运维阶段基本上就算结束了,也意味着甲乙双方合同关系终止合同终止一般是在运维结束后,也有可能是在运维结束前,如果合同终止在运维阶段前,那么运维阶段一般会再签署补充的运维协议人员安排,1,大数据项目实战基础,目录,企业大数据项目简介,2,本书项目使用的硬件环境主要包括,3,个方面:,CDH,集群、客户端开发设备CDH,集群硬件配置如下表实战环境,1.,硬件环境,设备名,IP,地址,CPU,核数,内存大小,/GB,磁盘,/GB,node1,192.168.111.75,24,24,1200,node2,192.168.111.76,24,24,1200,node3,192.168.111.77,24,24,1200,node4,192.168.111.78,24,24,1200,server1,192.168.111.73,16,16,700,server2,192.168.111.74,16,16,700,server3,192.168.111.240,16,16,300,实战环境,2,软件环境,软件,版本,备注,Cloudera Manager,5.7.3,与,之配套的,Hadoop,相关软件受,Cloudra Manager,大版本的影响,Hadoop,2.6.0,2.6.0-cdh5.7.3,Spark,1.6.0,1.6.0-cdh5.7.3,Hive,1.1.0,1.1.0-cdh5.7.3,HBase,1.2.0,1.2.0-cdh5.7.3,ZooKeeper,/,HBase,自带,Sqoop,1.4.6,1.4.6-cdh5.7.3,Kafka,0.10.2-kafka2.2.0,Elasticsearch,6.3.2,JDK,1.8,开发环境和集群环境,JDK,版本保持一致,IntelliJ IDEA,2016,及以上,2016,2018,版本均可,Maven,3.3.1,3,及以上版本均可,Scala,2.10.6,Scala,插件和,IntelliJ IDEA,匹配即可,CDH,集群各服务部署情况,实战环境,CDH,首页,实战环境,CDH,主机监控界面,实战环境,HDFS,监控界面,实战环境,YARN,监控界面,实战环境,Hive,监控界面,实战环境,Spark,监控界面,实战环境,HBase,监控界面,实战环境,开发环境分为两大类。
第一类指直接操作类环境,如,Linux,终端(直接执行,Shell,命令)或,Spark Shell,(直接执行一段,Spark,代码);,第二类是代码工程化的开发环境,如前面已经执行过一段,Spark,代码,现在需要把这段代码工程化,使之可以在调度中运行得到结果,而不是通过人工复制、粘贴运行得到结果实战环境,3,开发环境,(,1,)安装,IntelliJ IDEA,开发环境,在,IntelliJ IDEA,官网下载,IntelliJ IDEA,并安装实战环境,(,2,)配置,Maven,插件,打开,IntelliJ IDEA,后,依次选择“,File,”,“,Settings,”,“,Build,Execution,Deployment,”,“,Build Tools,”,“,Maven,”选项,并在“,Maven home directory,”下拉列表框中配置安装好的,Maven,插件实战环境,(,3,)配置,Scala,插件,依次选择“,File,”,“,Settings,”,“,Plugins,”,“,Install JetBrains Plugins,”选项,在弹出的搜索框中输入“,scala,”,即可看到,Scala,插件(双击即可进行安装)。
实战环境,(,4,)配置随书附带的代码资源,下载并解压缩随书附带的代码资源,big_data_case_study.zip,,解压缩后得到所有代码工程文件使用,IntelliJ IDEA,导入代码工程,导入后的代码工程如下图实战环境,包括但不限于以下两类基础开发类,包括基本的,Linux,操作技能,如熟练使用,Linux,命令、编辑,Linux,配置文件等;,基本的,Java,开发能力,能使用,Spring Boot,完成一个简单应用的开发实现;,基本的,Scala,程序编写能力,如能熟练使用,Scala,的函数式编程;,基本的,SQL,(,Structure Query Language,,结构查询语言)增加、删除、。
