概述
详细
一、设计背景
为了满足大数据实时挖掘的需要
二、设计要求:
1、数据存储
A、大数据存储标准
系统需要满足以T基本的数据存储量设计标准。
B、规模可伸缩
平台的规模可以平衡伸缩扩展
C、数据可以快速运算
数据必须是支持快速运算得出结果的
三、架构方案
1、架构图
大数据挖掘、分析的的通用流程如下:
1、先是数据采集,这里我们叫做原始数据
2、采集完之后,数据经过数据清洗模块,进行清洗
3、清洗完之后,会被数据挖掘模块进行运算
4、数据挖掘模块运行的结果,会生成相关的可用模型
5、这些模型对象往往被保存到模型服务器里面
6、然后业务服务器就从模型服务器里面获取相关的模型进行运算。
2、数据清洗模块
2.1 用途
原始数据,都是写杂乱的数据,没法进行数据分析,和数据挖掘,都需要经过清洗才能变成可用的数据,数据清洗,一般包含两部分,第一部分,数据纯提取,就是把一些没用的信息属性,去掉,只留些和我们要分析和挖掘属性相关的属性,第二部分是建一般的属性信息转换为可供运算的数学模型信息,转行为数学模型才能进行挖掘等运算。
2.2 结构图
2.3实现方式
数据采集,一般采用kafka才做数据采集,采集完的数据会保存到数据中心里面,这个数据中心,在我这这里也叫原始数据源,因为数量可能几大,所以可以采用Hadoop dfs来存放。
有了原始数据后,数据清洗模块被业务服务器触发运行,它去原始数据源那边获取原始数据,然后进行去杂过滤,和转数字化处理,然后在把这些处理结果存放到数据服务器里面。
技术落地如下:
数据采集,使用kafka、Flume
原始数据源,使用hadoop dfs,或者hadoop hive等都可以
数据服务器,使用 hadoop dfs(parquet) 或者hadoop hive
数据清洗模块,使用spark
2.4扩展
容量扩展:
采用hadoop 系统来做大数据存储,方便横向扩展
计算能力扩展:
使用spark来做计算能力的横向扩展
3、数据挖掘模块
3.1 用途
数据挖掘模块,是对清洗后的数据,运用数学算法,对其进行数据运行,并把运算后的结果模型保存起来,供业务程序的调用。
3.2 结构图
3.3实现方式
数据挖掘模块是一个数据挖掘的程序集合,这些挖掘程序需要放到算法运行服务器里面运行。
技术落地如下:
数据服务器,使用 hadoop dfs(parquet) 或者hadoop hive
数据挖掘模块,使用spark
3.4扩展
容量扩展:
采用hadoop 系统来做大数据存储,方便横向扩展
计算能力扩展:
使用spark来做计算能力的横向扩展
4、算法运行服务器
采集层 主要可以使用Flume, Kafka两种技术
4.1 用途:
在spark中要运算某些算,一般的做法是,把算法上传到spark服务器中,然后通过脚本来触发运行,这样的方式在我们的项目应用中,是可行的,但这样的方式是封闭式的,不能让第三方系统触发运行,基本上都能够通过手动触发运行,或者给算法加上一个定时器外壳,定时去执行XX算法,基于这的特性不方便和我们的业务系统集成。
所以提出了算法运行服务器的需求,这个主要解决了,算法可随时被业务系统触发,也可以向业务系统返回执行结果等。
4.2 结构图:
4.3实现方式
数据挖掘模块是一个数据挖掘的程序集合,这些挖掘程序需要放到算法运行服务器里面运行。
技术落地如下:
4.4 运行说明:
算法运行服务器启动时,会启动一个socket监听器,业务服务器要调用某个算法时,会往这个监听器发送一个调用请求,然后监听器接收到调用请求后,调用具体的算法(可能是数据清洗的算法,也可以是数据挖掘等的算法)运算,然后算法运行完毕后,会将运行的结果,返回给业务调用端。
5、数据服务器
5.1 用途:
存放原始数据,和清洗后的数据。
5.2 结构图:
5.3 技术方式:
6、模型服务器
6.1 用途:
用于存放挖掘运行后的模型,这个模型其实就是一个可用的java对象,这个java对象,会被业务端读取,然后加载后,用于业务运行。
6.2 结构图:
6.2 实现方式:
四、架构使用
1、环境搭建
1.1 Hadoop安装、配置
A、下载、copy到Linux下、解压等,以及将hadoop下的bin和sbin目录都添加到系统path 等这些略过。
添加过程如下:
vi /etc/profile
然后文件末端这样:
配置这样的好处就是,以后执行一些hadoop的命令,不用直接到XXbin目录下。
注意编辑后,需要执行 source /etc/profile 后才生效
B、主要配置三个文件
core-site.xml 文件,配置如下:
注意:这里要配置一个临时目录,一定要注意名称是hadoop.tmp.dir 以及值路径是这样写:file:/hadoop-data/dfs/tmp (因为每个hadoop的属性和值得表示方法不一样)
hdfs-site.xml文件,配置如下:
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、请后,可以用命令查看相关端口:
H、可以打开网页看看
XXX:50070 即可
1.2 spark安装、配置
略
2、程序开发与实现
2.1 项目搭建
以test-salesRunInspark-project项目为基础,或者重命名该项目即可,大数据挖掘的项目搭建。
2.2 项目开发
程序开发主要涉及到:清洗算法的开发,和挖掘算法的开发,其他部分不需要。
然后清洗算法、挖掘算法的开发,需要遵从2.1算法编写 规则。
需要开发的部分为红色标识的部分:
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环境下面即可。
步骤如下: