關于大資料這個概念,你一定不陌生了。但是,你知道大資料的“三生三世”嗎?你知道大資料圈子裡的“百家争鳴”嗎...
如果都不清楚,沒關系,不妨就跟着HPE資深大資料架構師劉定強先生一起探索吧!
劉定強先生是HPE資深大資料架構師,Vertica全球頂級專家之一,海資料社群專家委員;具有多個PB級的大型MPP項目實施經驗;熟悉國内大型網際網路公司如Facebook,Twitter,Uber等大資料平台架構,及Hadoop等生态開源社群;擅于Vertica,Oracle,PostgreSQL/MySQL等技術;擁有豐富的政府、通信和金融等行業大型核心應用架構設計和成功經驗;
以下為分享内容,(由于分享内容較長我們做了适當删減并分為上下兩篇進行發表):
三生三世,大資料的曆史發展
從計算機誕生之日起,“大資料”就一直困擾着人們,Vertica的創始人、圖靈獎的獲得者Michael Stonebraker也不例外,他曾經說過,“我已經在這個領域研究了三十年,但其實我都不知道我到底研究了什麼。等市場上開始有人談到了大資料這個詞,然後我才開始意識到原來我研究的就是大資料相關的技術”。
這是一個笑話,但也是一個真實的事情。其實,四五十年代計算機技術開始起步發展的時候,我們處理資料都是以位元組、以K位元組這樣的來去度量。如果我們現在看一下PPT上所示的照片,這個飛機上運的是一個IBM硬碟,五十年代的時候,存5M位元組就需要這麼大的體積,5M是那個年代的大資料。
真正“大資料”這個詞,是09年《自然雜志》提出的,火遍了全球,像麥肯錫、Gartner分别對大資料做了一些相對比較專業的定義,雖然不太一樣,但是本質上都在說這樣一個現實:我們目前的大資料已經超過了傳統技術手段能夠處理的範疇。
是以,我們要用新的技術、新的方法去進行處理。
成熟大資料技術的“洪荒之力”
如今,大資料其實已經是很成熟的一個技術了,我們從Gartner的這個成熟曲線來看,在2012年這個時間點的時候BigData這個技術還處于爬坡階段,到14年的時候已經到達頂峰階段,15年的時候開始向下走了,于是這時候Gartner索性把這個詞從技術熱度當中去掉了,原因在于這時候BigData的技術已經是非常成熟了,大家對于BigData适用于什麼業務場景的看法已經回歸理性,在BigData的實際應用當中存在的風險,大家已經看得足夠了,如何更好地運用它,大家也已經有了新的經驗。按照Gartner的說法,BigData已經成為我們生活中的一部分了。
從傳統意義上講,我們原來收集完資料,要做資料的處理、整合、統計、分析以及整理出報表,還要做資料挖掘以及訓練模型、驗證模型來更好地應用這些資料,到了今天我們更是提高到了人工智能這個角度去看。
其實所有的這些技術都是有交叉的,都是在大資料技術的支援之下存在的。
我們對資料的要求,尤其是性能方面的要求,其實重點在于雖然我們有各種各樣的資料,每天都有海量資料在不斷産生,我們在具體的業務上有很高的要求促使我們去更好地利用這些資料。但是我們最核心的要求是希望大資料提供快速的處理速度,無論是結構化還是半結構化資料能夠快速收集起來,并且我們還要深度的分析并且挖掘這些資料。
能夠把這些分析的結果實時、準時的分享出來,并且應用到具體的場景上去才能發揮大資料真正的價值。
我們更好地利用好大資料這個武器,也是逃不開這四個方面的:快速收集、海量存儲、深度挖掘、實時分析。
大資料分析的關鍵技術要領
從大資料純技術層面講,我們如何才能滿足以上提到的這些要求來去支撐我們的應用呢?核心來講,它和我們傳統的資料處理、分析技術不太一樣的地方,就在于強調用并行的計算去解決海量資料的高效存儲、處理分析這樣的要求。
因為到現在,我們的資料量已經增長到不能僅僅靠一個兩個的伺服器來解決問題了。我們要用到并行處理即MPP大規模并行處理技術,采用分而治之的方法。
我們用幾十個、幾百個甚至上千個這樣的PC伺服器組成一個大規模的叢集,每個節點都會處理、分析和管理自己的資料,來達到我們大資料處理能力的要求。在很重要的程度上講,資料的存取能力往往是一個根本的瓶頸,是以我們不僅是用MPP去提高我們的處理能力,更重要是我們要解決I/O的這個瓶頸的問題。
目前最重要的一個辦法就是,在資料分析這個角度上,我們把一些傳統的按行存儲的方式變成按列的方式去存儲和計算,這樣來降低I/O的開銷。
因為一旦把資料按列存儲後,我們在分析的時候往往就不需要把所有的次元都再讀一遍,這樣一來,因為每一次的分析往往專注于某幾個次元上,并且資料一旦按列存儲之後每一列的特性就會很相像,這樣我們就可以去做排序存儲以及壓縮,進一步降低I/O。
還有一個降低I/O開銷的辦法就是使用記憶體計算,使用資料流水線(pipe-line)的方式使它在記憶體裡面流動而不是落到磁盤裡頭,這樣可以大大的降低對I/O的開銷,來提升整個大資料分析處理的性能。
大資料生态圈子的“百家争鳴”
大資料發展這麼多年來,很多人認為大資料就是Hadoop,Hadoop就是大資料。事實上,通過Gartner之前對業内的調查,我們在大資料相關技術的選擇中,相當一部分還是傳統的資料倉庫,當然也會有雲計算、Hadoop這樣的一些技術。不過,企業資料倉庫還是占相當大的比例。
從2006年 Hadoop誕生開始,Hadoop的核心便是分布式存儲—HDFS、并行計算的架構-MapReduce以及Hbase,即便到現在10年過去了,Hadoop的聲勢更壯大了,但是現在的Hadoop和10年前相比已經有很大的差别了。
但是大家發現使用MapReduce處理資料速度會比較慢,它做的是批量式的資料處理,這時候我們想要做互動式的處理分析就很難,是以由此就衍生出了各種各樣的架構替代MapReduce,比如Spark;
有時候,大家也會去懷念關系型資料庫的SQL語言、SQL思想帶來的便捷性;然後便帶來了Hive這樣的架構,但是Hive是基于MapReduce的,性能還是很慢的。于是乎又出現了Impala,HAWQ等等這樣一些SQL on Hadoop的方案。包括在Spark架構的基礎之上,也有一些Spark on SQL的架構誕生出來了,由此可見Hadoop的整體在快速的擴充。
我們在資料處理和分析,尤其是分析上,SQL是描述資料處理邏輯以及分析邏輯非常自然的一個語言或者功能,根源就在于它背後有關系代數這個理論的支援,無論是早期的資料倉庫用SQL去做加工、還用BI工具通過SQL去做分析,也無論是固定的分析,還是探索式分析都運用的非常自然。
同樣在Hadoop生态當中也是一樣。早期沒有SQL引擎的時候,大家非常痛苦,需要用Java語言或者其他的Pig、Scala這樣的語言去一行一行的寫代碼,這樣的處理邏輯下,你把你的分析邏輯完全地寫到你的代碼裡面去了,那麼性能和維護性都會很差:比如這個時代的MapReduce和Hive。
是以在2012年的時候,無論是開源社群還是各個發行版本都不約而同增加了SQL on Hadoop這樣的方案,比如TEZ,HAWQ等都在Hive的基礎上往前走了很大一步,他們也在Hadoop這個生态裡面,借助了MPP資料庫的一些理念把SQL引擎做進去。
包括Spark,在Spark2015年發行的版本裡面也放進了Spark SQL,原因就是大家還是非常懷念關系代數通過SQL這樣的語言給資料處理思路帶來的描述。
在大資料時代,傳統型的資料庫也有了很大的發展。在SQL關系型資料庫這樣的基礎之上,把它所實作的具體技術做了很大的改進,比如說不再使用共享存儲而使用分布式的存儲,我們用幾十個、幾百個x86節點組成的叢集去做資料的管理、存儲。分布式存儲可以是共享的也可以是不共享的,不同的産品思路不太一樣,那麼達到的效果也會不太一樣。
除了實作技術細節有很大的變化外,分布式的存儲的整個架構結構是非常穩定的,主流的關系資料庫基本都是由存儲引擎、執行引擎和優化器組成的。
這樣架構的好處在于,同樣采用了MPP的技術去做并行計算并支撐海量資料的分析和處理,它能提供更強勁的分析能力。同時,采用MPP加列式存儲這樣的技術等,可以大幅提高性能。更重要的是它延續了40多年來關系資料庫的強大優化分析能力。
MPP資料庫,能把這些傳統資料庫的優化能力跟新的MPP并行處理技術(包括列式存儲技術)融合到一起,這是它成功的最重要關鍵因素。
如今無論是商業軟體還是開源軟體,對于資料量為一個TB以内但很高吞吐量的交易,傳統資料做的不錯,但是不一定可以滿足網際網路的要求,是以在去I/O的浪潮下我們可能會引入Cassandra,Mongodb,HBase等這樣一些NoSQL的資料庫(或者叫資料平台)去做更好的擴充。
在資料分析這個領域,我們有傳統的資料倉庫,有Oracle,SQL,Server,DB2,TERADATA等産品可以選擇。但是在大規模的場景下,比如說上百個TB到PB這個量級的時候,這些傳統的資料庫可能就無能無力了。對于那些批量且互動性不太高的資料Hadoop,Hive,Spark等都還可以應付;如果有更高的基于SQL的一些分析需求,那麼Vertica這樣的MPP列式資料庫會提供更好的分析性能,并且Vertica可以提供更好的資料處理的時效性。
比如,在通信行業,我們可以對網絡的性能做優化;在金融行業,我們可以對交易的風險進行管控,我們希望在秒級甚至秒級以内能夠做到這些風險的防範、管控。這些都是我們大資料平台帶來的新支撐能力。我們還會引入一些流式處理技術,在資料流動的過程中即可完成對資料的分析及處理。
從現在的企業大資料平台來看,我們不僅要考慮傳統的批量資料處理和分析,也要考慮日益增加的準實時甚至實時的資料處理分析能力。
HPE Vertica“技多不壓身”
HPE大資料平台,就覆寫在MPP資料庫以及跟周邊各個環節做連接配接的元件上。我們擁有和kafka有源生的連接配接器,通過配置就可以快速地把kafka中topic裡的資料納入到Vertica資料庫裡面;通過Hadoop連接配接器,可以快速地把Hadoop的HDFS的資料,各種開放格式的資料,無論是Parquet和ORC,還是Hive裡面的表都可以快速地放進MPP資料庫裡面來。
像非結構化的這些資料,例如視訊、音頻、文本,我們用IDOL引擎來做資料增強,然後放入我們核心的MPP資料庫裡面,這樣就可以讓我們的企業擁有完整全面的一個模型,并更好地支撐業務的預測分析。
下期,我們将繼續為您帶來劉定強先生關于大資料和MPP高效計算架構的分享。更多實用的幹貨分享,敬請期待!
HPE Vertica
更靈活的分析引擎,助您快速查詢資料
HPE Vertica,适用于包括硬體、虛拟機、雲在内的各種運作環境。同時,Vertica易于安裝和部署,能滿足您的各種業務需要。歡迎您的試用!
号外号外,Vertica China中文網站開!通!啦!