週末去哪兒架構師跟你聊:大資料平臺快速解決方案

IT大咖說發表於2017-08-28

週末去哪兒架構師跟你聊:大資料平臺快速解決方案

內容來源:2017年5月13日,週末去哪兒架構師李錫銘在“Java開發者大會 | Java之美【上海站】”進行《大資料平臺快速解決方案中》演講分享。IT大咖說作為獨家視訊合作方,經主辦方和講者審閱授權釋出。

閱讀字數:1891 | 4分鐘閱讀

週末去哪兒架構師跟你聊:大資料平臺快速解決方案

摘要

大資料(big data),指無法在一定時間範圍內用常規軟體工具進行捕捉、管理和處理的資料集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的資訊資產。週末去哪兒架構師李錫銘根據自己的成功經驗,為我們分享大資料平臺快速解決方案。

嘉賓演講視訊和PPT地址:t.cn/R9an7Rr

搭建始末

當時我們確定要做大資料的時候,有兩種選型。第一種選型是用用原生的、開源的大資料技術,需要自己搭建;第二種是ODPS。

後來我們選擇了利用原生大資料,自己搭建一個大資料平臺。因為我們已經有了一定的小積累,並且也想做一個大資料方面的技術沉澱。

在移動網際網路時代,使用者所有的行為、瀏覽、記錄和收藏等所有的資料,我們都會把它拿下來分析,前段時間階段性沉澱的東西有多少,是對之前的一個總結。這個資料還能幫助我們進行深度挖掘,之後如何對不同使用者分類,做一個精準化的營銷定位。

每個公司都會對這些資料進行報表級的展現。我們最開始的資料實現方式是把所有使用者的行為資料放到傳統的關係型資料庫中,利用純Java應用程式去讀這張表。當計算某個指標的時候,還會關聯若干張子表。這張主表大概有幾千萬,其它子表也是百萬級甚至千萬級的。如果單純用Java去算的話,還要額外處理多執行緒。

所以我們用傳統的Java純程式+關係型資料庫去處理報表的時候,在儲存和計算的效能上會出現問題,以至於報表需求越來越慢。

在這樣的大背景下,我們改成了使用大資料去處理這種場景。

技術概覽

Hadoop是現在所有大資料計算儲存的一個底層概念,後面所有衍生的大資料產品都是在Hadoop的基礎上進行衍生的。

週末去哪兒架構師跟你聊:大資料平臺快速解決方案

這張圖是目前大資料平臺的架構。

原生的Hadoop應該包含了Hdfs(檔案儲存)、Yarn(資源排程)和Mapreduce(演算法)。

Spark是類似於Mapreduce的一個計算框架,它在很多場景中的效能會比原生的Mapreduce好很多,尤其是迭代計算的時候,會有好幾個數量級的提升。

Sqoop是一個資料的遷移工具。

Hive是對底層Hdfs系統的檔案抽象出一個類似Mysql的關係型資料庫,但大前提是它是在Hadoop這個大的語義下的關係型資料庫。

Oozie是一個任務編排和排程的框架。

Hue是大資料的管理後臺。

Zookeeper是分散式協調工具。

1、元件分類

基礎資料:Mysql,File。基礎資料層是遊離於大資料之外的概念,它是傳統的資料來源。

大資料儲存:Hdfs、Hive。大資料儲存是最基礎的檔案儲存,在這基礎上抽象出一個大資料的關係型資料庫。

大資料計算:Mapreduce、Spark、Sqoop。Mapreduce是原生的,Spark是新生的,Sqoop是資料轉移的工具。

大資料協調與排程:Yarn、Zookeeper、Oozie。Yarn是原生的,Zookeeper是一個分散式保證檔案原子性的工具,Oozie是排程工具。

大資料展現:Hue。Curd的展現層。

2、典型執行流程

週末去哪兒架構師跟你聊:大資料平臺快速解決方案

最開始說過,我們遇到的問題是,Mysql的表存不下,計算也有問題。在這個場景下要把資料,從Mysql轉到大資料,並利用大資料進行計算,最後做一個展現。

它的流程是,首先通過Sqoop把Mysql的資料一次性或是增量的同步到一張Hive表裡,用Hive Sql寫好查詢後,本質上Hive Sql會轉化成Mapreduce任務再去執行,最後資料就展現出來了。

很多時候後臺的服務Control層會有入口和出口,我們需要把入口和出口的引數都記下來,方便以後排錯或做統計方面的應用。

在應用程式裡,把這些訊息定時寫到訊息佇列中,用Spark定時讀訊息佇列,並把這些讀取到的訊息按Spark的方式做一個程式設計。這個任務最終會被丟到Hadoop的底層計算裡,然後用Yarn去排程,計算出結果,把這個結果寫入Hive,這就完成了一次流式計算。

3、Hue

週末去哪兒架構師跟你聊:大資料平臺快速解決方案

這裡寫了一個Hive Sql,與傳統Mysql的寫法幾乎一樣。Hive Sql寫好以後點執行。它的過程是把Sql首先交給Hive去跑,Hive用自己的Sql解析引擎把這個任務翻譯成Mapreduce,Mapreduce再用Yarn跑在Hadoop上,最終把結果跑出來。

4、儲存:Hadoop hdfs

HadoopHdfs是基礎的儲存層。

週末去哪兒架構師跟你聊:大資料平臺快速解決方案

HadoopHdfs其實只包含了兩種型別,一個是Namenode,一個是Datanode。Namenode是一個管理的節點,而datanode只負責資料的儲存和冗餘。

5、計算:Mapreduce&spark

Hadoop原生的計算框架是Mapreduce,而spark是一個新興的計算框架,它更快更全面。

週末去哪兒架構師跟你聊:大資料平臺快速解決方案

6、資源管理器:yarn、Apache、hadoop yarn

週末去哪兒架構師跟你聊:大資料平臺快速解決方案

資源管理器的架構內包含rescource manager和node manager。Rescource manager是管理節點,node manager是work節點。

把任務丟給rescource manager,它去把任務分發給每個節點,做一些狀態的變換,最後把結果通過rescource manager彙總以後,處理完畢交給客戶端。

7、hive

週末去哪兒架構師跟你聊:大資料平臺快速解決方案

hive的架構並不是很複雜,上層是一些使用者的API、web頁面和命令列。它的核心是執行引擎,把sql翻譯成大資料平臺可以接受的任務。底層基於儲存,它可以存在hdfs上。

8、sqoop

主要用於在hadoop與傳統的資料庫間進行資料的傳遞。

9、ooize

大資料任務編排排程。

學習與使用路線

如果想要學習一些大資料相關的東西,我推薦可以先掌握一些基礎,然後找一個場景套進技術裡,進行快速實踐。在快速實踐的過程中會發現很多問題需要解決,很多知識需要補充,所以要在實踐中前行,在錯誤中補充。

我的分享到此結束,謝謝大家!

週末去哪兒架構師跟你聊:大資料平臺快速解決方案


相關文章