『壹』 值得一試的4個大數據工具!
編譯 | Harris來源 | 機房360
如今,大數據越來越重要,因為企業需要處理來自多個來源的不斷增長的存儲數據。
採用大數據可以稱之為一場完美風暴。廉價的存儲和大量的結構化和非結構化數據的大量湧入,導致了諸多的大型數據工具得以開發,幫助企業「解鎖」他們積累的數據,從客戶記錄到產品性能的結果等更多的數據。
像傳統的商業智能(BI),這些新的大數據工具可以分析過去的趨勢,並幫助企業識別重要模式,如特定的銷售趨勢。許多大數據工具現在提供了一個新一代預測和規范性的見解,以及深埋在企業數據中心的所有數據。
對於人們面臨的挑戰,調查機構Gartner公司分析師道格·蘭尼表示,人們還是不要用擴展的基礎設施來處理所有這些數據,而是從各種數據本身進行處理。
「對於真正的挑戰,企業對自己和客戶的交易數據進行處理、整合,並共同構建和理解輸入,加上來自合作夥伴和供應商的數據,還有一些外源性數據,如社會媒體的開放數據和聚合數據等等,而這些只是觸及了表面。」蘭尼在一封電子郵件中說表示。
大數據是一個大問題:您的網路准備好了嗎?
盡管Gartner的客戶端通過一個2比1的比例說明各種數據是一個更大的問題,對他們來說數據增長的速度越來越快,而數據處理供應商將會繼續提供資金更大、更快的解決方案。
ConstellationResearch公司分析師道格·亨森特表示,大數據解決方案肯定是不斷發展變化的。
「在我的書中,2014年是發布sqlHadoop公告的一年,但今年企業和銷售商開始認識到大數據的機會不只是擴大傳統的BI和資料庫。」亨森特說,「因此,ApacheSpark開源框架和其他的分析方案已在2015年超越了SQL。2015年,數百家供應商和大公司開始採用ApacheSpark開源框架,IIBM公司擁抱是倡導其他分析選項最明顯的廠商,而其他致力於數據集成和大數據平台的很多企業加入這個行列。」
事實上,大數據浪潮似乎來臨,每天都會供應商推出的各種解決方案,其中也包括一些相對全面的設計。盡管很難得到一個全面的名單,這四個工具應該出在用戶的應用清單中。
(1)數據科學家的H2O.ai
H2O.ai是初創公司Oxdata在2014年底推出的一個獨立開源機器學習平台,主要服務於數據科學家和開發者,為其應用提供快速機器學習引擎。Oxdata公司表示,可以在商用硬體上對任何來源(如Hadoop,SQL)的數據進行處理分析,甚至在上千個網路節點或亞馬遜的AWS雲運行。個人可以嘗試並繼續免費使用H2O.ai。Oxdata公司將收取企業用戶的費用。
「很多公司使用Spark代替Hadoop短期記憶,這就像大數據的內存一樣。」H2O公司市場營銷和增長副總裁奧列格·羅格斯科說,「在讀取你的短期記憶方面,h20.ai的功能超越了Spark,基本上提供了超快速的分析能力。」
羅格斯科說,H2O.ai是旨在提供預測分析的數據工具的一個新品種。他指出,SQL幫助推動了描述性數據分析的早期階段或「告訴我發生了什麼」,其次是「預測期」的產品,看看發生了什麼事,盡量幫助客戶預測接下來會發生什麼-例如:庫存用完或產品突破等。
「我們在未來幾年將看到第三個階段是指令性的階段發揮作用,這個系統說,『這是我的教訓,我認為未來會發生什麼,你應該最大限度地實現目標。』」羅格斯科說,他還指出,谷歌地圖的主動建議替代路線的能力就是一個規范性解決方案的例子。
H20.ai將自己定位為各種行業數據科學家使用的一個預測工具和「盒子」。例如,網路巨頭思科公司有6萬款預測購買決策的模型,該公司使用H2O.ai對這些模型評分。思科公司首席數據科學家表示,「其結果是太棒了,我們看到H2O.ai比我們的同類產品的性能要好3到7倍。在單獨建模評分方面,h2o.ai環境是upwards的10到15倍。」
(2)ThoughtSpot3–大數據應用
藉助谷歌公司這樣的搜索引擎,很容易在網上搜到用戶需要的社交數據和網路數據,但企業數據一般難以查找,也更難以利用。為此,7位工程師共同成立了ThoughtSpot公司,目標是開發一個類似於谷歌的搜索引擎,用於查找商業數據。
該公司在谷歌公司成立初期就為其提供硬體設備,在企業啟用防火牆後提供超快搜索功能。ThoughtSpot結合了新搜索引擎的應用,它的功能是通過一個快速內存資料庫來搜尋海量信息。該公司還計劃提供一個基於雲的服務。
ThoughtSpot3起始售價為90000美元,是一種為企業快速尋找大數據的數據科學家依賴的工具。「我們已經看到企業使用該產品的數據科學家正在增加。」ThoughtSpot公司營銷副總裁史葛霍爾頓說,「二十億人都在搜索,但在工作中,我們仍然依賴於數據專家。」
霍爾頓在加利福尼亞公司總部PaloAlto進行了一個演示,顯示系統使用熟悉的搜索欄界面是如何工作的.剛剛發布的ThoughtSpot3.0具有一些新功能,包括「DataRank」的工作方式,類似於谷歌的PageRank和typeahead。該軟體使用機器學習演算法建議的關鍵詞為客戶搜索,以加快這一進程。
Popcharts無疑是最酷的新功能。當你在搜索框中輸入「由東海岸銷售......」ThoughtSpot瞬間創建基於查詢相關的圖表,並利用機器學習給出10多個可以選擇的圖表。
另一個「即時」功能是AutoJoins,其目的是為一般都有數百個數據源的企業導航。AutoJoins使用ThoughtSpot的數據索引,通過索引模式和機器學習,以了解表格是否相關,並在一秒內呈現研究結果。
霍爾頓說,ThoughtSpot更側重於對歷史數據的傳統BI分析(速度超快,使用十分方便),其預測性和規范性分析功能會在未來的軟體中體現。
(3)Connotate軟體
Connotate公司是一家為美聯社、路透社、道瓊斯等大型公司對全球上千個網站的非結構化數據進行實時分類和分析的企業。在Web數據抽取和監控上,Connotate軟體是世界上最簡單、最合算的解決方案,以有效地利用海量數據,從中挖掘出對企業增長有價值的信息,並可以進行高度可擴展性的數據監控和數據收集。
Gartner公司分析師道格·萊尼表示,Connotate和BrightPlanet在他所列的大數據工具名單上,因為它們有助於從企業自身的資料庫和互聯網上收割和構建豐富多彩的內容。
「隨著數字化和經濟增長,企業認識到只關注自己的數據不再是萬無一失的創新良方,他們越來越多地轉向外源數據(即公司外部的數據)。」萊尼說。
Connotate公司表示,其從網頁抽取內容的專利技術遠遠超出了網頁抓取或自定義腳本。取而代之的是對於網站工作如何使用機器學習採用一種直觀的視覺理解,Connotate公司表示,使其內容提取「准確可靠,並且可擴展。」
據該公司介紹,Connotate平台」可以很容易處理成百上千的網站和百萬兆位元組。」並提供與業務相關的有針對性的信息。其提供的內容採集平均成本比傳統方法少55%。
例舉一個使用案例,Connotate幫助銷售情報提供者從數千個醫院網站提取聯系人資料(姓名,職務,電話,電子郵件和隸屬關系),並建立一個全國性的醫生檔案資料庫。
Connotate公司表示,其大數據解決方案賣給了幾家大型制葯公司,並沒有花費額外的硬體或IT資源。大數據提取的規模化,甚至可以提供50萬名醫生的數據。
(4)BrightPlanet工具
BrightPlanet公司也從網路中提取數據,該公司宣稱其搜索具有所謂的「深網」見解的能力。其深網可以挖掘那些具有密碼保護的網站和通常不會被傳統的搜索引擎索引的其他網站的數據。
BrightPlanet公司表示,其收集的數據條目數以百萬計,其中包括推特和新聞資料庫和醫學期刊的數據,並可以根據企業的具體需求和條件進行過濾。
該公司為使用該軟體的數據採集工程師提供一個免費的數據即服務(DaaS)咨詢,並介紹他們的服務是一個不錯的選擇。咨詢的目的是幫助企業數據中心找到合適的收集數據,並得到正確的格式,這樣客戶可以得到一個好主意的過程和結果。
最終用戶或客戶可以選擇哪些網站收獲的內容。反過來,BrightPlanet公司又將其內容進行充實。例如,像在社交媒體網站評論這樣的非結構化數據,通過一個自定義格式設計,使其在更便於使用的客戶端提交。
end
『貳』 Spark之我看什麼是RDD
一般來講,對於陌生的名詞,大家的第一個反應都是「What is it?」。
RDD是Spark的核心內容,在Spark的官方文檔中解釋如下:RDD is a fault-tolerant collection of elements that can be operated on in parallel。由此可見,其中有兩個關鍵詞:fault-tolerant & in parallel。首先,容錯性是RDD的一個重要特性;其次,它是並行計算的數據。
RDD的中文解釋為:彈性分布式數據集,全稱Resilient Distributed Datasets。賓語是dataset,即內存中的資料庫。RDD 只讀、可分區,這個數據集的全部或部分可以緩存在內存中,在多次計算間重用。 所謂彈性,是指內存不夠時可以與磁碟進行交換。這涉及到了RDD的另一特性:內存計算,就是將數據保存到內存中。同時,為解決內存容量限制問題,Spark為我們提供了最大的自由度,所有數據均可由我們來進行cache的設置,包括是否cache和如何cache。
(關於cache的設置以及Spark的一些基礎概念,http://www.dataguru.cn/forum.php?mod=viewthread&tid=295317中解釋得很詳細。)
如果看到這里,你的思維里對RDD還是沒有任何概念的話,或許可以參照我的形象化理解:RDD,就是一個被武裝起來的數據集。
主體:a、由源數據分割而來,源碼中對應splits變數;
武器有下:b、數據集體內包含了它本身的「血統」信息,即dependencies變數,存儲著它的父RDD及兩者關系;
c、計算函數,即其與父RDD的轉化方式,對應源碼中的iterator(split) & compute函數;
d、一些關於如何分塊以及如何存放位置的元信息,eg:partitioner & preferredLocations。
有了這些武器,RDD的容錯機制也就顯而易見了。容錯,顧名思義就是在存在故障的情況下,計算機系統仍能正常工作。 容錯通常有兩種方式 checkpoint 和logging update , RDD 採用的是 logging update 。 Checkpoint( 數據檢查點)意味著要在各個機器間復制大數據,花費會很高,這種拷貝操作相當緩慢,而且會消耗大量的存儲資源,因此deserted。 Logging update( 記錄更新),僅支持粗顆粒度變換,也就是說,僅記錄在單個塊上執行的單個操作,然後創建某個RDD的變換序列存儲下來,數據丟失時,就可通過「血統」重新計算,恢復數據。Nevertheless,血緣鏈(變換序列)變得很長時,建議用戶此時建立一些數據檢查點加快容錯速度。(saveAstextFile方法手動設置)
『叄』 怎樣從spark rdd中得到某個元素,並將他賦值給一個對象
一般來講,對於陌生的名詞,大家的第一個反應都是「What is it?」.
RDD是Spark的核心內容,在Spark的官方文檔中解釋如下:RDD is a fault-tolerant collection of elements that can be operated on in parallel.由此可見,其中有兩個關鍵詞:fault-tolerant & in parallel.首先,容錯性是RDD的一個重要特性;其次,它是並行計算的數據.
RDD的中文解釋為:彈性分布式數據集,全稱Resilient Distributed Datasets.賓語是dataset,即內存中的資料庫.RDD 只讀、可分區,這個數據集的全部或部分可以緩存在內存中,在多次計算間重用.所謂彈性,是指內存不夠時可以與磁碟進行交換.這涉及到了RDD的另一特性:內存計算,就是將數據保存到內存中.同時,為解決內存容量限制問題,Spark為我們提供了最大的自由度,所有數據均可由我們來進行cache的設置,包括是否cache和如何cache.
如果看到這里,你的思維里對RDD還是沒有任何概念的話,或許可以參照我的形象化理RDD,就是一個被武裝起來的數據集.
『肆』 sparksql內存溢出怎麼解決
這個不太好辦,資料庫溢出說明數據量有點大。
『伍』 Spark和Redis結合使用到底有多大的性能提升呢45倍
Spark代表著下一代大數據處理技術,並且,借著開源演算法和計算節點集群分布式處理,Spark和Hadoop在執行的方式和速度已經遠遠的超過傳統單節點的技術架構。但Spark利用內存進行數據處理,這讓Spark的處理速度超過基於磁碟的Hadoop 100x 倍。
但Spark和內存資料庫Redis結合後可顯著的提高Spark運行任務的性能,這源於Redis優秀的數據結構和執行過程,從而減小數據處理的復雜性和開銷。Spark通過一個Redis連接器可以訪問Redis的數據和API,加速Spark處理數據。
Spark和Redis結合使用到底有多大的性能提升呢?結合這兩者來處理時序數據時可以提高46倍以上——而不是提高百分之四十五。
『陸』 科普Spark,Spark是什麼,如何使用Spark
科普Spark,Spark是什麼,如何使用Spark
1.Spark基於什麼演算法的分布式計算(很簡單)
2.Spark與MapRece不同在什麼地方
3.Spark為什麼比Hadoop靈活
4.Spark局限是什麼
5.什麼情況下適合使用Spark
Spark與Hadoop的對比
Spark的中間數據放到內存中,對於迭代運算效率更高。
Spark更適合於迭代運算比較多的ML和DM運算。因為在Spark裡面,有RDD的抽象概念。
Spark比Hadoop更通用
Spark提供的數據集操作類型有很多種,不像Hadoop只提供了Map和Rece兩種操作。比如map, filter, flatMap, sample, groupByKey, receByKey, union, join, cogroup, mapValues, sort,partionBy等多種操作類型,Spark把這些操作稱為Transformations。同時還提供Count, collect, rece, lookup, save等多種actions操作。
這些多種多樣的數據集操作類型,給給開發上層應用的用戶提供了方便。各個處理節點之間的通信模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。用戶可以命名,物化,控制中間結果的存儲、分區等。可以說編程模型比Hadoop更靈活。
不過由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。
容錯性
在分布式數據集計算時通過checkpoint來實現容錯,而checkpoint有兩種方式,一個是checkpoint data,一個是logging the updates。用戶可以控制採用哪種方式來實現容錯。
可用性
Spark通過提供豐富的Scala, Java,Python API及互動式Shell來提高可用性。
Spark與Hadoop的結合
Spark可以直接對HDFS進行數據的讀寫,同樣支持Spark on YARN。Spark可以與MapRece運行於同集群中,共享存儲資源與計算,數據倉庫Shark實現上借用Hive,幾乎與Hive完全兼容。
Spark的適用場景
Spark是基於內存的迭代計算框架,適用於需要多次操作特定數據集的應用場合。需要反復操作的次數越多,所需讀取的數據量越大,受益越大,數據量小但是計算密集度較大的場合,受益就相對較小(大資料庫架構中這是是否考慮使用Spark的重要因素)
由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。總的來說Spark的適用面比較廣泛且比較通用。
運行模式
本地模式
Standalone模式
Mesoes模式
yarn模式
Spark生態系統
Shark ( Hive on Spark): Shark基本上就是在Spark的框架基礎上提供和Hive一樣的H iveQL命令介面,為了最大程度的保持和Hive的兼容性,Shark使用了Hive的API來實現query Parsing和 Logic Plan generation,最後的PhysicalPlan execution階段用Spark代替Hadoop MapRece。通過配置Shark參數,Shark可以自動在內存中緩存特定的RDD,實現數據重用,進而加快特定數據集的檢索。同時,Shark通過UDF用戶自定義函數實現特定的數據分析學習演算法,使得SQL數據查詢和運算分析能結合在一起,最大化RDD的重復使用。
Spark streaming: 構建在Spark上處理Stream數據的框架,基本的原理是將Stream數據分成小的時間片斷(幾秒),以類似batch批量處理的方式來處理這小部分數據。Spark Streaming構建在Spark上,一方面是因為Spark的低延遲執行引擎(100ms+)可以用於實時計算,另一方面相比基於Record的其它處理框架(如Storm),RDD數據集更容易做高效的容錯處理。此外小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和演算法。方便了一些需要歷史數據和實時數據聯合分析的特定應用場合。
Bagel: Pregel on Spark,可以用Spark進行圖計算,這是個非常有用的小項目。Bagel自帶了一個例子,實現了Google的PageRank演算法。
End.
『柒』 大數據分析的8大趨勢
大數據分析的8大趨勢
大數據和分析學等學科發展十分迅速,因此企業必須努力跟上,否則就有被甩掉的危險。」他還說:「過去,新興技術往往需要十年左右的時間才能夠成熟,但是現在大大不同了,人們幾個月甚至幾周時間就能想出解決方案。」那麼,有哪些新興技術是我們應該關注,或者說科研人員正在重點研究的呢?《電腦世界》采訪了一些IT精英、咨詢師和行業分析專家,來看看他們列出的幾大趨勢吧。
1.雲端大數據分析
Hadoop是一組有一定框架結構的工具,用來處理大型數據組。它原本用於機器群,但現在情況有所變化。Forrester Research一位分析師BrianHopkins表示,現在有越來越多的技術可以運用到雲端數據處理上來了。比如亞馬遜的BI資料庫、Google的 BigQuery數據分析服務,、IBM』sBluemix 雲平台和亞馬遜的Kinesis數據處理服務。這位分析師還說,未來的大數據將是內部數據部署與雲端數據的結合體。
Smarter Remarketer是SaaS零售分析、市場細分和營銷服務的供應商,它最近將自己室內的Hadoop和MongoDB資料庫基礎設施轉移到了一個基於雲技術的資料庫—Amazon Redshift. 這家位於印第安納波利斯的公司收集線上和實體銷售數據、顧客信息和實時行為數據,之後進行分析,從而幫助零售商做出針對消費者的決策,有些決策甚至是實時的。
Abbott表示,Redshift可以節省這家公司的成本,這是因為它對於結構數據擁有強大的匯總報告功能,而且它頗具規模,使用起來相對容易。用這些虛擬設備總是要比那些實體設備便宜一些。
相比之下,位於加州山景城的Intuit在走向雲分析的過程中就要謹慎多了,因為它需要一個安全、穩定、可控的環境。目前為止,這家金融軟體公司的數據都還在自家的資料庫—Intuit Analytics Cloud裡面。Loconzolo表示:「目前我們正跟亞馬遜還有Cloudera合作,建立一個我們幾家公司公用的能跨越虛擬、現實兩個世界的、具有高度穩定性的雲端,但是現在這個問題還沒有得到解決。」然而,可以說,對於像Intuit這種銷售雲端產品的公司來說,向雲端技術進軍是必然的。Loconzolo還說道,未來我們會發展到一個階段,那時把數據放在私有雲端將是浪費的。
2. Hadoop:一個新的企業數據運行系統
Hopkins表示,向MapRece這樣的分布式分析框架,正在逐漸演化成分布式資源管理器,這些資源管理器正逐步將Hadoop變為多用途數據運行系統。「有了這些系統,你就可以進行多種多樣的操作和分析。」
這對企業來說意味著什麼呢?SQL、MapRece、in-memory、流水式處理、圖表分析還有其它工作都能在Hadoop上進行,越來越多的企業會把Hadoop當做企業數據中心。Hopkins還說:「在Hadoop上能進行各種各樣的數據處理工作,這樣的話,Hadoop會慢慢變成一個多用途的數據處理系統。」
Intuit已經開始在Hadoop建立自己的數據基地了。Loconzolo說:「我們的策略是利用Hadoop分布式文件系統,因為它和MapRece與Hadoop等聯系十分密切,這樣的話,人與產品之間的各種互動就可以實現了。
3.大數據湖泊
美國普華永道首席技術專家Chris Curran說,傳統資料庫理論認為,人們應該先設計數據集,然後再將數據輸入進去。而「數據湖泊「,也被稱作「企業數據湖泊」或者「企業數據中心」,顛覆了這個理念。「現在,我們先收集數據,然後把它們都存入Hadoop倉庫里,我們不必事先設計數據模型了。」這個數據湖泊不僅為人們提供了分析數據的工具,而且很明確地告訴你,這里有什麼樣的數據。Curran還表示,運用Hadoop的過程中人們就可以增加對數據的認識。這是一個遞增的、有機的大規模資料庫。當然,這樣一來,對使用者的技術要求相應地會比較高。
Loconzolo表示,Intuit擁有自己的數據湖泊,這個數據湖裡既有用戶點擊量的數據,也有企業和第三方的數據,所有這些都是Intuit分析雲端的一部分,但關鍵是要讓圍繞這個數據湖的工具能夠為人們有效利用起來。Loconzolo還說,對於在Hadoop建立數據湖,一個需要考慮的問題是,這個平台並沒有完完全全的為企業的需求設置周全。「我們還需要傳統企業資料庫已經有了幾十年的一些功能,比如監控訪問控制、加密、安全性以及能夠從源頭到去向地追蹤數據等等。
4.更多預測分析
Hopkins表示,有了大數據,分析師們不僅有了更多的數據可以利用,也擁有了更強大的處理打量不同屬性數據的能力。
他說:「傳統的機器學習利用的數據分析是建立在一個大數據集中的一個樣本基礎上的,而現在,我們擁有了處理了大量數字記錄的能力,甚至於每條數據有多種不同屬性,我們都應對自如。」
大數據與計算功能的結合也讓分析師們能夠挖掘人們一天中的行為數據,好比他們訪問的網站或者是去過的地方。Hopkins把這些數據稱作「稀少數據(sparsedata)」,因為要想得到這些你感興趣的數據,必須過濾掉一大堆無關的數據。「要想用傳統機器演算法對抗這種數據,從計算角度來講幾乎不可能。因為計算能力是一個十分重要的問題,特別是現在傳統演算法的速度和記憶儲存能力退化很快。而現在你可以很容易知道哪些數據是最容易分析的,不得不說,賽場易主了。」
Loconzolo表示:「我們最感興趣的地方是,怎樣在同一個Hadoop內核中既能作實時分析,又能做預測模型。這里最大的問題在於速度。Hadoop花費的時間要比現有技術長20倍,所以Intuit也在嘗試另一個大規模數據處理器Apache Spark及其配套的 Spark SQL查詢工具。Loconzolo說:「Spark具有快速查詢、製表服務和分組功能。它能在把數據保留在Hadoop內部的前提下,還將數據處理得十分出色。」
5.Hadoop的結構化查詢語言(SQR, StructuredQuery Language):更快,更好
Gartner一位分析師表示,如果你是個不錯的編碼員或者數學家,你可以把數據丟進Hadoop,想做什麼分析就做什麼分析,這是好處,但同時這也是個問題。「盡管任何程序語言都行得通,但我需要有人把這些數據用我熟悉的形式或者語言輸入進去,這也是為什麼我們需要Hadoop的結構化查詢語言。支持與SQR類似的查詢語言的工具,讓那些懂得SQR的企業使用者們能把類似的技術運用在數據上。Hopkins認為,Hadoop的SQR打開了企業通往Hadoop的大門,因為有了SQR,企業不需要在那些能使用Java, JavaScript 和Python高端數據和商業分析師上投資了,而這些投資在以前可是少不了的一筆開銷。
這些工具也並非最近才出現的了。Apache Hive曾經為用戶提供了一種適用於Hadoop、類似於SQR的查詢語言,但是競爭對手Cloudera、PivotalSoftware、IBM還有其他銷售商提供的產品不僅性能更好,速度也更快。這項技術也適合「迭代分析(iterative analytics)」,也就是說,分析師先問一個問題,得到回答之後再問下一個問題。而這種工作放在過去可是需要建立一個資料庫的。Hopkins說:「Hadoop的SQR並不是為了取代資料庫,最起碼短期不會,但對於某些分析來說,它讓我們知道,除了那些高成本的軟體和應用之外,還有別的選擇。」
6.不僅僅是SQR(NoSQL,NotOnly SQR)—更快,更好
Curran表示,現在我們除了基於SQR的傳統的資料庫之外,還有NoSQL,這個資料庫能用於特定目的的分析,當下十分熱門,而且估計會越來越受歡迎。他粗略估計目前大概有15-20個類似的開放資源NoSQL,每一個都獨具特色。比如ArangoDB,這是一款具備圖標分析功能的產品,能更快、更直接地分析顧客與銷售人員之間的關系網。
Curran還說,開放資源的NoSQL資料庫已經存在一段時間了,但是他們依然勢頭不減,因為人們需要它們所做的分析。一位在某個新興市場的普華永道客戶把感測器按在了店面櫃台上,這樣就能監控到那裡到底有什麼產品,顧客會擺弄這些產品多長時間以及人們會在櫃台前站多久。「感測器會產生大量類似指數增長的數據,NoSQL將是未來的一個發展方向,因為它可以針對特定目的進行數據分析,性能好,而且很輕巧。」
7.深度學習
Hopkins認為,作為一種基於神經網路的機械學習技術,雖然還在發展過程中,但在解決問題方面卻已經表現出巨大的潛力。「深度學習……能夠讓計算機在大量非結構化和二進制的數據中識別出有用信息,而且它能夠在不需要特殊模型和程序指令的前提下就剔除那些不必要的關系。」
舉個例子說明:一個深度學習的演算法通過維基網路了解到加利福尼亞和德克薩斯是美國的兩個州。「我們不在需要通過模式化讓程序去理解州和國家的概念,這就是原來的機械學習和新興深度學習的區別之一。」
Hopkins還說道:「大數據運用先進的分析技術,例如深度分析,來處理各種各樣的非結構文本,這些處理問題的思路和方式,我們也是現在才開始理解。」比如,深度學習可以用來識別各種各樣不同的數據,比如形狀、顏色和錄像中的物體,甚至是圖片中的貓—谷歌建立的神經網路就做到了這一點。「這項技術所昭示的認知理念、先進的分析,將是未來的一個趨勢。」
8.內存中分析
Beyer表示,利用內存中資料庫來提升分析處理速度,這種方式已經越來越廣泛,而且只要運用得當,益處也很多。事實上,很多企業現在已經在利用HTAP(hybridtransaction/analytical processing)了,這種處理方式能在同一個內存資料庫中進行轉換和分析處理。但Beyer同時也表示,對於HTAP的宣傳有些過頭了,很多公司也過度利用這項技術。對於那些使用者需要每天多次以同樣的方式看同樣數據的系統來說,這樣的數據沒有太大變化,這時用內存中分析就是一種浪費了。
雖然有了HTAP的幫助,人們分析速度更快了,但是,所有的轉換都必須儲存在同一個資料庫里。Beyer認為,這樣的特點就產生了一個問題,分析師們目前的工作主要是把不同地方的數據匯總輸入到同一個資料庫當中去。「如果你想做任何分析都運用HTAP,所有的數據就得存在同一個地方。要把多樣化的數據進行整合。」
然而,引入內存資料庫的同時也意味著,還有另一個產品等著我們去管理、維護、整合與權衡。
對於Intuit而言,他們已經在使用Spark了,所以對引進內存資料庫的願望並沒有那麼強烈。Loconzolo說:「如果我們用Spark就能處理70%的問題,而用內存資料庫可以解決100%,那麼我們還會選擇前者。所以我們現在也在權衡,要不要馬上停用內部的內存數據系統。」
大步向前邁
在大數據和分析領域有這么多的新興趨勢,IT組織應該創造條件,讓分析師和數據專家們大顯身手。Curran認為:「我們需要評估、整合一些技術,從而把它們運用到商業領域中去。」
『捌』 大數據核心技術有哪些
大數據技術的體系龐大且復雜,基礎的技術包含數據的採集、數據預處理、分布式存儲、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無縫對接。
『玖』 如何在 Spark 的 Dataset 中娉22 列的數據
一般來講,對於陌生的名詞,大家的第一個反應都是「What is it?」.
RDD是Spark的核心內容,在Spark的官方文檔中解釋如下:RDD is a fault-tolerant collection of elements that can be operated on in parallel.由此可見,其中有兩個關鍵詞:fault-tolerant & in parallel.首先,容錯性是RDD的一個重要特性;其次,它是並行計算的數據.
RDD的中文解釋為:彈性分布式數據集,全稱Resilient Distributed Datasets.賓語是dataset,即內存中的資料庫.RDD 只讀、可分區,這個數據集的全部或部分可以緩存在內存中,在多次計算間重用.所謂彈性,是指內存不夠時可以與磁碟進行交換.這涉及到了RDD的另一特性:內存計算,就是將數據保存到內存中.同時,為解決內存容量限制問題,Spark為我們提供了最大的自由度,所有數據均可由我們來進行cache的設置,包括是否cache和如何cache.
如果看到這里,你的思維里對RDD還是沒有任何概念的話,或許可以參照我的形象化理RDD,就是一個被武裝起來的數據集.
主體:a、由源數據分割而來,源碼中對應splits變數;
武器有下:b、數據集體內包含了它本身的「血統」信息,即dependencies變數,存儲著它的父RDD及兩者關系;
c、計算函數,即其與父RDD的轉化方式,對應源碼中的iterator(split) & compute函數;
d、一些關於如何分塊以及如何存放位置的元信息,eg:partitioner & preferredLocations.
有了這些武器,RDD的容錯機制也就顯而易見了.容錯,顧名思義就是在存在故障的情況下,計算機系統仍能正常工作.容錯通常有兩種方式 checkpoint 和logging update ,RDD 採用的是 logging update .Checkpoint( 數據檢查點)意味著要在各個機器間復制大數據,花費會很高,這種拷貝操作相當緩慢,而且會消耗大量的存儲資源,因此deserted.Logging update( 記錄更新),僅支持粗顆粒度變換,也就是說,僅記錄在單個塊上執行的單個操作,然後創建某個RDD的變換序列存儲下來,數據丟失時,就可通過「血統」重新計算,恢復數據.Nevertheless,血緣鏈(變換序列)變得很長時,建議用戶此時建立一些數據檢查點加快容錯速度.(saveAstextFile方法手動設置)