-
1 # 藍隊雲計算
-
2 # 課工場—武漢
在現在的資料技術時代中,資料有著不可替代的地位,拋開資料談大資料服務就是瞎扯,沒有資料作支撐的大資料平臺就是一個空殼。資料是一切資料分析、資料探勘、大資料處理、ai演算法的核心。
這很好理解,因為在公司中,常常資料都是需要服務於真實業務,所以資料也就來自於真實業務,而個人或者學術上可以使用一些特定的開源資料集來做相應研究,下面我們來介紹一下公司中經常獲取資料的這幾種方法:
1.裝置收集
裝置收集顧名思義就是使用一些裝置來進行收集資料,比如在工業界電力行業常用的Scada資料就是透過常用的一些終端電子裝置,直接放在匯流箱、逆變器等裝置上,實時將電流電壓資料記錄並儲存下來,這樣得到大量的資料。
再如,我們每個人的手機可能都是某些軟體的資料收集終端,我們每天的運動步數可能會被支付寶/微信記錄下,我們每天點開軟體的次數等等這些操作,都是各個軟體收集資料的一個手段。這些資料可以直接放入到大資料環境當中,也可以透過關係型資料庫做一個跳板。
2.從資料庫匯入
在大資料技術風靡起來前,關係型資料庫(RDMS)是主要的資料分析與處理的途徑。許多公司的業務邏輯資料都是存放在關係型資料庫中。比如一個電商網站,你購買了一件商品,發生的這種行為絕對會生成一條資料在資料庫中。
比如你收藏了一件商品、退貨了一件商品等等這種行為都會被記錄到資料庫中。發展至今資料庫技術已經相當完善,當大資料出現的時候,行業就在考慮能否把資料庫資料處理的方法應用到大資料中。
雖然出現Hive等大資料產品,但是在生產過程中業務資料依舊使用 RDMS 進行儲存,這是因為產品需要實時響應使用者的操作,在毫秒級完成讀寫操作,而大資料產品不是應對這種情況出現的。
到這裡你可能就有一個疑問,如何把業務的資料庫同步到大資料平臺中?一般來說業務資料我們使用實時和離線採集資料來將資料抽取到資料倉庫中。然後再進行後續資料處理和分析,我們常用的資料庫匯入工具是Sqoop。
Sqoop是 Apache 旗下一款 Hadoop 和關係型資料庫之間傳送離線資料的工具。實現關係型資料庫同 Hadoop 叢集的 Hdfs、Hbase、Hive 進行資料同步,是連線傳統關係型資料庫和 Hadoop 的橋樑。
3.日誌匯入
日誌系統將我們系統執行的每一個狀況資訊都使用文字或者日誌的方式記錄下來,這些資訊我們可以理解為業務或是裝置在虛擬世界的行為的痕跡,透過日誌對業務關鍵指標以及裝置執行狀態等資訊進行分析。
除了常規記錄的方式收集日誌之外,一般使用者的一些行為日誌收集的方式我們採用埋點的形式進行收集。埋點的意思實際上是在前端頁面上放上一個監控點,它能夠記錄下你所有的一些行為,比如你滑鼠來來回回移動了幾下,你點選了哪些地方,你在這篇文章上停留了多久,你在輸入框中輸入了什麼字然後又刪除了等等所有的一些行為,都可以被埋點所記錄。
而將日誌資料匯入到大資料環境中也有許多的方案,常見的日誌收集解決方案如ELK搭建日誌採集+日誌查詢+視覺化系統。
Flume+Kafka+Hive/Spark+SparkStreaming實現日誌的實時採集+離線分析+實時處理的架構等等。
4.爬蟲
爬蟲是一種透過模擬正常人瀏覽訪問網站的一類程式,它透過模擬正常人訪問網站,從而達到獲取該網站資料的目的,比如說我訪問了一下天氣預報網站,並複製了今天的溫度發給女朋友,我說對女朋友說“寶貝,今天溫度很合適,咱們去爬山吧”,女朋友回“分手吧,40度的溫度你叫我爬山,你根本不愛我”。看吧,我成功透過獲取網站的資料丟失了一個女朋友。爬蟲就是透過模擬人的方式去訪問網站,並獲取網站的資料的。
時至至今,爬蟲的資料成為公司重要戰略資源,透過獲取同行的資料跟自己的資料進行支撐對比,管理者可以更好的做出決策。爬蟲也是一個非常有用和常見的資料獲取方式.
總結一下,資料採集是資料分析、資料探勘工作中的第一步。資料採集的準確性決定了這個資料分析報告是不是有使用價值。只有當資料採集具有科學性、客觀、嚴密的邏輯性時,建立在這樣的資料分析基礎之上得出來的結論才具有現實的價值和意義。
回覆列表
大資料處理之一:採集
大資料的採集是指利用多個數據庫來接收發自客戶端(Web或者感測器形式等)的資料,並且使用者可以透過這些資料庫來進行簡單的查詢和處理工作。比如,電商會使用傳統的關係型資料庫MySQL和Oracle等來儲存每一筆事務資料,除此之外,Redis和MongoDB這樣的NoSQL資料庫也常用於資料的採集。
在大資料的採集過程中,其主要特點和挑戰是併發數高,因為同時有可能會有成千上萬的使用者來進行訪問和操作,比如網站有時候的併發的訪問量在峰值時達到上百萬,所以需要在採集端部署大量資料庫才能支撐。並且如何在這些資料庫之間進行負載均衡和分片的確是需要深入的思考和設計。
大資料處理之二:匯入/預處理
雖然採集端本身會有很多資料庫,但是如果要對這些海量資料進行有效的分析,還是應該將這些來自前端的資料匯入到一個集中的大型分散式資料庫,或者分散式儲存叢集,並且可以在匯入基礎上做一些簡單的清洗和預處理工作。也有一些使用者會在匯入時使用來自Twitter的Storm來對資料進行流式計算,來滿足部分業務的實時計算需求。
匯入與預處理過程的特點和挑戰主要是匯入的資料量大,每秒鐘的匯入量經常會達到百兆,甚至千兆級別。
大資料處理之三:統計/分析
統計與分析主要利用分散式資料庫,或者分散式計算叢集來對儲存於其內的海量資料進行普通的分析和分類彙總等,以滿足大多數常見的分析需求,在這方面,一些實時性需求會用到EMC的GreenPlum、Oracle的Exadata,以及基於MySQL的列式儲存Infobright等,而一些批處理,或者基於半結構化資料的需求可以使用Hadoop。
統計與分析這部分的主要特點和挑戰是分析涉及的資料量大,其對系統資源,特別是I/O會有極大的佔用。
大資料處理之四:挖掘
與前面統計和分析過程不同的是,資料探勘一般沒有什麼預先設定好的主題,主要是在現有資料上面進行基於各種演算法的計算,從而起到預測(Predict)的效果,從而實現一些高級別資料分析的需求。比較典型演算法有用於聚類的Kmeans、用於統計學習的SVM和用於分類的NaiveBayes,主要使用的工具有Hadoop的Mahout等。該過程的特點和挑戰主要是用於挖掘的演算法很複雜,並且計算涉及的資料量和計算量都很大,常用資料探勘演算法都以單執行緒為主。
整個大資料處理的普遍流程至少應該滿足這四個方面的步驟,才能算得上是一個比較完整的大資料處理