大数据挖掘方案

发布时间:2017-03-17
技术:spark 1.5.2 + hadoop 2.6 + jdk8

概述

spark是实时大数据分析、挖掘的流行方案,hadoop是大数据存储和运行的流行方案,本demo主要表述用spark + hadoop如何做大数据挖掘的通用方案,包含了,包括了环境资源整合、spark和hadoop的整合,各部分模块的关系,并给出了可用的java 代码框架,和可运行的demo代码。

详细

一、设计背景

为了满足大数据实时挖掘的需要


二、设计要求:

1、数据存储

A、大数据存储标准

系统需要满足以T基本的数据存储量设计标准。

B、规模可伸缩

平台的规模可以平衡伸缩扩展

C、数据可以快速运算

数据必须是支持快速运算得出结果的


三、架构方案

1、架构图

大数据挖掘、分析的的通用流程如下:

1、先是数据采集,这里我们叫做原始数据

2、采集完之后,数据经过数据清洗模块,进行清洗

3、清洗完之后,会被数据挖掘模块进行运算

4、数据挖掘模块运行的结果,会生成相关的可用模型

5、这些模型对象往往被保存到模型服务器里面

6、然后业务服务器就从模型服务器里面获取相关的模型进行运算。

blob.png

2、数据清洗模块

2.1 用途

原始数据,都是写杂乱的数据,没法进行数据分析,和数据挖掘,都需要经过清洗才能变成可用的数据,数据清洗,一般包含两部分,第一部分,数据纯提取,就是把一些没用的信息属性,去掉,只留些和我们要分析和挖掘属性相关的属性,第二部分是建一般的属性信息转换为可供运算的数学模型信息,转行为数学模型才能进行挖掘等运算。


2.2 结构图

blob.png

2.3实现方式

数据采集,一般采用kafka才做数据采集,采集完的数据会保存到数据中心里面,这个数据中心,在我这这里也叫原始数据源,因为数量可能几大,所以可以采用Hadoop dfs来存放。

有了原始数据后,数据清洗模块被业务服务器触发运行,它去原始数据源那边获取原始数据,然后进行去杂过滤,和转数字化处理,然后在把这些处理结果存放到数据服务器里面。


技术落地如下:

blob.png

数据采集,使用kafka、Flume

原始数据源,使用hadoop dfs,或者hadoop hive等都可以

数据服务器,使用 hadoop dfs(parquet) 或者hadoop hive

数据清洗模块,使用spark

2.4扩展

容量扩展:

采用hadoop 系统来做大数据存储,方便横向扩展

计算能力扩展:

使用spark来做计算能力的横向扩展


3、数据挖掘模块

3.1 用途

数据挖掘模块,是对清洗后的数据,运用数学算法,对其进行数据运行,并把运算后的结果模型保存起来,供业务程序的调用。


3.2 结构图 

blob.png


3.3实现方式

数据挖掘模块是一个数据挖掘的程序集合,这些挖掘程序需要放到算法运行服务器里面运行。


技术落地如下:

blob.png


数据服务器,使用 hadoop dfs(parquet) 或者hadoop hive

数据挖掘模块,使用spark


3.4扩展

容量扩展:

采用hadoop 系统来做大数据存储,方便横向扩展


计算能力扩展:

使用spark来做计算能力的横向扩展


4、算法运行服务器

采集层 主要可以使用Flume, Kafka两种技术

4.1 用途:

在spark中要运算某些算,一般的做法是,把算法上传到spark服务器中,然后通过脚本来触发运行,这样的方式在我们的项目应用中,是可行的,但这样的方式是封闭式的,不能让第三方系统触发运行,基本上都能够通过手动触发运行,或者给算法加上一个定时器外壳,定时去执行XX算法,基于这的特性不方便和我们的业务系统集成。


所以提出了算法运行服务器的需求,这个主要解决了,算法可随时被业务系统触发,也可以向业务系统返回执行结果等。

4.2 结构图:

blob.png

 

4.3实现方式

数据挖掘模块是一个数据挖掘的程序集合,这些挖掘程序需要放到算法运行服务器里面运行。


技术落地如下:

blob.png


4.4 运行说明:

算法运行服务器启动时,会启动一个socket监听器,业务服务器要调用某个算法时,会往这个监听器发送一个调用请求,然后监听器接收到调用请求后,调用具体的算法(可能是数据清洗的算法,也可以是数据挖掘等的算法)运算,然后算法运行完毕后,会将运行的结果,返回给业务调用端。


5、数据服务器

5.1 用途:

存放原始数据,和清洗后的数据。

5.2 结构图:

blob.png

5.3 技术方式:

blob.png

6、模型服务器

6.1 用途:

用于存放挖掘运行后的模型,这个模型其实就是一个可用的java对象,这个java对象,会被业务端读取,然后加载后,用于业务运行。

6.2 结构图:

blob.png

6.2 实现方式:

blob.png


四、架构使用

1、环境搭建

1.1  Hadoop安装、配置

A、下载、copy到Linux下、解压等,以及将hadoop下的bin和sbin目录都添加到系统path 等这些略过。

添加过程如下:

vi /etc/profile

然后文件末端这样:

blob.png

配置这样的好处就是,以后执行一些hadoop的命令,不用直接到XXbin目录下。

注意编辑后,需要执行  source /etc/profile  后才生效


B、主要配置三个文件

core-site.xml 文件,配置如下:

blob.png

注意:这里要配置一个临时目录,一定要注意名称是hadoop.tmp.dir  以及值路径是这样写:file:/hadoop-data/dfs/tmp (因为每个hadoop的属性和值得表示方法不一样)

hdfs-site.xml文件,配置如下:

blob.png

C、配置完上面的路径后,先用命令格式化一下文件系统:

hdfs namenode -format

这个作用就是建立一个临时temp目录,以及相关的临时库。

注意:每次在修改了和路径有关的配置后,都必须执行一次

D、设置免密码登录

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

E、到shin目录下,执行启动命令,  start-dfs.sh 即可(关闭则是 stop-dfs.sh)

F、有问题记得查看log文件。

G、请后,可以用命令查看相关端口:

blob.png

H、可以打开网页看看

XXX:50070 即可

blob.png

1.2  spark安装、配置

2、程序开发与实现

2.1  项目搭建 

以test-salesRunInspark-project项目为基础,或者重命名该项目即可,大数据挖掘的项目搭建。

2.2  项目开发 

程序开发主要涉及到:清洗算法的开发,和挖掘算法的开发,其他部分不需要。

然后清洗算法、挖掘算法的开发,需要遵从2.1算法编写 规则。

需要开发的部分为红色标识的部分:

blob.png

2.3  算法编写规则 

算法(包含数据清洗算法、挖掘算法等)都是只需要遵从以下规则即可:

必须规则:

定义一个普通class,然后为这个类加入精通的job方法即可

public static void job() {
}

可选规则:

也可以定义一个main方法,这个主要作为单独运行的入口(即不是通过运算服务器调用)

public static void main(String[] args) {
}

2.4  api使用

Api的使用主要涉及到以下两个方面:

1、在spark中如何hadoop集成通讯,如何读取hadoop中的数据和将结果保存到hadoop中

2、清洗的算法如何实现、挖掘的算法如何编写


具体参考项目代码中的:

数据清洗和转换算法参考:UserJsonLog2Parquet.java

数据挖掘算法参考:UserClassModel.java

3、程序发布

数据挖掘项目以java项目方式存在,程序发布只需要将程序导出为jar包,当然换个jar包,也把所依赖的jar包也打包进去,然后把这个jar包,一起拷贝到 spark环境下面即可。

步骤如下:

blob.png

本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
手机上随时阅读、收藏该文章 ?请扫下方二维码