大資料入門

qq_42679379發表於2019-04-08

大資料

大資料:big data,指無法在一定時間範圍內用常規軟體工具進行捕捉、管理和處理的資料集合,

是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的資訊資產。

 

 

 問題:

  1、業務系統中列印日誌,會影響我們的執行效率,在高併發情況下,對效能影響極大。

    所以使用js埋點技術進行解決。將日誌收集和業務服務進行分離。

 

主流處理海量資料

  兩條線:

    1) 離線分析,業務系統打log4j日誌通過flume獲取log4j日誌,儲存資料到HDFS分散式檔案處理,通過MRMap拆分Reduce匯聚)進行離線分析,MR晦澀難懂,需要去了解Hadoop提供API於是Hive產品,基於MR形成HQL語句,類SQL語句。分析人員就非常方便來學習和使用。而且HiveHDFS建立資料倉儲(資料挖掘)結果如果少儲存mysql如果海量Hbase/HDFS。

    2)實時分析spark/stormstorm實時處理中最快0.2s~05s,基於事件模型event單條處理。不能直接flume收集資料放入storm,如果資料量非常大,storm拋棄,如果拋棄過多資料分析的結果偏差比較大。引入kafka起到削峰平谷作用。Storm處理時就更加平滑。

 

 

log4j

  日誌系統

    Log4j是Apache的一個開源專案,通過使用Log4j,
    我們可以控制日誌資訊輸送的目的地是控制檯、檔案、GUI元件,甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護程式等;
    我們也可以控制每一條日誌的輸出格式;
    通過定義每一條日誌資訊的級別,我們能夠更加細緻地控制日誌的生成過程。
    最令人感興趣的就是,這些可以通過一個配置檔案來靈活地進行配置,而不需要修改應用的程式碼。

 flume

  flume:水道,引水槽

  收集清洗

    Flume是Cloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,
    Flume支援在日誌系統中定製各類資料傳送方,用於收集資料;
    同時,Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力。
 
      當前Flume有兩個版本Flume 0.9X版本的統稱Flume-og,Flume1.X版本的統稱Flume-ng。由於Flume-ng經過重大重構,與Flume-og有很大不同,使用時請注意區分。
 

 Hadoop

  HDFS : Hadoop Distributed File System:分散式檔案系統

      hadoop:分散式計算

      distributed:分散式的,分散性的

      MapReduce:  分散式計算系統

    Hadoop是一個由Apache基金會所開發的分散式系統基礎架構
    使用者可以在不瞭解分散式底層細節的情況下,開發分散式程式。充分利用叢集的威力進行高速運算和儲存。
    Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量(high throughput)來訪問應用程式的資料,適合那些有著超大資料集(large data set)的應用程式。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)檔案系統中的資料。
Hadoop的框架最核心的設計就是:HDFS和MapReduce。

    HDFS為海量的資料提供了儲存,則MapReduce為海量的資料提供了計算。

 

Hive

  hive:群居;入蜂房;生活在蜂房中

    hive是基於Hadoop的一個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。
     其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉儲的統計分析。
 

kafka

    Kafka是由Apache軟體基金會開發的一個開源流處理平臺,由ScalaJava編寫。
    Kafka是一種高吞吐量分散式釋出訂閱訊息系統,它可以處理消費者規模的網站中的所有動作流資料。
      這種動作(網頁瀏覽,搜尋和其他使用者的行動)是在現代網路上的許多社會功能的一個關鍵因素。
      這些資料通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 對於像Hadoop的一樣的日誌資料和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。
    Kafka的目的是通過Hadoop的並行載入機制來統一線上和離線的訊息處理,也是為了通過叢集來提供實時的訊息。
 

 storm 

    流式資料
 
 

想高薪就業,有長足發展!

    分散式(叢集)、
    高併發(百萬級併發-nginx負載均衡-提高系統併發能力;
    資料庫mysql讀寫分離,mysql proxy,amoeba+mycat;
    redis分散式記憶體系統,億級併發-dubbo RPC框架,dubbo3.0 streaming流;
    MQ鬆耦合,架構優化最後一層,只能加硬體。
    支援洪峰。削峰平谷;從vm虛擬機器時代過渡docker容器化時代1s)、
    高可用(redis哨兵、叢集;docker)、海量資料!
 
 
 

面對海量資料?

    1) 解決海量資料的儲存solr全文檢索、Hadoop HDFSPB=1024TBEB=1024PB)

    2) 海量資料的處理(不著急-離線分析Hadoop MapReduceMRHive資料倉庫Hive QL(HQLsql的方式);立竿見影-實時分析 Spark RDD分佈式的資料集/Spark SQL/Spark Streaming 流式資料處理 storm實時處理流式,0.2s~0.5s,條,spark1s~5s吞吐量,批量/Spark MLib 機器學習

    3) 處理海量資料落地

      1. 處理完還是海量資料儲存HDFSHBase
      2. 處理完不是海量資料,比較少儲存txtexcelmysql
 
 

四類問題:

  1)分散式

  2高併發

  3)高可用

  4海量資料

 

兩個生態鏈

  1) Hadoop生態HadoopHDFS分散式的檔案管理系統,Yarn叢集調MRMapReduce)離線計算,資料挖掘(利用原始資料中提煉有價值資訊)DWDataWarehouse資料倉庫Hive提前建立中間結果(資料建模HBase nosql 列式儲存(海量) Sqoop資料遷移(Oracle匯入Mysqllimit 10rownum >10 儲存過程、觸發器(廢除!)HDFS匯入mysqlmysql匯入HDFS

  2) Spark生態鏈

    Spark RDD分散式的資料集Spark Streaming流式處理Spark SQL SQL查詢、Spark Mlib 機器學習

    Storm 流式資料處理,效能storm最快 0.2s~0.5s批量 spark streaming 2s~5s

3) zookeeper叢集管理

 

 

問題:收集哪些引數?

 

  網站流量日誌分析系統:8

    1) PV page view 點選率,越高越好

    2) UV unique view 獨立訪客數,類似登入,標識你是唯一使用者

    3) VV visitor view 某個訪客訪問次數某個客戶訪問的次數累計

    4) br bounce rate 跳出率,訪問頁面推薦,持續訪問指標反應對使用者黏著度

    5) NewIP 統計一天內出現新的IP地址,日

    6) NewCust 新使用者

    7) AvgTime 平均訪問時長如果某個頁面停留時間越長,說明這個資訊使用者感興趣。

    8) AvgDeep 平均訪問深度,一個頁面就是一,數字越大網站吸引人

 

 

 

  AvgTime統計這個值,a頁面2分鐘b頁面5分鐘c頁面5分鐘d頁面(被忽略

    常見情況:

    1) d頁面停留很久,30分鐘session

    2) d頁面點進去後把ie關閉

    這些統計中很多的資料統計不夠“嚴謹”,這些都是近似值!!!!!

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

相關文章