大數據的問題
或許所有讀者都明白這一點:數據正在飛速增長,若是能夠有效利用的話,我們能從這些數據中找到非常有價值的見解;傳統技術有很多都是在40年前設計的,比如RDBMSs,不足以創造“大數據”炒作所宣稱的商業價值。在大數據技術的使用上,常見的案例是“客戶單一視圖”;將關于客戶所知道的一切內容放在一起,以便最大化服務提供與自身收入,比如確定具體需要采用什么促銷方式,又是在什么時候、通過什么渠道來發送。
盡管大數據的問題在于,讓我們將這種潛力變為現實,高等級的關鍵功能至少包括下面這些能力:
合并信息孤井、外在因素與數據流;
·控制數據訪問;
·根據需要轉化數據;
·整合數據;
·為數據分析提供工具;
·發布數據報告;
·將見解體現在運營過程中;
·最小化工作完成的總擁有成本與響應時間。
用數據湖作為答案
很多公司正在觀望一個被某些人稱為數據湖的架構,這個數據平臺在合并信息孤井數據流以及在單獨的邏輯位置中執行數據持久化方面具有靈活性,能夠從企業自身以及第三方的數據中挖掘出見解。將Hadoop(包括Spark在內)用于數據湖已成大勢所趨,原因很多:使用總擁有成本較低的普通硬件就能進行擴展,允許用讀時模式(schema-on-read)收取大量數據,支持開源,包括用SQL和普通語言構建分布式處理層。此外,像雅虎和谷歌這樣的webscale公司都是早期標桿,借用這種架構在解決網站索引相關的問題時獲得了巨大的成功。
Hadoop中的數據持久化選項
這樣一來,從這里開始評估數據湖解決方案的前景似乎很合理。一旦開始從更深的層次理解Hadoop的內涵,你就會發現里面所包含的項目真的是包羅萬象,涵蓋了數據處理的方方面面。用Hadoop在數據湖中探測存儲的數據時,有兩個主要選項:HDFS和HBase。使用HDFS時,可以自行決定如何在只添加文件中對數據進行編碼,包括JSON、CSV、Avro等等,因為HDFS只是一個文件系統,編碼方式全由你決定。相反,HBase是一個數據庫,其特有的數據編碼方式可以將記錄寫入的速度最優化,在通過主鍵查詢時執行只讀的速度相對也很快。
這也是用Hadoop的數據湖之魅力所在,它能實現真實情況下的需求。因此,我們就能使用Hadoop來執行上面列出的高層次需求了。在像Spark和Hive這樣的Hadoop生態系統中,仍需用到分布式處理層,但不需HDFS或HBase了,因此你可以從分布式處理層中選擇持久化層面。之前的博文中有相關案例,描述了使用Spark在MongoDB中讀寫數據。還有一篇博文也很類似,證明了MongoDB只是讀取數據的另一個Hive表格。
索引仍舊很重要
大多熟悉RDBMSs的技術人員發現,從表達查詢能力到二級索引,再到加速查詢全都價值巨大(即便模式固定、總擁有成本高以及RDBMSs的可擴展性有限,這些使得它很難被用作數據湖)。如果我們在數據庫持久化中只用到HDFS和HBase,就無法實現我們期待的數據庫臨時索引了,特別是遇到下面幾個限制時:
臨時切片:不通過二級索引,我們如何對不止一個主鍵標識出的數據切片進行有效地分析呢,例如對我們的最佳客戶——那些消費金額超過X的客戶進行分析?由于數據太過巨大,想要通過掃描找出最佳客戶都會令工作卡住。
低延遲報告:如果沒有靈活的索引方式,我們如何在次秒級時間內響應客戶的需求,為他們提供有價值的數據報告呢?再次,我們只能使用消費者的賬戶號或者其他主鍵來進行快速報告,而不是通過消費者的姓名、電話號碼、郵編、花費等等。特別提到:MongoDB剛剛為基于SQL的報告工具發布了BI Connector。
運營化:同樣地,我們如何將有價值的見解引入應用運營中,從而在最大化影響公司和消費者的同時將數據變現?想象一下客服專員(CSR)告知消費者,因為數據湖僅支持這個主鍵,他必須提供賬號才能查詢所有的信息;或者查詢需要10分鐘時間。
當然,其中有些問題可以通過變通方法解決,不過會導致總擁有成本更高、開發或運營工作更多、延遲也更高。例如,使用搜索引擎或者實體化視圖而不是通過主鍵來查詢;不過稍后還需返回到數據庫,在有完整記錄的數據庫中對主表進行再次查詢,以獲得所需的完整信息。除了延遲翻倍之外,還需要耗費額外的管理、開發工作,以及單獨搜索引擎需要的基礎設施,還有實體化視圖所需的維護,加上將數據寫入到其他地方造成的一致性問題。保持我們的設計原則,只用我們用慣的普通靈活索引不是很好么?
MongoDB是一個有效數據湖的重要部分
圖 大數據架構
我們開始討論,探索單用Hadoop是否能滿足數據湖的需求,并發現了至少3個問題。我們能否在架構中另加一層持久化層面來解決這些問題,同時保持設計原則——使用低總擁有成本的普通硬件、開源模式、讀時模式還有Hadoop分布式數據層——與之前一致呢?
我選擇本文的主題是因為,MongoDB就是在Hadoop-only數據湖中,補位最優秀的數據庫。如果使用另一個開源NoSQL數據庫,就會發現其中幾乎不含二級索引(使用二級索引會導致無法同步數據),也沒有分組和聚合功能。你可以使用其中一些數據庫將數據寫入數據湖,不過如果出于商業需求想要以靈活的方式使用二級索引讀取的話,是做不到的。如果想要在數據湖中使用開源RDBMS,我們已經說過,它們固定的模式、昂貴的垂直擴展模型都違背了我們設計數據湖的原則。
因此,推薦使用下面的架構來構建數據湖。
MongoDB對數據湖非常重要
這個架構將MongoDB作為持久化層面加入任何需要表達查詢的數據集中,正與你需要索引的三個原因(上面列舉了)相關。由于需求數據來自消費者,無論是否將數據發布到HDFS和/或MongoDB中,我推薦用governance function來確定。無論存儲到HDFS或者MongoDB上,就可以運行分布式處理任務,比如Hive和Spark。不過如果數據在MongoDB上,因為篩選標準下放到數據庫中,不像在HDFS中那樣掃描文件,你就能在數據臨時切片上運行有效分析了。與此相似,MongoDB中的數據也可用于實時、低延遲報告,并為構建的應用所用到的所有系統提供運營數據平臺服務。
如今一些公司只是將數據復制到Hadoop中進行轉換,然后再復制到其他地方,用于完成有價值的工作。為什么不直接利用數據湖,發揮最大價值呢?使用MongoDB可以將價值多次翻倍。
結論
觀察長期與短期需求,確保這些需求可以通過核心Hadoop分布中的最佳工具,以及MongoDB這樣的生態環境實現,數據湖對你而言就是有價值且而可行的。一些企業在使用數據湖時,只花費一年時間清洗所有數據,然后將其寫入HDFS,希望在未來能用這些數據獲取價值。結果卻失望地發現這些數據毫無價值,事實上在數據與消費者之間還存在另一種batch layer層面。
通過將Hadoop與MongoDB合并,數據庫可以確保成功,并是一個保持較低的總擁有成本,最快響應所有用戶(數據科學家、分析師、商業用戶、消費者自身)的靈活數據平臺。有了數據湖,公司和員工就能用它來獲取獨特的見解,與客戶進行有效溝通,將數據變現并戰勝競爭對手。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:大數據架構的未來