• 大数据挖掘方案


    概述

    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

    注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

  • 相关阅读:
    前端
    wampserver无法进入到phpmyadmin
    wordpress搭载wampserver上的问题
    电脑不显示网络信号,却能连上网
    读书TODO
    秒杀活动,怎么设计全套技术方案
    淘宝返利知识普及
    如何给变量命名
    一段SQL代码的压缩:从974行到96行,十倍压缩
    nginx一致性hash及应用场景。
  • 原文地址:https://www.cnblogs.com/demodashi/p/8458048.html
Copyright © 2020-2023  润新知