這是在Coursera上課程中一個真實的例子冷溶,我想這個例子可以很直觀讓我們感受到大數(shù)據(jù)具體是怎么應(yīng)用的渐白。后面講的都是數(shù)據(jù)庫或者Hadoop,Spark一點應(yīng)用逞频,可以在hand on看一下纯衍,再寫出來就沒有意義,所以就到此為止了苗胀。后面還是按照給自己定的學習計劃進行襟诸,而且也通過半個月時間也了解機器學習在大數(shù)據(jù)下的應(yīng)用瓦堵,受益匪淺,值得了歌亲。
下面是演講稿:
嗨菇用,我叫乍得伯克利。我是FlightStats的首席技術(shù)官陷揪,我今天在這里與您談?wù)勎覀兊钠脚_惋鸥,以及我們?nèi)绾潍@取和處理數(shù)據(jù)。但首先悍缠,我想首先介紹一下公司卦绣,并告訴你一些關(guān)于我們的事情。所以FlightStats是一家數(shù)據(jù)公司飞蚓,我們基本上是全球?qū)崟r航班狀態(tài)數(shù)據(jù)的領(lǐng)先供應(yīng)商滤港。我們從500多個來源獲取數(shù)據(jù),我們將這些數(shù)據(jù)匯總在一起趴拧,我們將其出售給我們其他企業(yè)以及消費者的客戶蜗搔。
所以只是給你一些關(guān)于我們做什么的范圍和規(guī)模的信息。就像我說的八堡,我們有超過500個數(shù)據(jù)源。每天我們處理大約1500萬次飛行事件聘芜,包括著陸兄渺,到達,離港汰现。
隨著航班狀態(tài)的變化挂谍,我們得到了一些消息。我們每天處理約2.6億飛機的位置瞎饲,所以我們有一個廣泛的網(wǎng)絡(luò)口叙,監(jiān)視圖表位置的實時航班跟蹤應(yīng)用程序。我們還處理大約一百萬個PNR或乘客姓名記錄嗅战,這是您在旅行任何時候旅行的實際數(shù)據(jù)類型妄田,PNR是為您創(chuàng)建的,用于您的旅行驮捍。它包括所有的細分疟呐,如航空旅行,渡輪东且,酒店启具,出租車,可以安排在您的旅行的任何安排珊泳。而且我們基本上把所有的數(shù)據(jù)都收集起來鲁冯,我們把它們匯總在一起拷沸,然后把它們退出來。大多數(shù)人都知道我們的FlightStats.com薯演,這是我們的消費者網(wǎng)站的業(yè)務(wù)撞芍,我們處理約200萬日常請求。我們處理大約100萬個移動應(yīng)用請求涣仿。
我們的b2b 勤庐,我們通過API和實時數(shù)據(jù)Feed認證了大量數(shù)據(jù)。人們每天向我們提供約1500萬個API請求好港。我們還發(fā)出了大約一百五十萬次飛行和旅行通知愉镰。所以如果你的手機推送通知,告訴你你的航班延誤或準時钧汹。這可能來自我們丈探。那么一點關(guān)于數(shù)據(jù)如何流經(jīng)我們公司。我們引入所有這些不同類型的數(shù)據(jù)和來源拔莱,并通過我們的數(shù)據(jù)采集團隊碗降。我們有一個團隊,其主要目的是提取各種原始數(shù)據(jù)塘秦,一個非常異構(gòu)的數(shù)據(jù)集讼渊。并將其處理為規(guī)范化形式。因此尊剔,如果您在本圖中遵循藍色箭頭爪幻,您可以看到它通過數(shù)據(jù)中心通過這個原始數(shù)據(jù)通道。哪個數(shù)據(jù)中心是我們系統(tǒng)的核心部件须误,我將在稍后再說一遍挨稿。所以藍色數(shù)據(jù),藍線是從源頭進入的原始數(shù)據(jù)通過我們的數(shù)據(jù)采集系統(tǒng)京痢,它變成了一個標準化形式的紫色線奶甘。然后再次通過我們的數(shù)據(jù)中心進入我們的處理引擎。我們的處理引擎真的是大多數(shù)業(yè)務(wù)邏輯發(fā)生的地方祭椰。我們必須做的第一件事是臭家,我們必須根據(jù)我們所知道的航班匹配任何航班信息,主要是通過航班了解航班的方式方淤。所以我們每天從我們的合作伙伴計劃供應(yīng)商中導入日程表侣监。
一旦匹配的數(shù)據(jù)被處理,并且處理基本上看每個消息臣淤,并嘗試確定我們認為該消息是否需要傳遞給消費者橄霉。所以你知道它看起來像我們以前看過的消息。還是重復(fù)?是從我們信任的數(shù)據(jù)源嗎姓蜂?
還有其他的事情按厘,我們需要知道的可能會影響是否該消息是真的?一旦我們決定通過消息钱慢,如果你遵循綠線逮京。它進入我們的中心的過程數(shù)據(jù)通道,然后被推出到幾個不同的地方束莫。首先懒棉,它進入我們的生產(chǎn)數(shù)據(jù)庫,這是我們所有的實時數(shù)據(jù)的生命览绿。該數(shù)據(jù)庫為我們的網(wǎng)站策严,移動應(yīng)用程序和其他各種場所提供數(shù)據(jù)。它也進入我們的數(shù)據(jù)倉庫饿敲,這是我們的分析產(chǎn)品使用它的地方妻导。我會在稍后再說一遍。然后怀各,數(shù)據(jù)流實際上上升到了我們很多客戶倔韭。我們不需要我們這邊的數(shù)據(jù)庫。他們寧愿在他們身邊建立一個數(shù)據(jù)庫瓢对,所以我們實際上只是將所有處理的數(shù)據(jù)直接傳遞給他們寿酌。然后他們將其托管在自己的系統(tǒng)中。
所以更多關(guān)于中樞硕蛹,中心是我們?nèi)绾我苿訑?shù)據(jù)的核心醇疼。這是我們內(nèi)部開發(fā)的一種技術(shù)。它是一種基于對象存儲的妓美,可擴展的,高可用性的多通道數(shù)據(jù)排隊和事件系統(tǒng)鲤孵。對象存儲部分是壶栋,我們使用Amazon S3存儲這些數(shù)據(jù)。所以這是一個對象存儲系統(tǒng)普监。它是可擴展的贵试,我們可以水平或垂直放大,取決于凯正,但是什么類型的數(shù)據(jù)流經(jīng)它毙玻。這是非常有意義的,我們在不同的數(shù)據(jù)中心有多個實例廊散。所以如果一個下降我們可以輕松地拉另一個桑滩,或者我們將要跨越多個實例。然后是多頻道允睹。所以它有一個休息界面运准,任何表面都可以在系統(tǒng)內(nèi)創(chuàng)建一個新的通道幌氮,并開始向其發(fā)布數(shù)據(jù)。然后胁澳,該數(shù)據(jù)根據(jù)進入的時間排隊该互,其他服務(wù)可以在這些頻道上監(jiān)聽事件。因此韭畸,一旦新的數(shù)據(jù)進入其中一個頻道宇智,任何在該頻道上偵聽的服務(wù)就會收到一個事件通知。他們胰丁,那個服務(wù)然后可以對這條數(shù)據(jù)行事随橘。并做任何可能需要做的處理。這個項目是開源的隘马,任何人都可以下載并使用它太防。
那么一點點關(guān)于我們收集和匯總的一些數(shù)據(jù)。 FLIFO是飛行信息的行業(yè)術(shù)語酸员。主要是看飛機的五個不同部分蜒车。所以我們拉閘門出發(fā)的信息,然后就成為跑道離開幔嗦,基本上當車輪上升時酿愧,就是跑道離開。我們進行飛行中的位置跟蹤邀泉,所以當你的航班正在移動時嬉挡,大約每十秒鐘一次,我們會收到其緯度和經(jīng)度的通知汇恤。其標題及其速度及其垂直中心下降率等幾個變量庞钢。
一旦它落地,一旦輪子碰到地面因谎,我們被通知跑道到達基括,當門在門口打開時,我們有門到達信息财岔。所有這五個數(shù)據(jù)字段有三種不同的形式风皿。所以我們有一個預(yù)定的,定期的出發(fā)和到達匠璧。我們估計出發(fā)和到達可能來自各種來源桐款,包括航空公司,機場夷恍,位置數(shù)據(jù)等魔眨。那么,如果我們有一個機場或一家航空公司向我們發(fā)送關(guān)于車輪碰到的準確數(shù)據(jù)的準確情況,或正好在那個車門打開的時候冰沙,我們也有實際的意見侨艾,我們也推送這些數(shù)據(jù)。我們還在航班停止時生成一些數(shù)據(jù)拓挥。那么特殊的事情唠梨,如果一架飛機有一個問題在消息。我們通過我們的支持人員的信息標記我們的內(nèi)容侥啤。我們做一些預(yù)測現(xiàn)在我們剛剛開始進入這個市場当叭,或者我們實際上是在24小時內(nèi)預(yù)測航班是否會被延遲,中斷或及時盖灸。
我們做一些合成的職位蚁鳖,主要是在海洋上。我們沒有在海洋上獲取飛機上的跟蹤數(shù)據(jù)赁炎。目前還沒有基于衛(wèi)星的飛機跟蹤系統(tǒng)醉箕。所以我們基本上以最后一個已知的位置為標題,速度徙垫。如果我們有一個飛行計劃讥裤,我們將使用飛行計劃來綜合這些位置,當我們沒有在大型水域上獲得實際的職位姻报。我們還生成通知己英,所以推送警報,預(yù)檢電子郵件吴旋,延遲通知這些類型的事情损肛。我們根據(jù)我們所看到的數(shù)據(jù)創(chuàng)建這些數(shù)據(jù)。我們將所有的歷史數(shù)據(jù)存儲在數(shù)據(jù)倉庫中荣瑟,所以現(xiàn)在我們有六年歷史的航班數(shù)據(jù)治拿。這使我們的分析產(chǎn)品成為可能,所以我們允許航空公司進行競爭分析和路線分析笆焰。
路線對航空公司非常重要劫谅。這就是他們?nèi)绾蜗嗷ジ偁帲饕怯蒄AA和其他政府機構(gòu)判斷他們是否準時仙辟。我們也做機場運營分析的事情同波,比如出租車和出租車時間鳄梅。對于許多機場叠国,跑道利用率,通過機場的小時乘客來說戴尸,這種類型的信息非常重要粟焊。而且我們也按時執(zhí)行性能指標。航空公司可以看看他們在做什么。他們完成了多少班航機项棠? 14分鐘內(nèi)有多少班機次悲雳?
他們可以將自己與競爭對手進行比較。所以我們在混合云架構(gòu)中主持所有這些香追『掀埃混合云基本上意味著我們擁有自己的私有數(shù)據(jù)中心資源,我們還在Amazon Web Services云中托管資源透典。
我們的大多數(shù)核心數(shù)據(jù)處理和服務(wù)層都在我們的私人數(shù)據(jù)中心晴楔,我們也準備好再次啟動第二個私人數(shù)據(jù)中心。現(xiàn)在峭咒,我們的主要數(shù)據(jù)中心位于俄勒岡州的波特蘭税弃,我們將在第二季度或第三季度在美國東海岸再轉(zhuǎn)一個。對于我們的API凑队,我們試圖讓這些API靠近我們的客戶则果,所以API終點和Web終點都存在于亞馬遜。并且它們會自動路由到最接近您的終點漩氨,您將自動路由到它們西壮。
我們所有的私有基礎(chǔ)設(shè)施都通過VMWare虛擬化。我們幾乎都有一個完全虛擬化的環(huán)境才菠。而我們是一個敏捷商店茸时,所以我們有六個小而快速的團隊。那些是以產(chǎn)品為中心的團隊赋访,我們允許他們像他們所需要的一樣是客戶互動可都,我們試圖使我們的團隊半自治。所以蚓耽,團隊選擇自己的工具渠牲,他們選擇自己的開發(fā)方法,他們選擇各種各樣的東西步悠。而且我們實際上允許他們盡可能快地完成他們所需要做的工作签杈。
我們嘗試自動化一切。您手動執(zhí)行某些操作鼎兽,然后在下次編寫腳本或程序時執(zhí)行此操作答姥。而且我們也測量一切。現(xiàn)在谚咬,我們每個月從系統(tǒng)中獲取約25億個指標鹦付。而且我們使用這些指標監(jiān)控我們的應(yīng)用程序性能,監(jiān)控收入择卦,幾乎監(jiān)控我們在公司所做的一切敲长。我們真的嘗試啟用全面的系統(tǒng)意識郎嫁,從硬件層到網(wǎng)站的所有內(nèi)容都被監(jiān)控。
我們使用行業(yè)最佳實踐和工具祈噪,當然泽铛,我們試圖招募和聘請最有可能的人才,了解我們的軟件庫存辑鲤。我們主要是一個Java商店盔腔。
我們的核心處理服務(wù)都是用Java編寫的。我們在我們的微服務(wù)邊緣層中使用節(jié)點JS月褥。而節(jié)點JS實際上也開始進一步向下進入處理服務(wù)層铲觉。我們使用許多不同類型的數(shù)據(jù)庫。我們的主要實時數(shù)據(jù)庫是Post Press吓坚。而我們使用Mongo作為我們的API服務(wù)的后端撵幽。
在網(wǎng)站上,我們都是HTML5礁击,我們正在轉(zhuǎn)向React和Redux盐杂,我們正在使用Elasticsearch快速搜索和索引我們的數(shù)據(jù)。而且哆窿,我們當然有iOS和Android移動應(yīng)用链烈。所以你可以在我們的網(wǎng)站上找到關(guān)于Flightstats的更多信息。如果您需要應(yīng)用程序的數(shù)據(jù)挚躯,請訪問developer.flightstats.com的開發(fā)人員中心强衡。您可以注冊一個免費的測試帳戶,并能夠直接從我們的API中提取數(shù)據(jù)码荔。如果你對Hub有興趣漩勤,就像我說的那樣,這是開源的缩搅。請查看Git Hub頁面越败,如果您有任何其他問題,請隨時與John Berkeley聯(lián)系硼瓣,我很樂意通過電子郵件回答您的任何問題究飞。感謝今天聽,希望你有一個美好的一天堂鲤。再見亿傅。