① 如何使用OpenStack,Docker和Spark打造一個雲服務
從一項顛覆性的技術成果轉化並衍生出一整套社區體系,Docker在發展速度上打破了一個又一個歷史紀錄。然而,Docker項目在採納與普及方面表現出驚人態勢的同時,也給我們帶來了一系列疑問與困惑。在今天的文章中,我希望將注意力集中在朋友們最為關注的評論議題身上。隨著Docker項目在人氣方面的持續飆升,很快剛剛接觸這一新生事物的讀者在實踐過程中不禁產生了這樣的疑問:如果已經決定使用Docker,是否還有必要同時使用OpenStack?在給出自己的觀點之前,我打算首先就背景信息入手為各位進行講解,從而更為透徹地認清這個命題背後所隱藏的理論基礎。背景信息從最為簡單的構成形式出發,Docker實際上旨在提供一套能夠在共享式基礎設施之上對軟體工作負載進行管理的容器環境,但同時又確保不同負載之間彼此隔離且互不影響。以KVM為代表的虛擬機系統所做的工作也差不多:創建一套完整的操作系統堆棧,通過虛擬機管理程序將與該系統相關的設備囊括進來。然而與虛擬機解決方案的區別在於,Docker在很大程度上依賴於Linux操作系統所內置的一項功能——名為LXC(即Linux容器)。LXC利用內置於操作系統當中的各項功能將不同進程的內存進行劃分,甚至能夠在一定程度上拆分CPU與網路資源。Docker鏡像不需要像一套全新操作系統那樣進行完整的引導過程,這樣一來軟體包的體積就能得到大幅壓縮、應用程序運行在共享式計算資源之上時也將具備更為顯著的輕量化優勢。除此之外,Docker還允許工作負載直接訪問設備驅動程序、從而帶來遠超過虛擬機管理程序方案的I/O運行速度。在這種情況下,我們得以直接在裸機設備上使用Docker,而這就帶來了前面提到的核心問題:如果已經使用了Docker,我們還有必要同時使用OpenStack等雲方案嗎?前面的結論絕非信口開河,BodenRussell最近針對Docker與KVM等虛擬機管理程序在性能表現上的差異進行了基準測試,並在DockerCon大會上公布了測試結果。本次基準測試提供相當詳盡的具體數據,而且如預期一樣,測試結果顯示引導KVM虛擬機管理程序與引導Docker容器之間存在著顯著的時間消耗差異。本次測試同時表明,二者之間在內在與CPU利用率方面同樣存在著巨大區別,具體情況如下圖所示。紅色線條為KVM,藍色線條為Docker。這種在性能表現上的顯著區別代表著兩套目的相近的解決方案在資源密度與整體利用率方面大相徑庭。而這樣的差異也將直接體現在運行特定工作負載所需要的資源總量上,並最終反映到實際使用成本當中。結論整理·上述結論並不單純指向OpenStack,但卻適用於OpenStack以及其它與之類似的雲基礎設施解決方案。在我看來,之所以問題的矛頭往往最終會被指向OpenStack,是因為OpenStack項目事實上已經在私有雲環境領域具備相當高的人氣,同時也是目前我們惟一會考慮作為Docker替代方案的技術成果。·問題的核心不在於OpenStack,而在於虛擬機管理程序!很多性能基準測試都將Docker與KVM放在了天秤的兩端,但卻很少將OpenStack牽涉於其中。事實上,前面提到的這次專項基準測試同時將OpenStack運行在KVM鏡像與Docker容器環境之下,結果顯示這兩類技術成果能夠帶來理想的協作效果。考慮到這樣的情況,當我們選擇將OpenStack運行在基於Docker的Nova堆棧當中時——正如OpenStack說明文檔提供的下圖所示——那些資源利用率參數將變得無關緊要。·在這種情況下,雲基礎設施能夠在容器或者虛擬機管理程序當中提供一套完整的數據中心管理解決方案,而這僅僅屬於龐大系統整體當中的組成部分之一。以OpenStack為代表的雲基礎設施方案當中包含多租戶安全性與隔離、管理與監控、存儲及網路外加其它多種功能設置。任何雲/數據中心管理體系都不能脫離這些服務而獨立存在,但對於Docker或者是KVM基礎環境卻不會做出過多要求。·就目前來講,Docker還不算是一套功能全面的虛擬化環境,在安全性方面存在多種嚴重局限,缺乏對Windows系統的支持能力,而且因此暫時無法作為一套真正可行的KVM備用方案。盡管正在持續進行當中的後續開發工作將逐步彌合這些差距,但抱持著相對保守的心態,這些問題的解決恐怕也同時意味著容器技術將在性能表現方面有所妥協。·另外需要注意的是,原始虛擬機管理程序與經過容器化的實際應用程序性能同樣存在著巨大差異,而且下面這幅來自基準測試的圖表清楚地說明了這一點。目前可能合理的解釋在於,應用程序通常會利用緩存技術來降低I/O資源開銷,而這大大影響了測試結果對真實環境中運行狀態的准確反映。·如果我們將Docker容器打包在KVM鏡像當中,那麼二者之間的差異將變得可以忽略不計。這套架構通常利用虛擬機管理程序負責對雲計算資源的控制,同時利用Heat、Cloudify或者Kubernetes等流程層在虛擬機資源的容納范圍之內進行容器管理。總結由此我得出了這樣的結論:要想正確地看待OpenStack、KVM以及Docker三者之間的關系,正確的出發點是將其視為一整套輔助堆棧——其中OpenStack扮演整體數據中心管理方案的角色,KVM作為多租戶計算資源管理工具,而Docker容器則負責與應用部署包相關的工作。在這樣的情況下,我們可以匯總出一套通用型解決模式,其中Docker分別充當以下幾種角色:·Docker提供經過認證的軟體包,並保證其能夠與穩定不變的現有基礎設施模型順利協作。·Docker為微服務POD提供出色的容器化運行環境。·在OpenStack之上使用Docker,並將其作用與裸機環境等同的運行平台。前面說了這么多,我確實親眼見證過不少經過精確定義的工作負載實例,對於它們來說是否使用雲基礎設施僅僅是種自由選項而非強制要求。舉例來說,如果我出於DevOps的目的而考慮建立一套小型自動化開發與測試環境,那麼我個人更傾向於在裸機環境上直接使用Docker機制。而虛擬機與容器這兩類環境之間,流程層將成為一套絕佳的抽象對接工具。將流程框架與Docker共同使用的一大優勢在於,我們能夠根據實際需求、隨時在OpenStack以及裸機環境之間進行切換。通過這種方式,我們將能夠選擇任意一種解決選項——只要其切實符合我們流程引擎對於目標環境的具體需要。OpenStackOrchestration(即Heat)在最新發布的Icehouse版本當中已經明確表示支持Docker環境。Cloudify作為一款基於TOSCA的開源流程框架,原本適用於OpenStack以及VMware、AWS乃至裸機等雲環境,而最近也開始將Docker支持納入自身。谷歌Kubernetes主要面向的是GCE協作目標,但我們也能夠通過自定義來使其適應其它雲或者運行環境。
② 美國大數據工程師面試攻略
項目數據分析師分享:美國大數據工程師面試攻略
方法/步驟
先做一個自我介紹,本科南開後,加入了一個創業公司kuxun,做實時信息檢索,後來進入網路基礎架構組,搭建了Bai App Engine的早期版本,隨後去Duke大學留學,在攻讀碩士期間,做跟Hadoop大數據相關的研究項目Starfish,之後在Amazon EC2部門實習,了解它們的內部架構,畢業後加入Linkedin,做廣告組的架構,涉及Hadoop調優,Data Pipeline, Offline/Online, 實時系統。最新是在Coursera從事數據工程師工作。在多年工作中,除了對技術的不懈追求,也積累了大量的面試經驗,從國內的一線互聯網網路,阿里巴巴,奇虎,人人,到美國一線公司Facebook,Google,Linkedin,Twitter,Amazon,到熱門Startup,Uber,Pinterest,Airbnb,Box,Dropbox,Snapchat,Houzz,拿到10+ offer,並且在Linkedin期間也面試過100+候選人,參與面試題制定,樂於分享並幫助很多人成功求職,實現目標。
我們看一下這張矽谷地圖,它坐落於美國加州,從聖何塞到舊金山的狹長地帶,中間是San francisco bay,簡稱灣區。它的由來是這邊有計算機核心處理器中離不開的硅,30年來,矽谷就發展成為無數技術性創業公司的搖籃。在20多年前,就有很多硬體公司的輝煌Intel,Oracle,Apple,Cisco成功上市,10年前,互聯網的興起,造就了Yahoo,Google,Ebay的神奇,而如今Tesla,Facebook,Twitter,Linkedin正扶搖直上,成為美股高科技股的領頭羊。這些公司的市值從幾十billion到幾百billion,PE從負數到上千。瘋狂的估值背後也改變了世界。
如果說矽谷成功是有原因的,我覺得有兩點。地理位置是得天獨厚吸引大量人才,這里有Stanford和加州州立高校提供智力庫的支持,在矽谷可以看到來自全世界的最聰明的人,中國人,印度人,猶太人構成這些Engineer的主力。雖然國內做技術自嘲為碼農,但在矽谷成為一個優秀工程師還是收獲頗豐。另一方面創業是一個永恆的話題,在Stanford有個說法空氣中都飄揚中創業的味道,一些早期員工通過上市套現又積累經驗成了天使投資,Y Combinator,各種技術forum,meetup,創業導師,都很活躍。資本的力量功不可沒,早年VC通過投資,收購,上市放大形成一個雪球效應。大家總喜歡問什麼是next big thing,哪一個是下一個facebook,下一個musk,根據統計10年能成就一個千億以上的公司,目前這個進程正在縮短。
我就拿Linkedin作為例子,介紹高科技公司(FLG)是什麼樣子。它是成立2003年的職業社交網站。在10年的發展中,也不是一下子爆發的,目前有3億的全球用戶,雖然跟Facebook,Google 10億+用戶沒法比,但是它有很好的護城河,用戶定位高端精準,單位價值高。這張照片中左邊這位是創始人Reid Hoffman,是Paypal黑幫成員,在矽谷也是呼風喚雨的大佬,目前是董事和投資人。中間這位是CEO Jeff,2013年被Glassdoor評為最佳CEO,作為職業經理人,成功幫助linkedin高速成長,他最喜歡提到transformation,希望我們每個員工能挑戰自我,在各自崗位上進化。Linkedin提供了員工很好的福利,有號稱灣區最佳的免費食堂,每個月一次的in day,hack day, 幫助員工內部創業的incumbator計劃。它特點是數據驅動的開發產品,比如 People you may know, Job you may be interested, 我做過Sponroed Ads 都是需要很強數據背景和data scientist的支持。它的Biz model也很獨特,有3個line,面向公司的招聘服務,面向廣告商的市場服務,面向個人的訂閱服務,還有最新Sales Solution,因為這么多可能性,成為華爾街的寵兒。
說矽谷,除了那些已經成功的大公司,不得不說現在最新的創業動向,這些代表了未來下一個FLG。我總結了一些領域和代表公司:雲計算(box, dropbox),大數據(cloudera),消費互聯網(pinterest),健康(fitbit),通訊(snapchat),支付(square),生活(uber)。 這里是華爾街網站更新的最新融資規模,比如Uber就達到18Billion的估值,我當時拿到offer沒去,還是覺得很瘋狂,如果細看這張表,大家可以看到矽谷(藍色)尤其是舊金山它們的融資規模遠遠大於其他地區,還是地理決定論。而在國內的兩家xiaomi,jingdong都是在北京,而最近大家看到一些泡沫論,說什麼阿里巴巴上市是否美股到頂,經緯VC創始人也提醒我們泡沫的風險,我無法判斷。如果能參與到下一波浪潮裡面去是很過癮的。我推薦大家去看看 <浪潮之巔>,<奇點臨近>,我還是很期待未來20年的技術革命。
我個人熱愛大數據,在矽谷這也是大家津津樂道的,有個笑話,big data is like teenage talking about sex, nobody know how to do it. 其實大家還是興趣驅動就好,不要那麼功利,大數據技術涉及太多,平常工作中也是慢慢積累,有無數的坑和技術細節需要克服。並不是說那個技術最熱就要用哪個,如果你用不好,你的壓力很大的,舉個例子,你用某個開源資料庫,發現它偶爾有數據丟失怎麼辦,如果這是線上服務,你不斷收到報警,這時候你當時選用它的優點 scalable,容錯性都沒意義了。接著說大數據,這裡面Hadoop作為行業標准,我面過的除了Google,微軟不用,幾乎所有的公司都在用,建議大家利用這個機會。這裡面有三巨頭,cloudera是老牌Hadoop咨詢公司,Hadoop的創始人做CTO,Hortonworks也是很多Hadoop的committee,MapR是提出hdfs的erasure 編碼方式高效而著名,它們都是融了巨資,模式也很像,先推出社區免費版,但有個商業版提供更好的管理。 而今年出現一匹黑馬,Spark,簡單說就是內存級別的計算,比Hadoop框架里能節約IO,利用緩存,能適應批處理,迭代,流式計算。
這里看一下它的生態系統,如何學Hadoop是個循序漸進過程,先要理解學習它的core系統,HDFS, MapRece, Common,在外圍有無數的系統工具方便開發,我個人用過的是 Avro作為數據格式,Zookeeper作為選主的高可靠性的組件,Solr作為搜索介面,Pig搭建工作流,Hive 數據倉庫查詢,Oozie管理工作流,HBase 作為KV 分布式存儲,mahout數據挖掘的庫,Cassandra nosql 資料庫。我建議初學的考慮Chinahadoop的課程。
而Hadoop本身也是個進化過程,幾年前0.19版本,到0.20, 0.23分流成Yarn架構最後進化成Hadoop2.0, Hadoop1.0 和 2.0 它們的介面和組件是完全不同的,但總體上Hadoop 2.0 是趨勢,因為它有Yarn這樣分離的資源管理平台,可以以插件的方式開發上面的Application,解放了生產力,而像Spark,Storm這些新型處理器也是支持Hadoop 2.0的。這里是Hortonworks它們提出來的社區版本架構,可以說標準的制定者,一流的公司制定標准,其他的公司一般用只能用它們提供的穩定版,沒有多少話語權。但從事大數據,並不見得是要去這些制定標準的公司,大量的應用也是非常考驗架構的靈活性。並且能看到實際的產品,很有成就感。
說到今年火的,還是要看Spark。從去年至今,已經開了2屆Spark大會,上千人的規模,無數人對比Hadoop 100倍的性能提升而興奮。這里說它的背景是誕生於Berkeley的Amplab,它們有個很有名的BDAS(Berkeley Data Analytics Stack),目前Spark已經成為Apache的頂級項目。去年這個實驗室的教授跟學生出去成立Databricks公司,拉到兩輪上千萬的風投,有人成Spark是Hadoop的終結者嗎?我看今年Spark大會上,所有的Hadoop大佬公司都是鼎力支持,像Cloudrea甚至放棄impala的一線支持而轉變成Spark。如果這么發展下去,星星之火可以燎原啊。它裡面用到Scala是一種函數式語言。裡面的組件也很多,有Shark支持SQL類似Hive,有Spark Streaming,MLlib,Graphx,SparkR,BlinkDB。它的核心數據結構是RDD,可以跑在各種分布式系統上。總體上是個包容性+侵略性的系統。我個人也很看好它們的發展。
③ 大數據分析界的「神獸」Apache Kylin有多牛
1.Apache Kylin是什麼?
在現在的大數據時代,越來越多的企業開始使用Hadoop管理數據,但是現有的業務分析工具(如Tableau,Microstrategy等)
往往存在很大的局限,如難以水平擴展、無法處理超大規模數據、缺少對Hadoop的支持;而利用Hadoop做數據分析依然存在諸多障礙,例如大多數分析
師只習慣使用SQL,Hadoop難以實現快速互動式查詢等等。神獸Apache Kylin就是為了解決這些問題而設計的。
Apache Kylin,中文名麒(shen)麟(shou) 是Hadoop動物園的重要成員。Apache
Kylin是一個開源的分布式分析引擎,最初由eBay開發貢獻至開源社區。它提供Hadoop之上的SQL查詢介面及多維分析(OLAP)能力以支持大
規模數據,能夠處理TB乃至PB級別的分析任務,能夠在亞秒級查詢巨大的Hive表,並支持高並發。
Apache
Kylin於2014年10月在github開源,並很快在2014年11月加入Apache孵化器,於2015年11月正式畢業成為Apache頂級項
目,也成為首個完全由中國團隊設計開發的Apache頂級項目。於2016年3月,Apache
Kylin核心開發成員創建了Kyligence公司,力求更好地推動項目和社區的快速發展。
Kyligence是一家專注於大數據分析領域創新的數據科技公司,提供基於Apache
Kylin的企業級智能分析平台及產品,以及可靠、專業、源碼級的商業化支持;並推出Apache Kylin開發者培訓,頒發全球唯一的Apache
Kylin開發者認證證書。
2.Kylin的基本原理和架構
下面開始聊一聊Kylin的基本原理和架構。簡單來說,Kylin的核心思想是預計算,即對多維分析可能用到的度量進行預計算,將計算好的結果保
存成Cube,供查詢時直接訪問。把高復雜度的聚合運算、多表連接等操作轉換成對預計算結果的查詢,這決定了Kylin能夠擁有很好的快速查詢和高並發能
力。
上圖所示就是一個Cube的例子,假設我們有4個dimension,這個Cube中每個節點(稱作Cuboid)都是這4個dimension
的不同組合,每個組合定義了一組分析的dimension(如group
by),measure的聚合結果就保存在這每個Cuboid上。查詢時根據SQL找到對應的Cuboid,讀取measure的值,即可返回。
為了更好的適應大數據環境,Kylin從數據倉庫中最常用的Hive中讀取源數據,使用
MapRece作為Cube構建的引擎,並把預計算結果保存在HBase中,對外暴露Rest
API/JDBC/ODBC的查詢介面。因為Kylin支持標準的ANSI
SQL,所以可以和常用分析工具(如Tableau、Excel等)進行無縫對接。下面是Kylin的架構圖。
說到Cube的構建,Kylin提供了一個稱作Layer Cubing的演算法。簡單來說,就是按照dimension數量從大到小的順序,從Base
Cuboid開始,依次基於上一層Cuboid的結果進行再聚合。每一層的計算都是一個單獨的Map Rece任務。如下圖所示。
MapRece的計算結果最終保存到HBase中,HBase中每行記錄的Rowkey由dimension組成,measure會保存在
column
family中。為了減小存儲代價,這里會對dimension和measure進行編碼。查詢階段,利用HBase列存儲的特性就可以保證Kylin有
良好的快速響應和高並發。
有了這些預計算的結果,當收到用戶的SQL請求,Kylin會對SQL做查詢計劃,並把本該進行的Join、Sum、Count Distinct等操作改寫成Cube的查詢操作。
Kylin提供了一個原生的Web界面,在這里,用戶可以方便的創建和設置Cube、管控Cube構建進度,並提供SQL查詢和基本的結果可視化。
根據公開數據顯示,Kylin的查詢性能不只是針對個別SQL,而是對上萬種SQL 的平均表現,生產環境下90%ile查詢能夠在在3s內返回。在上個月舉辦的Apache Kylin
Meetup中,來自美團、京東、網路等互聯網公司分享了他們的使用情況。例如,在京東雲海的案例中,單個Cube最大有8個維度,最大數據條數4億,最
大存儲空間800G,30個Cube共占存儲空間4T左右。查詢性能上,當QPS在50左右,所有查詢平均在200ms以內,當QPS在200左右,平均
響應時間在1s以內。
北京移動也在meetup上展示了Kylin在電信運營商的應用案例,從數據上看,Kylin能夠在比Hive/SparkSQL在更弱的硬體配置下獲得更好的查詢性能。 目前,有越來越多的國內外公司將Kylin作為大數據生產環境中的重要組件,如ebay、銀聯、網路、中國移動等。大家如果想了解更多社區的案例和動態,可以登錄Apache Kylin官網或Kyligence博客進行查看。
3.Kylin的最新特性
Kylin的最新版本1.5.x引入了不少讓人期待的新功能,可擴展架構將Kylin的三大依賴(數據源、Cube引擎、存儲引
擎)徹底解耦。Kylin將不再直接依賴於Hadoop/HBase/Hive,而是把Kylin作為一個可擴展的平台暴露抽象介面,具體的實現以插件的
方式指定所用的數據源、引擎和存儲。
開發者和用戶可以通過定製開發,將Kylin接入除Hadoop/HBase/Hive以外的大數據系統,比如用Kafka代替Hive作數據源,用
Spark代替MapRece做計算引擎,用Cassandra代替HBase做存儲,都將變得更為簡單。這也保證了Kylin可以隨平台技術一起演
進,緊跟技術潮流。
在Kylin
1.5.x中還對HBase存儲結構進行了調整,將大的Cuboid分片存儲,將線性掃描改良為並行掃描。基於上萬查詢進行了測試對比結果顯示,分片的存
儲結構能夠極大提速原本較慢的查詢5-10倍,但對原本較快的查詢提速不明顯,綜合起來平均提速為2倍左右。
除此之外,1.5.x還引入了Fast
cubing演算法,利用Mapper端計算先完成大部分聚合,再將聚合後的結果交給Recer,從而降低對網路瓶頸的壓力。對500多個Cube任務
的實驗顯示,引入Fast cubing後,總體的Cube構建任務提速1.5倍。
目前,社區正在著手准備Apache Kylin 1.5.2版本的發布,目前正處於Apache Mailing list投票階段,預計將會在本周在Kylin官網發布正式下載。
在本次的1.5.2版本中,Kylin帶來了總計
36個缺陷修復、33個功能改進、6個新功能。一些主要的功能改進包括對HyperLogLog計算效率的提升、在Cube構建時對Convert
data to hfile步驟的提速、UI上對功能提示的體驗優化、支持hive view作為lookup表等等。
另一個新消息是Kylin將支持MapR和CDH的Hadoop發行版,具體信息可見KYLIN-1515和KYLIN-1672。相應的測試版本是MapR5.1和CDH5.7。
UI上提供了一個重要更新,即允許用戶在Cube級別進行自定義配置,以覆蓋kylin.properties中的全局配置。如在cube中定義kylin.hbase.region.count.max 可以設置該cube在hbase中region切分的最大數量。
另
一個重要的功能是Diagnosis。用戶經常會遇到一些棘手的問題,例如Cube構建任務失敗、SQL查詢失敗,或Cube構建時間過長、SQL查詢時
間過長等。但由於運維人員對Kylin系統了解不深,很難快速定位到root cause所在地。我們在mailing
list里也經常看到很多用戶求助,由於不能提供足夠充分的信息,社區也很難給出一針見血的建議。
當用戶遇到查詢、Cube/Model管理的問題,單擊System頁面的Diagnosis按鈕,系統會自動抓取當前Project相關的信息並打包成
zip文件下載到用戶本地。這個包會包含相關的Metadata、日誌、HBase配置等。當用戶需要在mailing
list求助,也可以附上這個包。
④ 如何使用OpenStack,Docker和Spark打造一個雲服務
IBM中國研究院高級研究員陳冠誠主要從事Big Data on Cloud,大數據系統性能分析與優化方面的技術研發。負責和參與過SuperVessel超能雲的大數據服務開發,Hadoop軟硬體協同優化,MapRece性能分析與調優工具,高性能FPGA加速器在大數據平台上應用等項目。在Supercomputing(SC),IEEE BigData等國際頂級會議和期刊上發表過多篇大數據數據處理技術相關的論文,並擁有八項大數據領域的技術專利。曾在《程序員》雜志分享過多篇分布式計算,大數據處理技術等方面的技術文章。以下為媒體針對陳冠誠的專訪:
問:首先請介紹下您自己,以及您在Spark 技術方面所做的工作。
陳冠誠:我是IBM中國研究院的高級研究員,大數據雲方向的技術負責人。我們圍繞亮罩Spark主要做兩方面的事情:第一,在IBM研究院的SuperVessel公有雲上開發和運維Spark as a Service大數據服務。第二,在OpenPOWER架構的伺服器上做Spark的性能分析與優化。
問:您所在的企業是如何使用Spark 技術的?帶來了哪些好處?
陳冠誠:Spark作為新一代的大數據處理引擎主要帶來了兩方面好處:
相比於MapRece在性能上得到了很大提升。
在一個統一的平台上將批處理、SQL、流計州純算、圖計算、機器學習演算法等多種範式集中在一起,使混合計算變得更加的容易。
問:您認為Spark 技術最適用於哪些應用場景?
陳冠誠:大規模機器學習、圖計算、SQL等類型數據分析業務是非常適合使用Spark的。當然,在企業的技術選型過程中,並不是說因為Spark很火就一定要使用它。例如還有很多公司在用Impala做數據分析,一些公司在用Storm和Samaza做流計算,具體的技術選型應該根據自己的業務場景,人員技能等多方面因素來做綜合考量。
問:企業在應用Spark 技術時,需要做哪些改變嗎?企業如果想快速應用Spark 應該如何去做?
陳冠誠:企業想要擁抱Spark技術,首先需要技術人員改變。是否有給力的Spark人才會是企業能否成功應用Spark最重要的因素。多參與Spark社區的討論,參加Spark Meetup,給upstrEAM貢獻代碼都是很好的切入方式。如果個人開發者想快速上手Spark,可以考慮使用SuperVessel免費的Spark公有雲服務,它能快速創建一個Spark集群供大家使用。
問:您所在的企業在應用Spark 技術時遇到了哪些問題?是如何解決的?
陳冠誠:我們在對Spark進行性能調優時遇到很多問題。例如JVM GC的性能瓶頸、序列化反序列化的開銷、多進程好還是多線程好等等。在遇到這些問題的時候,最好的方法是做好Profiling,准確找到性能瓶頸,再去調整相關的參數去優化這些性能瓶頸。
另一方面,我們發現如果將Spark部署在雲環境里(例如OpenStack管理的Docker Container)時,它的性能特徵和在物理機上部署又會有很大的不同,目前我們還在繼續這方面的工作,希望以後能有機會跟大家繼續分享。冊鍵咐
問:作為當前流行的大數據處理技術,您認為Spark 還有哪些方面需要改進?
陳冠誠:在與OpenStack這樣的雲操作系統的集成上,Spark還是有很多工作可以做的。例如與Docker Container更好的集成,對Swift對象存儲的性能優化等等。
問:您在本次演講中將分享哪些話題?
陳冠誠:我將分享的話題是「基於OpenStack、Docker和Spark打造SuperVessel大數據公有雲」:
隨著Spark在2014年的蓬勃發展,Spark as a Service大數據服務正成為OpenStack生態系統中的新熱點。另一方面,Docker Container因為在提升雲的資源利用率和生產效率方面的優勢而備受矚目。在IBM中國研究院為高校和技術愛好者打造的SuperVessel公有雲中,我們使用OpenStack、Docker和Spark三項開源技術,在OpenPOWER伺服器上打造了一個大數據公有雲服務。本次演講我們會向大家介紹如何一步一步使用Spark、Docker和OpenStack打造一個大數據公有雲,並分享我們在開發過程中遇到的問題和經驗教訓。
問:哪些聽眾最應該了解這些話題?您所分享的主題可以幫助聽眾解決哪些問題?
陳冠誠:對如何構造一個大數據雲感興趣的同學應該會對這個話題感興趣,開發SuperVessel的Spark as a Service服務過程中我們所做的技術選型、架構設計以及解決的問題應該能對大家有所幫助。
⑤ 如何使用OpenStack,Docker和Spark打造一個雲服務
IBM中國研究院高級研究員陳冠誠主要從事Big Data on Cloud,大數據系統性能分析與優化方面的技術研發。負責和參與過SuperVessel超能雲的大數據服務開發,Hadoop軟硬體協同優化,MapRece性能分析與調優工具,高性能FPGA加速器在大數據平台上應用等項目。在Supercomputing(SC),IEEE BigData等國際頂級會議和期刊上發表過多篇大數據數據處理技術相關的論文,並擁有八項大數據領域的技術專利。曾在《程序員》雜志分享過多篇分布式計算,大數據處理技術等方面的技術文章。以下為媒體針對陳冠誠的專訪:
問:首先請介紹下您自己,以及您在Spark 技術方面所做的工作。
陳冠誠:我是IBM中國研究院的高級研究員,大數據雲方向的技術負責人。我們圍繞Spark主要做兩方面的事情:第一,在IBM研究院的SuperVessel公有雲上開發和運維Spark as a Service大數據服務。第二,在OpenPOWER架構的伺服器上做Spark的性能分析與優化。
問:您所在的企業是如何使用Spark 技術的?帶來了哪些好處?
陳冠誠:Spark作為新一代的大數據處理引擎主要帶來了兩方面好處:
相比於MapRece在性能上得到了很大提升。
在一個統一的平台上將批處理、SQL、流計算、圖計算、機器學習演算法等多種範式集中在一起,使混合計算變得更加的容易。
問:您認為Spark 技術最適用於哪些應用場景?
陳冠誠:大規模機器學習、圖計算、SQL等類型數據分析業務是非常襲嫌適合使用Spark的。當然,在企業的技術選型過程中,並不是說因為Spark很火就一定要使用它。例如還有很多公司在用Impala做數據分析,一些公司在用Storm和Samaza做流計算,具體的技術選型應該根據自己的業務場景,人員技能等多方面因素來做綜合考量。
問:企業在應用Spark 技術時,需要做哪些改變嗎?企業如果想快速應用Spark 應該如何去做?
陳冠誠:企業想要擁抱Spark技術,首先需要技術人員改變。是否有給力的Spark人才會是企業能否成功應用Spark最重要的因素。多參與Spark社區的討論,參加Spark Meetup,給upstrEAM貢獻代碼都是很好的切入方式。如果個人開發者想快速上手Spark,可以考慮使用SuperVessel免費的Spark公有雲服務,它能快速創建一個Spark集群供大家使用。
問:您所在的企業在應用Spark 技術時遇到了哪些問題?是如何解決的?
陳冠誠:我們在對Spark進行性能調優時遇到很多問題。例如JVM GC的性能瓶頸、序列化反序列化的開銷、多進程好還是多線程好等等。在遇到這些問題的時候,最好的方法是做好Profiling,准確找到性能瓶頸,再去調整相關的參數去優化這些性能瓶頸。
另野禪山一方面,我們發現如果將Spark部署在雲環境里(例如OpenStack管理的Docker Container)時,它的性能特徵和在物理機上部署又會有很大的不同,目前我們還在繼續這方面的工作,希望以後能有機會頌中跟大家繼續分享。
問:作為當前流行的大數據處理技術,您認為Spark 還有哪些方面需要改進?
陳冠誠:在與OpenStack這樣的雲操作系統的集成上,Spark還是有很多工作可以做的。例如與Docker Container更好的集成,對Swift對象存儲的性能優化等等。
問:您在本次演講中將分享哪些話題?
陳冠誠:我將分享的話題是「基於OpenStack、Docker和Spark打造SuperVessel大數據公有雲」:
隨著Spark在2014年的蓬勃發展,Spark as a Service大數據服務正成為OpenStack生態系統中的新熱點。另一方面,Docker Container因為在提升雲的資源利用率和生產效率方面的優勢而備受矚目。在IBM中國研究院為高校和技術愛好者打造的SuperVessel公有雲中,我們使用OpenStack、Docker和Spark三項開源技術,在OpenPOWER伺服器上打造了一個大數據公有雲服務。本次演講我們會向大家介紹如何一步一步使用Spark、Docker和OpenStack打造一個大數據公有雲,並分享我們在開發過程中遇到的問題和經驗教訓。
問:哪些聽眾最應該了解這些話題?您所分享的主題可以幫助聽眾解決哪些問題?
陳冠誠:對如何構造一個大數據雲感興趣的同學應該會對這個話題感興趣,開發SuperVessel的Spark as a Service服務過程中我們所做的技術選型、架構設計以及解決的問題應該能對大家有所幫助。(來源:CSDN)
⑥ Docker生態會重蹈Hadoop的覆轍嗎
一、Docker的興起和Hadoop何其相似
2015年說是Docker之年不為過,Docker熱度高漲,IT從業人員要是說自己不知道Docker都不好意說自己是做IT的。2016年開始容器管理、集群調度成為熱點,K8s開始成為熱點。但這一幕和2013年的Hadoop大數據何其相似,當年你要說自己不知道大數據,或是知道大數據不知道Hadoop,那必然招來鄙視的眼光。
雲計算喊了這么久,從來沒有像Docker這么火過,究其原因不外乎兩條:
1、開發者能夠用Docker,開發者要一個開發環境,總會涉及到種種資源,比如資料庫,比如消息中間件,去裝這些東西不是開發人員的技能,是運維人員的技能。而用Docker去Pull一個mySQL鏡像,或是Tomcat鏡像,或是RabbitMQ鏡像,簡易輕松,幾乎是零運維。做好了應用代碼,打一個Docker鏡像給測試或是運維人員,避免了從前打個程序包給測試或是運維人員,測試或運維人員要部署、配置應用,還得反反復復來麻煩開發人員,現在好了,丟個Docker鏡像過去,讓運維人員跑鏡像就可以,配置在鏡像里基本都做好了。
這正好滿足了DevOps的要求,所以DevOps也一下熱起來了。開發者是一個巨大的市場,是海量的個體,通過類似於病毒式的傳銷,Docker一下在開發者中熱起來了。
2、鏡像倉庫和開源,誰都可以用,Docker鏡像庫非常豐富,誰做好一個鏡像都可以往公有倉庫推送,開發人員需要一個環境的時候,可以到Docker鏡像倉庫去查,有海量的選擇,減少了大量無謂的環境安裝工作。而通過開源,又開始大規模傳播。
我們再來回顧看看2010-2013年,大數據的名詞火遍大江南北,各行各業都在談大數據,但是落到技術上就是Hadoop,還記得2012年的時候,和Hadoop沒啥毛關系的VMWare也趕緊的做了一個虛機上部署Hadoop的serengeti,誰家產品要是和Hadoop不沾點邊,不好意思說自己是IT公司。Hadoop當年的熱度絕對不亞於2014-2015的Docker。而且時間上有一定的連續性,2014年開始,Hadoop熱度達到頂點,開始逐漸降溫,標志事件就是Intel投資Cloudera。而Docker是從2014年開始熱度升高的。
再看Hadoop為何在2010年前後開始熱起來,之前的大數據都是數據倉庫,是昂貴的企業級數據分析並行資料庫,而Hadoop是廉價的大數據處理模式,通過開源和X86廉價硬體,使得Hadoop可以大規模使用,而互聯網時代產生的海量數據雖然垃圾居多,但是沙裡淘金,也能淘出點價值,Hadoop正好迎合了這兩個需求,雖然Hadoop的無論是功能還是性能遠比MPP資料庫差,但做簡單的數據存儲、數據查詢、簡單數據統計分析還是可以勝任的,事實上,到目前為止,大多數的Hadoop應用也就是數據存儲、數據查詢和簡單的數據統計分析、ETL的業務處理。
Docker和Hadoop的熱起來的原因不同,但是現象是差不多,開源和使用者群體大是共同要素。
二、Hadoop從狂熱走向了理性
Hadoop最熱的時候,幾乎就是要replace所有資料庫,連Oracle也面臨了前所未有的沖擊,甚至Hadoop成了去IOE的Oracle的使命之一。在狂熱的那個階段,客戶怎麼也得做一兩個大數據項目,否則會被同行瞧不起,各IT廠商也必須推出大數據產品,否則可能成為IT過時的典範,這不IBM成立了專門的大數據部門,打造了一個以Hadoop為核心的龐大的大數據解決方案。
Intel雖然是做晶元的,但是大數據必須摻和,成立大數據部門,做Intel Hadoop 。連資料庫的老大Oracle也憋不住了,做了個大數據一體機。
任何曾經狂熱的新技術都會走向理性,Hadoop也不例外,只不過,這個進程還比較快。隨著大數據的大躍進,隨著Hadoop的應用越來越多,大家發現在被誇大的場景應用大數據效果並不好,只在特定場景有效,Hadoop進入理性發展階段,比如一開始Hadoop據取代MPP資料庫,取代數據倉庫,取代Oracle,完美支持SQL等等均基本成為泡影。這其實本來是一個常識,任何技術都有其應用場景,誇大應用場景,任意擴展應用場景只會傷害這個技術的發展。
「這和目前無限誇大Docker的應用場景有異曲同工之妙,比如Docker向下取代虛擬化,Docker向上取代PaaS之類,幾乎成了雲計算的唯一技術,這種論調一直充斥各種Meetup/論壇。雖然技術從誇大到理性需要時間,但是理性不會總是遲到。
Hadoop技術在發展,大數據的相關技術也在發展,Hadoop一直被詬病的處理速度慢,慢慢的被Spark/Storm等解決,特別在流數據處理領域。
所以,時至今日,人們對Hadoop的態度趨於理性,它只適合在特定場景使用,可是,當初那些在Hadoop不太適用的場景使用了Hadoop的客戶交了學費的事情估計沒人再提了。Docker估計也是一樣的,總有在誇大的場景中交學費的客戶,可是只是客戶沒眼光嗎?和無限誇大某種技術的佈道師無關么?
再反觀大數據和Docker在全球的發展,在美國,無論是Hadoop和Docker並沒有像國內這么狂熱過。Hadoop技術來源於Google,成型於Yahoo(DougCutting),而炒作卻是在國內。同樣,Docker也在走這么個流程,在美國沒有這么多的Docker創業公司,主要就是Docker,然後各大廠商支持,創業公司和創投公司都知道,沒有自己的技術或是技術受制於人的公司不值得投資,既然Docker一家獨大,再去Docker分一杯羹會容易嗎?
而國內二三十家的Docker創業公司,沒有一家能對Docker/K8s源碼有讓人醒目的貢獻(反倒是華為在K8s上有些貢獻),但是都在市場上拼嗓門,不是比誰的技術有潛力最有市場,而是比誰最能佈道誰嗓門大,誰做的市場活動多,某Docker創業公司據說80%的資金用在市場宣傳、Meetup上,而且不是個別現象,是普遍現象。反應了某些Docker創業者的浮躁心態。