大數據挖掘方案


概述

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大師發表,拒絕轉載,轉載需要作者授權

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM