天天看點

[喵咪大資料]初識大資料

大資料網際網路時代下大家耳熟能詳的名詞,但是我們離大資料有多遠呢?從2011Hadoop1.0問世到現在,漸漸地大資料解決方案已經趨向成熟,筆者覺得也是時間來學習接觸一下大資料解決一些在工作中實際遇到的一些棘手的問題,今天開始筆者會帶來一整套親生在大資料裡面探索的經驗已經一些實踐經驗來與大家一同分享學習.

附上:

喵了個咪的部落格:

w-blog.cn

1.什麼是大資料,為什麼需要大資料

大家可以一起來思考這個問題:什麼是大資料?存儲的資料很多就是大資料嗎? 10TB 1PB?

其實不然,我們通過Hadoop其中的各個元件就可以了解到,大資料并不隻是資料量大而已,它是資料存儲+分布式排程+資料分析的結合:

  • 資料存儲 : Hadoop-HDFS — 使用者高可靠性的來存儲原始資料
  • 分布式排程 : Hadoop-YARN — 使用者分布式任務排程管理配置設定任務
  • 資料分析 : Hadoop-MapReduce — 任務處理分析引擎

不知道大家是否還記得馬雲在杭州峰會上說你們知道全國哪個省的女人胸最小嗎?他說他知道,但是實際上他真的就對比過嗎?并不是這就是大資料技術實作的

大資料可以存放原來不敢想的資料,比如大量的請求日志,大量的記錄檔,之前我們使用的資料能夠存儲1TB的容量千萬基本條資料基本已經是極限了更别說分析了,大資料能夠做到TB甚至PB級别的資料存儲,還能在其中進行分析,舉幾個例子大家就很好了解:

  • 有多少人每天中午吃中餐外賣?
  • 購買衣服使用者購買最多的顔色和尺碼是什麼?
  • 上海那個地方的人流量最多最适合投放廣告?

上面的每一個結果都需要通過大量的資料來分析出來,大資料就是起到這個作用最終來實作資料價值就是大資料的最終目标!

2.大資料生态

為什麼這個時間段來說大資料呢?大資料不是已經很多年了嗎? 現在在來說大資料是不是太晚了?

筆者覺得這個時間一點也不晚,馬雲說未來10年是大資料和人工智能的十年,尤其經過的一段時間的發展完善,之前少數人能夠使用的大資料已經變得更加大衆化了擁有了自己的生态,讓使用者入門成本大幅降低,讓普通開發者和小企業也可以能夠比較輕松的接入到自己的業務中,其中有一些生态中大家耳熟能詳的代表:

  • Hadoop : 生态中的老大,提供了大資料的基礎HDFS分布式檔案系統以及YARN任務排程和MapReduce處理引擎
  • Hive : 基于Hadoop的一個資料倉庫工具,結構化的資料檔案映射為一張資料庫表,,使用SQL語句的查詢方式大大降低了需要編寫MapReduce難度(複雜的語句會轉換為MapReduce執行也可以使用其他引擎)
  • Pig : 一種輕量級腳本語言可以很友善的在HDFS上進行各項操作,可以操作結構化,半結構化,非結構化資料,和Hive相比Hive隻能操作結構化資料
  • Hbase : 一個NoSql的資料庫,Hbase的資料操作基本可以做到實時,比如一些短連結很大一部分使用Hbase來存儲
  • KafKa : 高吞吐量的分布式釋出訂閱消息系統,用于海量日志的傳輸較多
  • Spark : 使用scala開發大規模資料處理而設計的快速通用的計算引擎,和MapReduce不同Spark使用記憶體分布資料集,記憶體計算下,Spark 比 Hadoop 快100倍.
  • Storm : 實時計算系統,俗稱流處理引擎實時分析,線上機器學習,持續計算,分布式遠端調用和ETL使用較多
  • Sqoop : 資料導入導出工具,可以用于Hadoop(Hive)與傳統的資料庫(mysql、postgresql...)間資料互相傳遞
  • Presto : Facebook開發的資料查詢引擎,可以與Hive和關系型資料庫結合,實作直接的關聯查詢等

大資料生态中還有很多其他的生态元件這裡就不一一列舉.

3.大資料解決方案

既然要說大資料肯定要有具體的場景,筆者這裡的場景是對所有伺服器的通路日志進行記錄,最終達到通過記錄檔對使用者行為資料分析,大緻流程如下:

(有的童鞋說為什麼一定要用大資料來分析呢? 直接業務彙總也可以啊! 大家要注意通過大資料分析原始資料都是存在的可以通過多個次元進行分析不局限,而業務彙總往往隻是一個總數已經丢失了所有的次元,如果統一有誤直接影響資料結構,而大資料隻要改一下查詢的方式就好了)

來自一份日志的生命周期

  1. 通過業務伺服器接口請求分别進行業務處理到資料庫并且寫入到日志系統中,filebeat讀取日志檔案把資料發送到KafKa中
  2. 日志暫時存在KafKa中,分别被storm和Go程式消費(筆者後期會開源),storm試試計算處理到mysql庫和hive庫中
  3. Go程式會提前建立好Hive和Hbase中的表結構(按照每天分表),Go收到資料會進行配置的規則解析并且寫入資料到Hbase中
  4. Hbase和Hive進關聯,并且每天定時對資料進行彙總分區,最終日志會存放到Hadoop-HDFS中
  5. Sqoop會把Mysql的資料同步到HIVE庫中,Spark對資料進行離線分析得到需要的結構存入HIVE,Sqoop吧處理的資料在同步會Mysql
  6. 使用Presto對資料進行實時查詢檢索

(未經過作者允許請不要善自使用圖檔)

貓咪後續大緻的一個大資料内容如下:

  • [喵咪大資料]Hadoop單機模式
  • [喵咪大資料]Hadoop叢集模式
  • [喵咪大資料]Hadoop節點添加下線和磁盤擴容操作
  • [喵咪大資料]Hive2搭建
  • [喵咪大資料]Hbase搭建
  • [喵咪大資料]Hive+Hbase關聯
  • [喵咪大資料]HUE大資料可視化管理工具
  • [喵咪大資料]Presto查詢引擎
  • [喵咪大資料]Airpal線上Presto管理工具
  • [喵咪大資料]Spark叢集搭建
  • [喵咪大資料]Spark-SQL查詢引擎
  • [喵咪大資料]KafKa搭建配置
  • [喵咪大資料]filebeat采集日志進入KafKa
  • [喵咪大資料]sqoop資料導入導出(Mysql <-> Hive)

4 總結

大資料已經深入到各行各業無處不在,筆者也希望在子學習的過程中能夠和大家一同分享學習收貨知識一同成長,如果大家感興趣請關注喵咪的部落格,将給大家帶來更多的精品部落格,謝謝大家的支援!

注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!