⑴ 詳解大數據的思想如何形成與其價值維度
詳解大數據的思想如何形成與其價值維度
比如經濟上,黃仁宇先生對宋朝經濟的分析中發現了「數目字管理」(即定量分析)的廣泛應用(可惜王安石變法有始無終)。又如軍事,「向林彪學習數據挖掘」的橋段不論真假,其背後量化分析的思想無疑有其現實基礎,而這一基礎甚至可以回推到2000多年前,孫臏正是通過編造「十萬灶減到五萬灶再減到三萬灶」的數據、利用龐涓的量化分析習慣對其進行誘殺。
到上世紀50-60年代,磁帶取代穿孔卡片機,啟動了數據存儲的革命。磁碟驅動器隨即發明,它帶來的最大想像空間並不是容量,而是隨機讀寫的能力,這一下子解放了數據工作者的思維模式,開始數據的非線性表達和管理。資料庫應運而生,從層次型資料庫(IBM為阿波羅登月設計的層次型資料庫迄今仍在建行使用),到網狀資料庫,再到現在通用的關系資料庫。與數據管理同時發源的是決策支持系統(DSS),80年代演變到商業智能(BI)和數據倉庫,開辟了數據分析——也就是為數據賦予意義——的道路。
那個時代運用數據管理和分析最厲害的是商業。第一個數據倉庫是為寶潔做的,第一個太位元組的數據倉庫是在沃爾瑪。沃爾瑪的典型應用是兩個:一是基於retaillink的供應鏈優化,把數據與供應商共享,指導它們的產品設計、生產、定價、配送、營銷等整個流程,同時供應商可以優化庫存、及時補貨;二是購物籃分析,也就是常說的啤酒加尿布。關於啤酒加尿布,幾乎所有的營銷書都言之鑿鑿,我告訴大家,是Teradata的一個經理編的,人類歷史上從沒有發生過,但是,先教育市場,再收獲市場,它是有功的。
僅次於沃爾瑪的樂購(Tesco),強在客戶關系管理(CRM),細分客戶群,分析其行為和意圖,做精準營銷。
這些都發生在90年代。00年代時,科研產生了大量的數據,如天文觀測、粒子碰撞,資料庫大拿吉姆·格雷等提出了第四範式,是數據方法論的一次提升。前三個範式是實驗(伽利略從斜塔往下扔),理論(牛頓被蘋果砸出靈感,形成經典物理學定律),模擬(粒子加速太貴,核試驗太臟,於是乎用計算代替)。第四範式是數據探索。這其實也不是新鮮的,開普勒根據前人對行星位置的觀測數據擬合出橢圓軌道,就是數據方法。但是到90年代的時候,科研數據實在太多了,數據探索成為顯學。在現今的學科里,有一對孿生兄弟,計算XX學和XX信息學,前者是模擬/計算範式,後者是數據範式,如計算生物學和生物信息學。有時候計算XX學包含了數據範式,如計算社會學、計算廣告學。
2008年克里斯·安德森(長尾理論的作者)在《連線》雜志寫了一篇《理論的終結》,引起軒然大波。他主要的觀點是有了數據,就不要模型了,或者很難獲得具有可解釋性的模型,那麼模型所代表的理論也沒有意義了。跟大家說一下數據、模型和理論。大家先看個粗糙的圖。
首先,我們在觀察客觀世界中採集了三個點的數據,根據這些數據,可以對客觀世界有個理論假設,用一個簡化的模型來表示,比如說三角形。可以有更多的模型,如四邊形,五邊形。隨著觀察的深入,又採集了兩個點,這時發現三角形、四邊形的模型都是錯的,於是確定模型為五邊形,這個模型反映的世界就在那個五邊形里,殊不知真正的時間是圓形。
大數據時代的問題是數據是如此的多、雜,已經無法用簡單、可解釋的模型來表達,這樣,數據本身成了模型,嚴格地說,數據及應用數學(尤其是統計學)取代了理論。安德森用谷歌翻譯的例子,統一的統計學模型取代了各種語言的理論/模型(如語法),能從英文翻譯到法文,就能從瑞典文翻譯到中文,只要有語料數據。谷歌甚至能翻譯克萊貢語(StarTrek里編出來的語言)。安德森提出了要相關性不要因果性的問題,以後舍恩伯格(下面稱之為老舍)只是拾人牙慧了。
當然,科學界不認同《理論的終結》,認為科學家的直覺、因果性、可解釋性仍是人類獲得突破的重要因素。有了數據,機器可以發現當前知識疆域裡面隱藏的未知部分。而沒有模型,知識疆域的上限就是機器線性增長的計算力,它不能擴展到新的空間。在人類歷史上,每一次知識疆域的跨越式拓展都是由天才和他們的理論率先吹起的號角。
2010年左右,大數據的浪潮捲起,這些爭論迅速被淹沒了。看谷歌趨勢,」bigdata」這個詞就是那個時間一下子躥升了起來。吹鼓手有幾家,一家是IDC,每年給EMC做digitaluniverse的報告,上升到澤位元組范疇(給大家個概念,現在硬碟是太位元組,1000太=1拍,阿里、Facebook的數據是幾百拍位元組,1000拍=1艾,網路是個位數艾位元組,谷歌是兩位數艾位元組,1000艾=1澤);一家是麥肯錫,發布《大數據:創新、競爭和生產力的下一個前沿》;一家是《經濟學人》,其中的重要寫手是跟老舍同著《大數據時代》的肯尼思?庫克耶;還有一家是Gartner,杜撰了3V(大、雜、快),其實這3V在2001年就已經被編出來了,只不過在大數據語境里有了全新的詮釋。
咱們國內,歡總、國棟總也是在2011年左右開始呼籲對大數據的重視。
2012年子沛的書《大數據》教育政府官員有功。老舍和庫克耶的《大數據時代》提出了三大思維,現在已經被奉為圭臬,但千萬別當作放之四海而皆準的真理了。
比如要數據全集不要采樣。現實地講,1.沒有全集數據,數據都在孤島里;2.全集太貴,鑒於大數據信息密度低,是貧礦,投入產出比不見得好;3.宏觀分析中采樣還是有用的,蓋洛普用5000個樣本勝過幾百萬調查的做法還是有實踐意義;4.采樣要有隨機性、代表性,采訪火車上的民工得出都買到票的結論不是好采樣,現在只做固定電話采樣調查也不行了(行動電話是大頭),在國外基於Twitter采樣也發現不完全具有代表性(老年人沒被包括);5.采樣的缺點是有百分之幾的偏差,更會丟失黑天鵝的信號,因此在全集數據存在且可分析的前提下,全量是首選。全量>好的采樣>不均勻的大量。
再說混雜性由於精確性。擁抱混雜性(這樣一種客觀現象)的態度是不錯的,但不等於喜歡混雜性。數據清洗比以前更重要,數據失去辨識度、失去有效性,就該扔了。老舍引用谷歌PeterNovig的結論,少數高質量數據+復雜演算法被大量低質量數據+簡單演算法打敗,來證明這一思維。Peter的研究是Web文本分析,確實成立。但谷歌的深度學習已經證明這個不完全對,對於信息維度豐富的語音、圖片數據,需要大量數據+復雜模型。
最後是要相關性不要因果性。對於大批量的小決策,相關性是有用的,如亞馬遜的個性化推薦;而對於小批量的大決策,因果性依然重要。就如中葯,只到達了相關性這一步,但它沒有可解釋性,無法得出是有些樹皮和蟲殼的因導致治癒的果。西葯在發現相關性後,要做隨機對照試驗,把所有可能導致「治癒的果」的干擾因素排除,獲得因果性和可解釋性。在商業決策上也是一樣,相關性只是開始,它取代了拍腦袋、直覺獲得的假設,而後面驗證因果性的過程仍然重要。
把大數據的一些分析結果落實在相關性上也是倫理的需要,動機不代錶行為。預測性分析也一樣,不然警察會預測人犯罪,保險公司會預測人生病,社會很麻煩。大數據演算法極大影響了我們的生活,有時候會覺得挺悲哀的,是演算法覺得了你貸不貸得到款,谷歌每調整一次演算法,很多在線商業就會受到影響,因為被排到後面去了。
下面時間不多了,關於價值維度,我貼一些以前講過的東西。大數據思想中很重要的一點是決策智能化之外,還有數據本身的價值化。這一點不贅述了,引用馬雲的話吧,「信息的出發點是我認為我比別人聰明,數據的出發點是認為別人比我聰明;信息是你拿到數據編輯以後給別人,而數據是你搜集數據以後交給比你更聰明的人去處理。」大數據能做什麼?價值這個V怎麼映射到其他3V和時空象限中?我畫了個圖:
再貼上解釋。「見微」與「知著」在Volume的空間維度。小數據見微,作個人刻畫,我曾用《一代宗師》中「見自己」形容之;大數據知著,反映自然和群體的特徵和趨勢,我以「見天地、見眾生」比喻之。「著」推動「微」(如把人群細分為buckets),又拉動「微」(如推薦相似人群的偏好給個人)。「微」與「著」又反映了時間維度,數據剛產生時個人價值最大,隨著時間decay最後退化為以集合價值為主。
「當下」和「皆明」在Velocity的時間維度。當下在時間原點,是閃念之間的實時智慧,結合過往(負軸)、預測未來(正軸),可以皆明,即獲得perpetual智慧。《西遊記》里形容真假孫悟空,一個是「知天時、通變化」,一個是「知前後、萬物皆明」,正好對應。為達到皆明,需要全量分析、預測分析和處方式分析(prescriptiveanalytics,為讓設定的未來發生,需要採取什麼樣的行動)。
「辨訛」和「曉意」在Variety的空間維度。基於大體量、多源異質的數據,辨訛過濾雜訊、查漏補缺、去偽存真。曉意達到更高境界,從非結構數據中提取語義、使機器能夠窺探人的思想境界、達到過去結構化數據分析不能達到之高度。
先看知著,對宏觀現象規律的研究早已有之,大數據的知著有兩個新特點,一是從采樣到全量,比如央視去年「你幸福嗎」的調查,是街頭的采樣,前不久《中國經濟生活大調查》關於幸福城市排名的結論,是基於10萬份問卷(17個問題)的采樣,而清華行為與大數據實驗室做的幸福指數(繼挺兄、我、還有多位本群群友參與),是基於新浪微博數據的全集(托老王的福),這些數據是人們的自然表達(而不是面對問卷時的被動應對),同時又有上下文語境,因此更真實、也更有解釋性。北上廣不幸福,是因為空氣還是房價或教育,在微博上更容易傳播的積極情緒還是消極情緒,數據告訴你答案。《中國經濟生活大調查》說「再小的聲音我們都聽得見」,是過頭話,采樣和傳統的統計分析方法對數據分布採用一些簡化的模型,這些模型把異常和長尾忽略了,全量的分析可以看到黑天鵝的身影,聽到長尾的聲音。
另一個特點是從定性到定量。計算社會學就是把定量分析應用到社會學,已經有一批數學家、物理學家成了經濟學家、寬客,現在他們也可以選擇成為社會學家。國泰君安3I指數也是一個例子,它通過幾十萬用戶的數據,主要是反映投資活躍程度和投資收益水平的指標,建立一個量化模型來推知整體投資景氣度。
再看見微,我認為大數據的真正差異化優勢在微觀。自然科學是先宏觀、具體,進入到微觀和抽象,這時大數據就很重要了。我們更關注社會科學,那是先微觀、具體,再宏觀、抽象,許小年索性認為宏觀經濟學是偽科學。如果市場是個體行為的總和,我們原來看到是一張抽象派的畫,看不懂,通過客戶細分慢慢可以形成一張大致看得懂的現實圖景,不過是馬賽克的,再通過微分、甚至定位個人,形成高清圖。我們每一個人現在都生活在零售商的bucket中(前面說的樂購創造了這個概念),最簡單的是高收入、低收入這類反映背景的,再有就是反映行為和生活方式的,如「精打細算」、「右鍵點擊一族」(使用右鍵的比較techsavvy)。反過來我們消費者也希望能夠獲得個性化的尊崇,Nobody wants to be nobody today。
了解並掌握客戶比以往任何時候都更重要。奧巴馬贏在大數據上,就是因為他知道西岸40-49歲女性的男神是喬治·克魯尼,東岸同樣年齡段女性的偶像則是莎拉·傑西卡·帕克(《慾望都市》的主角),他還要更細分,搖擺州每一個郡每一個年齡段每一個時間段在看什麼電視,搖擺州(俄亥俄)1%選民隨時間變化的投票傾向,搖擺選民在Reddit上還是Facebook上,都在其掌握之中。
對於企業來說,要從以產品為中心,轉到以客戶(買單者)甚至用戶(使用者)為中心,從關注用戶背景到關注其行為、意圖和意向,從關注交易形成轉到關注每一個交互點/觸點,用戶是從什麼路徑發現我的產品的,決定之前又做了什麼,買了以後又有什麼反饋,是通過網頁、還是QQ、微博或是微信。
再講第三個,當下。時間是金錢,股票交易就是快魚吃慢魚,用免費股票交易軟體有幾秒的延遲,而佔美國交易量60-70%的高頻程序化交易則要發現毫秒級、低至1美分的交易機會。時間又是生命,美國國家大氣與海洋管理局的超級計算機在日本311地震後9分鍾發出海嘯預警,已經太晚。時間還是機會。現在所謂的購物籃分析用的其實並不是真正的購物籃,而是結帳完的小票,真正有價值的是當顧客還拎著購物籃,在瀏覽、試用、選擇商品的時候,在每一個觸點影響他/她的選擇。數據價值具有半衰期,最新鮮的時候個性化價值最大,漸漸退化到只有集合價值。當下的智慧是從刻舟求劍到見時知幾,原來10年一次的人口普查就是刻舟求劍,而現在東莞一出事網路遷徙圖就反映出來了。當然,當下並不一定是完全准確的,其實如果沒有更多、更久的數據,匆忙對網路遷徙圖解讀是可能陷入誤區的。
第四個,皆明。時間有限,就簡單說了。就是從放馬後炮到料事如神(predictiveanalytics),從料事如神到運籌帷幄(prescriptiveanalytics),只知道有東風是預測分析,確定要借箭的目標、並給出處方利用草船來借,就是處方性分析。我們現在要提高響應度、降低流失率、吸引新客戶,需要處方性分析。
辨訛就是利用多源數據過濾雜訊、查漏補缺和去偽存真。20多個省市的GDP之和超過全國的GDP就是一個例子,我們的GPS有幾十米的誤差,但與地圖數據結合就能做到精確,GPS在城市的高樓中沒有信號,可以與慣性導航結合。
曉意涉及到大數據下的機器智能,是個大問題,也不展開了。貼一段我的文章:有人說在涉及「曉意」的領域人是無法替代的。這在前大數據時代是事實。《點球成金(Moneyball)》講的是數量化分析和預測對棒球運動的貢獻,它在大數據背景下出現了傳播的誤區:一、它其實不是大數據,而是早已存在的數據思維和方法;二、它刻意或無意忽略了球探的作用。從讀者看來,奧克蘭競技隊的總經理比利·比恩用數量化分析取代了球探。而事實是,在運用數量化工具的同時,比恩也增加了球探的費用,軍功章里有機器的一半,也有人的一半,因為球探對運動員定性指標(如競爭性、抗壓力、意志力等)的衡量是少數結構化量化指標無法刻畫的。大數據改變了這一切。人的數字足跡的無意識記錄,以及機器學習(尤其是深度學習)曉意能力的增強,可能逐漸改變機器的劣勢。今年我們看到基於大數據的情感分析、價值觀分析和個人刻畫,當這些應用於人力資源,已經或多或少體現了球探承擔的。
⑵ 大數據計算體系的基本層次是什麼
大數據計算體系可歸納三個基本層次:數據應用系統,數據處理系統,數據存襪物儲系統.
總之,小數據,大集合就是按照某種數據集中起來並存放二級存儲器中的一種方式。這告孫液種數據集合還有著一定的特點,比如盡量不出現重復的情況。
⑶ 大數據需要學習什麼樣的知識
看從事大數抄據的哪個部分。
大數據分三個部分,數據分析、大數據平台的中台和大數據底層處理。
數據分析:統計專業+一門實際業務+計算機數據分析工具。可以參考研究生BA專業。
數據中台:CS專業+大數據方向的演算法 (並行計算、機器學習一類的)。研究生起步。
數據底層處理:一定的軟體基礎+資料庫應用。本科即可。
本科不要學大數據專業,四年學不出來,幹啥啥不行。
⑷ 大數據的核心思想是什麼
1、利用所有的數據,而不再僅僅依靠部分數據,即不是隨機樣本,而是全體數據。
2、唯有接受不精確性,才有機會打開一扇新的世界之窗,即不是精確性,而是混雜性。
3、不是所有的事情都必須知道現象背後的原因,而是要讓數據自己「發聲」,即不是因果關系,而是相關關系。
大數據時代需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。
大數據技術的戰略意義不在於掌握龐大的數據信息,而在於對這些含有意義的數據進行專業化處理。換而言之,如果把大數據比作一種產業,那麼這種產業實現盈利的關鍵,在於提高對數據的「加工能力」,通過「加工」實現數據的「增值」。
⑸ 大數據核心技術有哪些
大數據技術的體系龐大且復雜,基礎的技術包含數據的採集、數據預處理、分布式存儲、NoSQL資料庫、數據倉庫、機器學習、並行計算、可視化等各種技術范疇和不同的技術層面。首先給出一個通用化的大數據處理框架,主要分為下面幾個方面:數據採集與預處理、數據存儲、數據清洗、數據查詢分析和數據可視化。
一、數據採集與預處理
對於各種來源的數據,包括移動互聯網數據、社交網路的數據等,這些結構化和非結構化的海量數據是零散的,也就是所謂的數據孤島,此時的這些數據並沒有什麼意義,數據採集就是將這些數據寫入數據倉庫中,把零散的數據整合在一起,對這些數據綜合起來進行分析。數據採集包括文件日誌的採集、資料庫日誌的採集、關系型資料庫的接入和應用程序的接入等。在數據量比較小的時候,可以寫個定時的腳本將日誌寫入存儲系統,但隨著數據量的增長,這些方法無法提供數據安全保障,並且運維困難,需要更強壯的解決方案。
Flume NG作為實時日誌收集系統,支持在日誌系統中定製各類數據發送方,用於收集數據,同時,對數據進行簡單處理,並寫到各種數據接收方(比如文本,HDFS,Hbase等)。Flume NG採用的是三層架構:Agent層,Collector層和Store層,每一層均可水平拓展。其中Agent包含Source,Channel和 Sink,source用來消費(收集)數據源到channel組件中,channel作為中間臨時存儲,保存所有source的組件信息,sink從channel中讀取數據,讀取成功之後會刪除channel中的信息。
NDC,Netease Data Canal,直譯為網易數據運河系統,是網易針對結構化資料庫的數據實時遷移、同步和訂閱的平台化解決方案。它整合了網易過去在數據傳輸領域的各種工具和經驗,將單機資料庫、分布式資料庫、OLAP系統以及下游應用通過數據鏈路串在一起。除了保障高效的數據傳輸外,NDC的設計遵循了單元化和平台化的設計哲學。
Logstash是開源的伺服器端數據處理管道,能夠同時從多個來源採集數據、轉換數據,然後將數據發送到您最喜歡的 「存儲庫」 中。一般常用的存儲庫是Elasticsearch。Logstash 支持各種輸入選擇,可以在同一時間從眾多常用的數據來源捕捉事件,能夠以連續的流式傳輸方式,輕松地從您的日誌、指標、Web 應用、數據存儲以及各種 AWS 服務採集數據。
Sqoop,用來將關系型資料庫和Hadoop中的數據進行相互轉移的工具,可以將一個關系型資料庫(例如Mysql、Oracle)中的數據導入到Hadoop(例如HDFS、Hive、Hbase)中,也可以將Hadoop(例如HDFS、Hive、Hbase)中的數據導入到關系型資料庫(例如Mysql、Oracle)中。Sqoop 啟用了一個 MapRece 作業(極其容錯的分布式並行計算)來執行任務。Sqoop 的另一大優勢是其傳輸大量結構化或半結構化數據的過程是完全自動化的。
流式計算是行業研究的一個熱點,流式計算對多個高吞吐量的數據源進行實時的清洗、聚合和分析,可以對存在於社交網站、新聞等的數據信息流進行快速的處理並反饋,目前大數據流分析工具有很多,比如開源的strom,spark streaming等。
Strom集群結構是有一個主節點(nimbus)和多個工作節點(supervisor)組成的主從結構,主節點通過配置靜態指定或者在運行時動態選舉,nimbus與supervisor都是Storm提供的後台守護進程,之間的通信是結合Zookeeper的狀態變更通知和監控通知來處理。nimbus進程的主要職責是管理、協調和監控集群上運行的topology(包括topology的發布、任務指派、事件處理時重新指派任務等)。supervisor進程等待nimbus分配任務後生成並監控worker(jvm進程)執行任務。supervisor與worker運行在不同的jvm上,如果由supervisor啟動的某個worker因為錯誤異常退出(或被kill掉),supervisor會嘗試重新生成新的worker進程。
當使用上游模塊的數據進行計算、統計、分析時,就可以使用消息系統,尤其是分布式消息系統。Kafka使用Scala進行編寫,是一種分布式的、基於發布/訂閱的消息系統。Kafka的設計理念之一就是同時提供離線處理和實時處理,以及將數據實時備份到另一個數據中心,Kafka可以有許多的生產者和消費者分享多個主題,將消息以topic為單位進行歸納;Kafka發布消息的程序稱為procer,也叫生產者,預訂topics並消費消息的程序稱為consumer,也叫消費者;當Kafka以集群的方式運行時,可以由一個服務或者多個服務組成,每個服務叫做一個broker,運行過程中procer通過網路將消息發送到Kafka集群,集群向消費者提供消息。Kafka通過Zookeeper管理集群配置,選舉leader,以及在Consumer Group發生變化時進行rebalance。Procer使用push模式將消息發布到broker,Consumer使用pull模式從broker訂閱並消費消息。Kafka可以和Flume一起工作,如果需要將流式數據從Kafka轉移到hadoop,可以使用Flume代理agent,將Kafka當做一個來源source,這樣可以從Kafka讀取數據到Hadoop。
Zookeeper是一個分布式的,開放源碼的分布式應用程序協調服務,提供數據同步服務。它的作用主要有配置管理、名字服務、分布式鎖和集群管理。配置管理指的是在一個地方修改了配置,那麼對這個地方的配置感興趣的所有的都可以獲得變更,省去了手動拷貝配置的繁瑣,還很好的保證了數據的可靠和一致性,同時它可以通過名字來獲取資源或者服務的地址等信息,可以監控集群中機器的變化,實現了類似於心跳機制的功能。
二、數據存儲
Hadoop作為一個開源的框架,專為離線和大規模數據分析而設計,HDFS作為其核心的存儲引擎,已被廣泛用於數據存儲。
HBase,是一個分布式的、面向列的開源資料庫,可以認為是hdfs的封裝,本質是數據存儲、NoSQL資料庫。HBase是一種Key/Value系統,部署在hdfs上,克服了hdfs在隨機讀寫這個方面的缺點,與hadoop一樣,Hbase目標主要依靠橫向擴展,通過不斷增加廉價的商用伺服器,來增加計算和存儲能力。
Phoenix,相當於一個Java中間件,幫助開發工程師能夠像使用JDBC訪問關系型資料庫一樣訪問NoSQL資料庫HBase。
Yarn是一種Hadoop資源管理器,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。Yarn由下面的幾大組件構成:一個全局的資源管理器ResourceManager、ResourceManager的每個節點代理NodeManager、表示每個應用的Application以及每一個ApplicationMaster擁有多個Container在NodeManager上運行。
Mesos是一款開源的集群管理軟體,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等應用架構。
Redis是一種速度非常快的非關系資料庫,可以存儲鍵與5種不同類型的值之間的映射,可以將存儲在內存的鍵值對數據持久化到硬碟中,使用復制特性來擴展性能,還可以使用客戶端分片來擴展寫性能。
Atlas是一個位於應用程序與MySQL之間的中間件。在後端DB看來,Atlas相當於連接它的客戶端,在前端應用看來,Atlas相當於一個DB。Atlas作為服務端與應用程序通訊,它實現了MySQL的客戶端和服務端協議,同時作為客戶端與MySQL通訊。它對應用程序屏蔽了DB的細節,同時為了降低MySQL負擔,它還維護了連接池。Atlas啟動後會創建多個線程,其中一個為主線程,其餘為工作線程。主線程負責監聽所有的客戶端連接請求,工作線程只監聽主線程的命令請求。
Ku是圍繞Hadoop生態圈建立的存儲引擎,Ku擁有和Hadoop生態圈共同的設計理念,它運行在普通的伺服器上、可分布式規模化部署、並且滿足工業界的高可用要求。其設計理念為fast analytics on fast data。作為一個開源的存儲引擎,可以同時提供低延遲的隨機讀寫和高效的數據分析能力。Ku不但提供了行級的插入、更新、刪除API,同時也提供了接近Parquet性能的批量掃描操作。使用同一份存儲,既可以進行隨機讀寫,也可以滿足數據分析的要求。Ku的應用場景很廣泛,比如可以進行實時的數據分析,用於數據可能會存在變化的時序數據應用等。
在數據存儲過程中,涉及到的數據表都是成千上百列,包含各種復雜的Query,推薦使用列式存儲方法,比如parquent,ORC等對數據進行壓縮。Parquet 可以支持靈活的壓縮選項,顯著減少磁碟上的存儲。
三、數據清洗
MapRece作為Hadoop的查詢引擎,用於大規模數據集的並行計算,」Map(映射)」和」Rece(歸約)」,是它的主要思想。它極大的方便了編程人員在不會分布式並行編程的情況下,將自己的程序運行在分布式系統中。
隨著業務數據量的增多,需要進行訓練和清洗的數據會變得越來越復雜,這個時候就需要任務調度系統,比如oozie或者azkaban,對關鍵任務進行調度和監控。
Oozie是用於Hadoop平台的一種工作流調度引擎,提供了RESTful API介面來接受用戶的提交請求(提交工作流作業),當提交了workflow後,由工作流引擎負責workflow的執行以及狀態的轉換。用戶在HDFS上部署好作業(MR作業),然後向Oozie提交Workflow,Oozie以非同步方式將作業(MR作業)提交給Hadoop。這也是為什麼當調用Oozie 的RESTful介面提交作業之後能立即返回一個JobId的原因,用戶程序不必等待作業執行完成(因為有些大作業可能會執行很久(幾個小時甚至幾天))。Oozie在後台以非同步方式,再將workflow對應的Action提交給hadoop執行。
Azkaban也是一種工作流的控制引擎,可以用來解決有多個hadoop或者spark等離線計算任務之間的依賴關系問題。azkaban主要是由三部分構成:Relational Database,Azkaban Web Server和Azkaban Executor Server。azkaban將大多數的狀態信息都保存在MySQL中,Azkaban Web Server提供了Web UI,是azkaban主要的管理者,包括project的管理、認證、調度以及對工作流執行過程中的監控等;Azkaban Executor Server用來調度工作流和任務,記錄工作流或者任務的日誌。
流計算任務的處理平台Sloth,是網易首個自研流計算平台,旨在解決公司內各產品日益增長的流計算需求。作為一個計算服務平台,其特點是易用、實時、可靠,為用戶節省技術方面(開發、運維)的投入,幫助用戶專注於解決產品本身的流計算需求。
四、數據查詢分析
Hive的核心工作就是把SQL語句翻譯成MR程序,可以將結構化的數據映射為一張資料庫表,並提供 HQL(Hive SQL)查詢功能。Hive本身不存儲和計算數據,它完全依賴於HDFS和MapRece。可以將Hive理解為一個客戶端工具,將SQL操作轉換為相應的MapRece jobs,然後在hadoop上面運行。Hive支持標準的SQL語法,免去了用戶編寫MapRece程序的過程,它的出現可以讓那些精通SQL技能、但是不熟悉MapRece 、編程能力較弱與不擅長Java語言的用戶能夠在HDFS大規模數據集上很方便地利用SQL 語言查詢、匯總、分析數據。
Hive是為大數據批量處理而生的,Hive的出現解決了傳統的關系型資料庫(MySql、Oracle)在大數據處理上的瓶頸 。Hive 將執行計劃分成map->shuffle->rece->map->shuffle->rece…的模型。如果一個Query會被編譯成多輪MapRece,則會有更多的寫中間結果。由於MapRece執行框架本身的特點,過多的中間過程會增加整個Query的執行時間。在Hive的運行過程中,用戶只需要創建表,導入數據,編寫SQL分析語句即可。剩下的過程由Hive框架自動的完成。
Impala是對Hive的一個補充,可以實現高效的SQL查詢。使用Impala來實現SQL on Hadoop,用來進行大數據實時查詢分析。通過熟悉的傳統關系型資料庫的SQL風格來操作大數據,同時數據也是可以存儲到HDFS和HBase中的。Impala沒有再使用緩慢的Hive+MapRece批處理,而是通過使用與商用並行關系資料庫中類似的分布式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),可以直接從HDFS或HBase中用SELECT、JOIN和統計函數查詢數據,從而大大降低了延遲。Impala將整個查詢分成一執行計劃樹,而不是一連串的MapRece任務,相比Hive沒了MapRece啟動時間。
Hive 適合於長時間的批處理查詢分析,而Impala適合於實時互動式SQL查詢,Impala給數據人員提供了快速實驗,驗證想法的大數據分析工具,可以先使用Hive進行數據轉換處理,之後使用Impala在Hive處理好後的數據集上進行快速的數據分析。總的來說:Impala把執行計劃表現為一棵完整的執行計劃樹,可以更自然地分發執行計劃到各個Impalad執行查詢,而不用像Hive那樣把它組合成管道型的map->rece模式,以此保證Impala有更好的並發性和避免不必要的中間sort與shuffle。但是Impala不支持UDF,能處理的問題有一定的限制。
Spark擁有Hadoop MapRece所具有的特點,它將Job中間輸出結果保存在內存中,從而不需要讀取HDFS。Spark 啟用了內存分布數據集,除了能夠提供互動式查詢外,它還可以優化迭代工作負載。Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數據集。
Nutch 是一個開源Java 實現的搜索引擎。它提供了我們運行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬蟲。
Solr用Java編寫、運行在Servlet容器(如Apache Tomcat或Jetty)的一個獨立的企業級搜索應用的全文搜索伺服器。它對外提供類似於Web-service的API介面,用戶可以通過http請求,向搜索引擎伺服器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,並得到XML格式的返回結果。
Elasticsearch是一個開源的全文搜索引擎,基於Lucene的搜索伺服器,可以快速的儲存、搜索和分析海量的數據。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
還涉及到一些機器學習語言,比如,Mahout主要目標是創建一些可伸縮的機器學習演算法,供開發人員在Apache的許可下免費使用;深度學習框架Caffe以及使用數據流圖進行數值計算的開源軟體庫TensorFlow等,常用的機器學習演算法比如,貝葉斯、邏輯回歸、決策樹、神經網路、協同過濾等。
五、數據可視化
對接一些BI平台,將分析得到的數據進行可視化,用於指導決策服務。主流的BI平台比如,國外的敏捷BI Tableau、Qlikview、PowrerBI等,國內的SmallBI和新興的網易有數(可點擊這里免費試用)等。
在上面的每一個階段,保障數據的安全是不可忽視的問題。
基於網路身份認證的協議Kerberos,用來在非安全網路中,對個人通信以安全的手段進行身份認證,它允許某實體在非安全網路環境下通信,向另一個實體以一種安全的方式證明自己的身份。
控制許可權的ranger是一個Hadoop集群許可權框架,提供操作、監控、管理復雜的數據許可權,它提供一個集中的管理機制,管理基於yarn的Hadoop生態圈的所有數據許可權。可以對Hadoop生態的組件如Hive,Hbase進行細粒度的數據訪問控制。通過操作Ranger控制台,管理員可以輕松的通過配置策略來控制用戶訪問HDFS文件夾、HDFS文件、資料庫、表、欄位許可權。這些策略可以為不同的用戶和組來設置,同時許可權可與hadoop無縫對接。
⑹ 如何用大數據計算思想設計網格化pm2.5公眾發布系統
大數據技術具有定位、搜索、挖掘和深度分析功能,可以為預警分析提供科學方法,而網氏梁態格化管理技術則把活動區域劃分為一個個網格,依託統一的城市網格化管理平台對網格實時巡查,主動發現問題,實現應渣笑急處置。因殲源此,運用大數據和網格化技術保障城市公共安全,可以不幹擾城市正常運轉和市民正常生活,是比較經濟、科學和可行的選擇。金鵬信息網格化軟體
⑺ 設計一個大數據實時分析平台要怎麼做呢
PetaBase-V作為Vertica基於億信分析產品的定製版,提供面向大數據的實時分析服務,採用無共享大規模並行架構(MPP),可線性擴展集群的計算能力和數據處理容量,基於列式資料庫技術,使 PetaBase-V 擁有高性能、高擴展性、高壓縮率、高健壯性等特點,可完美解決報表計算慢和明細數據查詢等性能問題。
大數據實時分析平台(以下簡稱PB-S),旨在提供數據端到端實時處理能力(毫秒級/秒級/分鍾級延遲),可以對接多數據源進行實時數據抽取,可以為多數據應用場景提供實時數據消費。作為現代數倉的一部分,PB-S可以支持實時化、虛擬化、平民化、協作化等能力,讓實時數據應用開發門檻更低、迭代更快、質量更好、運行更穩、運維更簡、能力更強。
整體設計思想
我們針對用戶需求的四個層面進行了統一化抽象:
統一數據採集平台
統一流式處理平台
統一計算服務平台
統一數據可視化平台
同時,也對存儲層保持了開放的原則,意味著用戶可以選擇不同的存儲層以滿足具體項目的需要,而又不破壞整體架構設計,用戶甚至可以在Pipeline中同時選擇多個異構存儲提供支持。下面分別對四個抽象層進行解讀。
1)統一數據採集平台
統一數據採集平台,既可以支持不同數據源的全量抽取,也可以支持增強抽取。其中對於業務資料庫的增量抽取會選擇讀取資料庫日誌,以減少對業務庫的讀取壓力。平台還可以對抽取的數據進行統一處理,然後以統一格式發布到數據匯流排上。這里我們選擇一種自定義的標准化統一消息格式UMS(Unified Message Schema)做為 統一數據採集平台和統一流式處理平台之間的數據層面協議。
UMS自帶Namespace信息和Schema信息,這是一種自定位自解釋消息協議格式,這樣做的好處是:
整個架構無需依賴外部元數據管理平台;
消息和物理媒介解耦(這里物理媒介指如Kafka的Topic, Spark Streaming的Stream等),因此可以通過物理媒介支持多消息流並行,和消息流的自由漂移。
平台也支持多租戶體系,和配置化簡單處理清洗能力。
2)統一流式處理平台
統一流式處理平台,會消費來自數據匯流排上的消息,可以支持UMS協議消息,也可以支持普通JSON格式消息。同時,平台還支持以下能力:
支持可視化/配置化/SQL化方式降低流式邏輯開發/部署/管理門檻
支持配置化方式冪等落入多個異構目標庫以確保數據的最終一致性
支持多租戶體系,做到項目級的計算資源/表資源/用戶資源等隔離
3)統一計算服務平台
統一計算服務平台,是一種數據虛擬化/數據聯邦的實現。平台對內支持多異構數據源的下推計算和拉取混算,也支持對外的統一服務介面(JDBC/REST)和統一查詢語言(SQL)。由於平台可以統一收口服務,因此可以基於平台打造統一元數據管理/數據質量管理/數據安全審計/數據安全策略等模塊。平台也支持多租戶體系。
4)統一數據可視化平台
統一數據可視化平台,加上多租戶和完善的用戶體系/許可權體系,可以支持跨部門數據從業人員的分工協作能力,讓用戶在可視化環境下,通過緊密合作的方式,更能發揮各自所長來完成數據平台最後十公里的應用。
以上是基於整體模塊架構之上,進行了統一抽象設計,並開放存儲選項以提高靈活性和需求適配性。這樣的RTDP平台設計,體現了現代數倉的實時化/虛擬化/平民化/協作化等能力,並且覆蓋了端到端的OLPP數據流轉鏈路。
具體問題和解決思路
下面我們會基於PB-S的整體架構設計,分別從不同維度討論這個設計需要面對的問題考量和解決思路。
功能考量主要討論這樣一個問題:實時Pipeline能否處理所有ETL復雜邏輯?
我們知道,對於Storm/Flink這樣的流式計算引擎,是按每條處理的;對於Spark Streaming流式計算引擎,按每個mini-batch處理;而對於離線跑批任務來說,是按每天數據進行處理的。因此處理范圍是數據的一個維度(范圍維度)。
另外,流式處理面向的是增量數據,如果數據源來自關系型資料庫,那麼增量數據往往指的是增量變更數據(增刪改,revision);相對的批量處理面向的則是快照數據(snapshot)。因此展現形式是數據的另一個維度(變更維度)。
單條數據的變更維度,是可以投射收斂成單條快照的,因此變更維度可以收斂成范圍維度。所以流式處理和批量處理的本質區別在於,面對的數據范圍維度的不同,流式處理單位為「有限范圍」,批量處理單位為「全表范圍」。「全表范圍」數據是可以支持各種SQL運算元的,而「有限范圍」數據只能支持部分SQL運算元。
復雜的ETL並不是單一運算元,經常會是由多個運算元組合而成,由上可以看出單純的流式處理並不能很好的支持所有ETL復雜邏輯。那麼如何在實時Pipeline中支持更多復雜的ETL運算元,並且保持時效性?這就需要「有限范圍」和「全表范圍」處理的相互轉換能力。
設想一下:流式處理平台可以支持流上適合的處理,然後實時落不同的異構庫,計算服務平台可以定時批量混算多源異構庫(時間設定可以是每隔幾分鍾或更短),並將每批計算結果發送到數據匯流排上繼續流轉,這樣流式處理平台和計算服務平台就形成了計算閉環,各自做擅長的運算元處理,數據在不同頻率觸發流轉過程中進行各種運算元轉換,這樣的架構模式理論上即可支持所有ETL復雜邏輯。
2)質量考量
上面的介紹也引出了兩個主流實時數據處理架構:Lambda架構和Kappa架構,具體兩個架構的介紹網上有很多資料,這里不再贅述。Lambda架構和Kappa架構各有其優劣勢,但都支持數據的最終一致性,從某種程度上確保了數據質量,如何在Lambda架構和Kappa架構中取長補短,形成某種融合架構,這個話題會在其他文章中詳細探討。
當然數據質量也是個非常大的話題,只支持重跑和回灌並不能完全解決所有數據質量問題,只是從技術架構層面給出了補數據的工程方案。關於大數據數據質量問題,我們也會起一個新的話題討論。
3)穩定考量
這個話題涉及但不限於以下幾點,這里簡單給出應對的思路:
高可用HA
整個實時Pipeline鏈路都應該選取高可用組件,確保理論上整體高可用;在數據關鍵鏈路上支持數據備份和重演機制;在業務關鍵鏈路上支持雙跑融合機制
SLA保障
在確保集群和實時Pipeline高可用的前提下,支持動態擴容和數據處理流程自動漂移
彈性反脆弱
? 基於規則和演算法的資源彈性伸縮
? 支持事件觸發動作引擎的失效處理
監控預警
集群設施層面,物理管道層面,數據邏輯層面的多方面監控預警能力
自動運維
能夠捕捉並存檔缺失數據和處理異常,並具備定期自動重試機制修復問題數據
上游元數據變更抗性
?上游業務庫要求兼容性元數據變更
? 實時Pipeline處理顯式欄位
4)成本考量
這個話題涉及但不限於以下幾點,這里簡單給出應對的思路:
人力成本
通過支持數據應用平民化降低人才人力成本
資源成本
通過支持動態資源利用降低靜態資源佔用造成的資源浪費
運維成本
通過支持自動運維/高可用/彈性反脆弱等機制降低運維成本
試錯成本
通過支持敏捷開發/快速迭代降低試錯成本
5)敏捷考量
敏捷大數據是一整套理論體系和方法學,在前文已有所描述,從數據使用角度來看,敏捷考量意味著:配置化,SQL化,平民化。
6)管理考量
數據管理也是一個非常大的話題,這里我們會重點關注兩個方面:元數據管理和數據安全管理。如果在現代數倉多數據存儲選型的環境下統一管理元數據和數據安全,是一個非常有挑戰的話題,我們會在實時Pipeline上各個環節平台分別考慮這兩個方面問題並給出內置支持,同時也可以支持對接外部統一的元數據管理平台和統一數據安全策略。
以上是我們探討的大數據實時分析平台PB-S的設計方案。
⑻ 大數據演算法學什麼
大數據演算法課程講授大數據上的基本演算法設計思想等內容,課程共設計十講,包含有大數據演算法概述、亞線性演算法、亞線性演算法例析等。
授課目標
1、讓聽課的學習者接觸到和傳統演算法課程不一樣的演算法設計與分析思路,並且以較新的研究成果為導向祥謹慧謹答,讓參與該課程學習的同學了解大數據演算法的前沿知識。
2、通過大數據演算法課程課程的學習,使學生掌握大數據演算法設計的基本思想,並通過課程的作業,掌握大數據演算法設計與分析的技術。