《Hadoop》数据分析系统.docx

上传人:b****7 文档编号:15598749 上传时间:2023-07-06 格式:DOCX 页数:37 大小:1.08MB
下载 相关 举报
《Hadoop》数据分析系统.docx_第1页
第1页 / 共37页
《Hadoop》数据分析系统.docx_第2页
第2页 / 共37页
《Hadoop》数据分析系统.docx_第3页
第3页 / 共37页
《Hadoop》数据分析系统.docx_第4页
第4页 / 共37页
《Hadoop》数据分析系统.docx_第5页
第5页 / 共37页
《Hadoop》数据分析系统.docx_第6页
第6页 / 共37页
《Hadoop》数据分析系统.docx_第7页
第7页 / 共37页
《Hadoop》数据分析系统.docx_第8页
第8页 / 共37页
《Hadoop》数据分析系统.docx_第9页
第9页 / 共37页
《Hadoop》数据分析系统.docx_第10页
第10页 / 共37页
《Hadoop》数据分析系统.docx_第11页
第11页 / 共37页
《Hadoop》数据分析系统.docx_第12页
第12页 / 共37页
《Hadoop》数据分析系统.docx_第13页
第13页 / 共37页
《Hadoop》数据分析系统.docx_第14页
第14页 / 共37页
《Hadoop》数据分析系统.docx_第15页
第15页 / 共37页
《Hadoop》数据分析系统.docx_第16页
第16页 / 共37页
《Hadoop》数据分析系统.docx_第17页
第17页 / 共37页
《Hadoop》数据分析系统.docx_第18页
第18页 / 共37页
《Hadoop》数据分析系统.docx_第19页
第19页 / 共37页
《Hadoop》数据分析系统.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《Hadoop》数据分析系统.docx

《《Hadoop》数据分析系统.docx》由会员分享,可在线阅读,更多相关《《Hadoop》数据分析系统.docx(37页珍藏版)》请在冰点文库上搜索。

《Hadoop》数据分析系统.docx

《Hadoop》数据分析系统

 

《Hadoop大数据技术》课程设计报告

 

设计题目:

基于Hive的销售数据分析系统

 

计算机与数据科学学院

2019年12月17日

1系统分析

1.1开发目的

随着计算机技术以及互联网的快速发展特别是网络的普及,金融、通信等大众行业对信息的需求越来越高,待处理的数据量也越来越大。

与此同时,人们对复杂查询操作能力的需求以及高性能联机事务处理能力也在不断提高,分析核心数据成为了公司发展的关键点,但是公司内部的核心数据原始文件庞大,目前大部分是通过人工分析得出结论,因此分析处理海量数据成为待解决的问题。

由于公司内部的许多核心数据是必须要产生并且加以分析的,而众多的公司系统则对产生和分析数据造成了相当大的困难,一方面,大规模的数据需要强大的运算能力才能够加以分析,传统的单机处理已经不能够满足当前业务发展的需求,另一方面,众多的业务系统,使得众多数据的处理和分析更加困难,公司内部存在着手工分析分布式系统数据结果的现状不能够得到改善,工作效率严重受到影响。

因此,企业迫切的需要一个可以大规模集中处理和分析展现数据的系统模式,统筹规划庞大的数据,实现高效处理。

解决问题:

此设计使用Hadoop的相关技术和HDFS文件系统,分析京东的需求,将海量原始数据通过Windows下的Mysql和LinuxMysql转换成HDFS数据,通过Hive进行大数据操作,筛选出对分析有价值有用的信息,并对获得的这些数据进行可视化,可视化通过交互式视觉表现的方式来帮助企业探索和理解复杂的数据。

可视化与可视分析能够迅速和有效地简化与提炼数据流,有助于使用者更快更好地从复杂数据中得到新的发现,成为用户了解复杂数据、开展深入分析不可或缺的手段。

1.2开发语言

表1.1开发语言

开发语言

编程语言

Java、JavaScript

文本标记语言

HTML

数据库语言

MysqlSQL

HiveQL

1.3开发环境

表1.2开发环境

开发环境

操作系统

Windows10x64

LinuxUbuntu

开发工具

EclipseJeeOxygen

Hadoop平台

数据库

MySQL5.5

Hive1.1.6

可视化

HTML

Echarts

浏览器

谷歌浏览器

文件管理系统

HDFS

2功能分析

2.1数据处理

数据处理把数据转换成便于观察分析、传送或进一步处理的形式。

以便从大量的原始数据中抽取部分数据,推导出对人们有价值的信息以作为行动和决策的依据。

利用计算机科学地保存和管理经过处理(如校验、整理等)的大量数据,以便人们能方便而充分地利用这些宝贵的信息资源。

图2.1数据处理流程图

2.2数据可视化

图2.2可视化总体框架

2.2.1数据信息

图2.3数据分析模块

2.2.2会员占比

图2.4会员占比模块

2.2.3京东销售数据总计

图2.5京东销售数据总计模块

2.2.4平台分类

图2.6平台分类模块

2.2.5用户印象

图2.7用户印象模块

2.2.6印象榜TOP5

图2.8印象榜模块

3实现技术

在本次的系统中主要用到了Eclipse、MySQL、Hive等软件。

用Sqoop传输数据;用JavaAPI连接数据库;用Eclipse写Java代码,操作Hive数据库,导出数据;用获得的数据,利用Echarts平台进行展示数据可视化。

相关技术与原理介绍如下:

3.1Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。

充分利用集群的威力进行高速运算和存储。

Hadoop的框架最核心的设计就是:

HDFS和MapReduce。

HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

Hadoop原本来自于谷歌一款名为MapReduce的编程模型包。

谷歌的MapReduce框架可以把一个应用程序分解为许多并行计算指令,跨大量的计算节点运行非常巨大的数据集。

使用该框架的一个典型例子就是在网络数据上运行的搜索算法。

Hadoop最初只与网页索引有关,迅速发展成为分析大数据的领先平台。

目前有很多公司开始提供基于Hadoop的商业软件、支持、服务以及培训。

Cloudera是一家美国的企业软件公司,该公司在2008年开始提供基于Hadoop的软件和服务。

GoGrid是一家云计算基础设施公司,在2012年,该公司与Cloudera合作加速了企业采纳基于Hadoop应用的步伐。

Dataguise公司是一家数据安全公司,同样在2012年该公司推出了一款针对Hadoop的数据保护和风险评估。

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。

用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。

它主要有高可靠性、高扩展性、高效性、高容错性、低成本优点。

Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。

Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。

Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。

3.2Sqoop

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:

MySQL,Oracle,Postgres等)中的数据导进到Hadoop(Hive)的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。

3.3MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。

MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。

MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

3.4Hive

Hive是一种数据仓库架构,建立在Hadoop之上。

主要作用:

存储、查询、分析存放在HDFS/HBase中的大规模数据。

执行原理:

Hive有自己的类SQL,即HQL,它将SQL解析为M/RJob,然后在Hadoop上执行。

允许开发自定义Mapper和Reducer来处理内建的Mapper和Reducer无法完成的复杂分析工作再查询(UDF)。

而启动MapReduce是一个高延迟的一件事,每次提交任务和执行任务都需要消耗很多时间,这也就决定Hive只能处理一些高延迟的应用。

存储原理:

Hive的数据存储在HDFS上,Hive的表其实就是HDFS的目录,Hive没有自己的数据存储格式,存储结构主要包括:

数据库、文件、表、视图、索引。

Hive默认可以直接加载text文本文件等。

创建表时,指定Hive的数据的列分隔符与行分隔符,Hive即可解析数据。

所以,往Hive表里面导入数据只是简单的将数据移动到表所在的目录中(如果数据是在HDFS上;但如果数据是在本地文件系统中,那么是将数据复制到表所在的目录中)。

Hive中主要包含:

Table(表),ExternalTable(外部表),Partition(分区),Bucket(桶)几种数据模型。

Hive和hadoop的集群关系:

Hive相当于是Hadoop的客户端工具,部署时不一定放在集群管理节点上。

系统架构:

用户接口包括CLI(即shell)、JDBC/ODBC、WebUI。

Hive是一种数据仓库(DataWarehouse),数据仓库将不同的数据库中的数据源整合到一起进行数据分析。

数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。

不同数据源的数据集成,所以靠的是ETL。

Extract,数据抽取,也就是把数据从数据源读出来。

Transform,数据转换,把原始数据转换成期望的格式和维度。

如果用在数据仓库的场景下,Transform也包含数据清洗,清洗掉噪音数据。

Load,数据加载,把处理后的数据加载到目标处,比如数据仓库。

Hive的使用:

(1)命令行方式CLI:

shell。

(2)脚本文件方式:

实际生产中用的最多的方式。

(3)JDBC方式:

HiveServer。

(4)webGUI接口:

hwi方式

3.5Echarts

ECharts是一个使用JavaScript实现的开源可视化库,涵盖各行业图表,满足各种需求。

遵循Apache-2.0开源协议,免费商用。

ECharts兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多种设备,可随时随地任性展示。

ECharts包含的特性:

(1)丰富的可视化类型:

提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于BI的漏斗图,仪表盘,并且支持图与图之间的混搭。

(2)多种数据格式无需转换直接使用:

内置的dataset属性(4.0+)支持直接传入包括二维表,key-value等多种格式的数据源,此外还支持输入TypedArray格式的数据。

(3)千万数据的前端展现:

通过增量渲染技术(4.0+),配合各种细致的优化,ECharts能够展现千万级的数据量。

(4)移动端优化:

针对移动端交互做了细致的优化,例如移动端小屏上适于用手指在坐标系中进行缩放、平移。

PC端也可以用鼠标在图中进行缩放(用鼠标滚轮)、平移等。

(5)多渲染方案,跨平台使用:

支持以Canvas、SVG(4.0+)、VML的形式渲染图表。

(6)深度的交互式数据探索:

提供了图例、视觉映射、数据区域缩放、tooltip、数据刷选等开箱即用的交互组件,可以对数据进行多维度数据筛取、视图缩放、展示细节等交互操作。

(7)多维数据的支持以及丰富的视觉编码手段:

对于传统的散点图等,传入的数据也可以是多个维度的。

(8)动态数据:

数据的改变驱动图表展现的改变。

(9)绚丽的特效:

针对线数据,点数据等地理数据的可视化提供了吸引眼球的特效。

(10)通过GL实现更多更强大绚丽的三维可视化:

在VR,大屏场景里实现三维的可视化效果。

(11)无障碍访问(4.0+):

支持自动根据图表配置项智能生成描述,使得盲人可以在朗读设备的帮助下了解图表内容,让图表可以被更多人群访问!

3.6JDBC

JDBC(Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,JDBC实现了所有这些面向标准的目标并且具有简单,严格类型定义且高性能实现的接口。

流程原理:

1、在开发环境中加载指定数据库的驱动程序。

2、在Java程序中加载驱动程序。

3、创建数据连接对象:

通过DriverManager类创建数据库连接对象Connection。

DriverManager类作用于Java程序和JDBC驱动程序之间,用于检查所加载的驱动程序是否可以建立连接,然后通过它的getConnection方法,根据数据库的URL、用户名和密码,创建一个JDBCConnection对象。

4、创建Statement对象:

Statement类的主要是用于执行静态SQL语句并返回它所生成结果的对象。

通过Connection对象的createStatement()方法可以创建一个Statement对象。

5、调用Statement对象的相关方法执行相对应的SQL语句:

通过execuUpdate()方法用来数据的更新,包括插入和删除等操作。

6、关闭数据库连接:

使用完数据库或者不需要访问数据库时,通过Connection的close()方法及时关闭数据连接。

主要用途:

简单地说,JDBC可做三件事:

与数据库建立连接、发送操作数据库的语句并处理结果。

3.7HDFS

Hadoop由许多元素构成。

其最底部是HadoopDistributedFileSystem(HDFS),它存储Hadoop集群中所有存储节点上的文件。

HDFS(对于本文)的上一层是MapReduce引擎,该引擎由JobTrackers和TaskTrackers组成。

通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。

对外部客户机而言,HDFS就像一个传统的分级文件系统。

可以创建、删除、移动或重命名文件,等等。

但是HDFS的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。

这些节点包括NameNode(仅一个),它在HDFS内部提供元数据服务;DataNode,它为HDFS提供存储块。

由于仅存在一个NameNode,因此这是HDFS的一个缺点(单点失败)。

存储在HDFS中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。

这与传统的RAID架构大不相同。

块的大小(通常为64MB)和复制的块数量在创建文件时由客户机决定。

NameNode可以控制所有文件操作。

HDFS内部的所有通信都基于标准的TCP/IP协议。

 

4设计实现

4.1数据处理实现

1、将海量数据(Excel)导入到WindowMysql(表new1),然后导出为sql文件;

2、复制到Linux共享文件夹里(以防虚拟机卡死)

然后启动Mysql服务:

servicemysqlstart

进入Mysql命令行:

mysql-uroot-p

sql文件导入数据到LinuxMysql中:

source~/桌面/原始数据.sql

查看数据库中是否成功导入:

showdatabase;

usenew_keshe;showtables;

3、利用Sqoop上传Mysql数据到HDFS(input2文件夹不能存在):

sqoopimport--connectjdbc:

mysql:

//localhost:

3306/new_keshe--usernameroot-P--tablenew1-m1\--hive-import--create-hive-table--hive-tablenew1--target-dir/input2

查看HDFS数据是否导入成功:

hdfsdfs-cat/input2/part-m-00000

启动Hive的两个服务

cd~/user/local/hive/bin/hiveserver2

hive--servicemetastore

使用默认数据库default创建表

CREATETABLEnew1(

idstring,

platfromstring,

xinhaostring,

titlestring,

contentstring,

memberlevelstring,

formplatformstring,

areastring,

userimpressionstring,

colorstring,

pricestring,

productSizestring,

creationTimestring,

zhuaqutimestring,

lablestring

);

HDFS数据导入Hive:

loaddatainpath'/input2/part-m-00000'intotabledefault.new1;

4.2Java代码设计实现

由于数据源庞大,对数据分析造成很大困难。

利用EclipseJeeOxygen工具查询对可视化分析有价值的数据,本设计共定义五个Java类,如下:

Area.java、Datanum.java、Member.java、Userimpression.java、Userplat.java。

它们分别对应可视化各省或直辖市销售数据总计、京东销售数据总计、会员占比、用户印象、平台分类这五模块内容。

所导入包:

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

//1、Area.java(数据部分省略)

publicclassarea{

publicstaticvoidmain(String[]args){

StringconnectionURL="jdbc:

hive2:

//localhost:

10000/default";

Stringdrivername="org.apache.hive.jdbc.HiveDriver";

Stringusername="hadoop";

Stringpassword="";

try{

Class.forName(drivername);

}

catch(ClassNotFoundExceptione)

{

//TODOAuto-generatedcatchblock

e.printStackTrace();

System.exit

(1);

}

try{

Connectioncon=DriverManager.getConnection(connectionURL,username,password);

if(con!

=null)

{

System.out.println("Connected");

}

else

{

System.out.println("NotConnected");

}

//select*query

Stringsql1="selectcount(*)fromdefault.new1wherearea='西藏'";

Statementstmt1=con.prepareStatement(sql1);

Stringsql2="selectcount(*)fromdefault.new1wherearea='青海'";

Statementstmt2=con.prepareStatement(sql2);

//以下省略

//sql="showtables";

//System.out.println("Running:

"+sql);

ResultSetres1=stmt1.executeQuery(sql1);

ResultSetres2=stmt2.executeQuery(sql2);

//以下省略

while(res1.next())

{

System.out.println("西藏"+"\t"+String.valueOf(res1.getString

(1)));

//System.out.println(String.valueOf(res.getString

(1))+"\t"+res.getString

(2)+"\t"+res.getString(3)+"\t"+res.getString(5));

}

while(res2.next())

{

System.out.println("青海"+"\t"+String.valueOf(res2.getString

(1)));

}

//以下省略

}

catch(SQLExceptionse)

{

se.printStackTrace();

}

}

}

//2、Datanum.java(数据部分省略)

publicclassdatanum{

publicstaticvoidmain(String[]args){

StringconnectionURL="jdbc:

hive2:

//localhost:

10000/default";

Stringdrivername="org.apache.hive.jdbc.HiveDriver";

Stringusername="hadoop";

Stringpassword="";

try{

Class.forName(drivername);

}

catch(ClassNotFoundExceptione)

{

e.printStackTrace();

System.exit

(1);

}

try{

Connectioncon=DriverManager.getConnection(connectionURL,username,password);

if(con!

=null)

{

System.out.println("Connected");

Stringsql1="selectcount(*)fromdefault.new1";

Statementstmt1=con.prepareStatement(sql1);

ResultSetres1=stmt1.executeQuery(sql1);

while(res1.next())

{

System.out.println("数据总数"+"\t"+String.valueOf(res1.getString

(1)));

}

}

else

{

System.out.println("NotConnected");

}

}catch(SQLExceptionse)

{

se.printStackTrace();

}

}

}

//3、Member.java(数据部分省略)

publicclassmember{

publicstaticvoidmain(String[]args){

StringconnectionURL="jdbc:

hive2:

//localhost:

10000/default";

Stringdr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2