Hadoop每日一讨论整理版
【每日一討論】之計算框架(2013-5-21)
就計算框架而言,Hadoop目前比較成熟的只有離線計算框架MapReduce(通常運行時間在1min以上),以及構建在MapReduce之上支持sql的Hive。隨著發展,實時計算(通常運行時間在0~5s)有了需求,于是誕生了仿照Google dremel實現的Apache Drill和Cloduera impala,Twitter的Storm和Yahoo!的S4,以及通過優化MapReduce實現的spark,和構建在spark之上支持sql的shark,但是,這些開源系統目前為止尚不穩定,盡管Impala前幾天發布了1.0版本,但仍存在很多問題,這些系統中,已經開始投入使用的是Storm(至少淘寶在大規模使用)。
【每日一討論】之下一代Hadoop(2013-5-22)
下一代Hadoop主要由分布式文件系統HDFS和資源管理系統YARN組成,其中HDFS支持多個NameNode水平擴展和HA,也被稱為“HDFS Federation”;YARN是在第一代MapReduce演化而來的,它是一個資源管理系統,之上可以運行多種計算框架,包括MapReduce、Storm、Spark、Tez等,帶來的好處包括更好的擴展性、支持多種計算框架等,當前各種計算框架正在往YARN上轉移,將來,YARN將變成一個云操作系統,或者稱為“輕量級彈性計算平臺”,所以計算框架將運行在YARN之上,由YARN統一管理和調度。
【每日一討論】之下一代Hadoop帶來的好處(2013-5-23)
昨天談到,下一代Hadoop由HDFS Federation和YARN組成,今天重點說一下YARN。YARN是一個資源統一管理系統,相比與MRv1,帶來的好處包括:更好的擴展性、可用性、支持多種計算框架等,前兩個特性,很多中小公司用不到,畢竟集群規模不大,僅使用MRv1也不會遇到擴展性和可用性的問題,重點說一下第三個特性,MRv1僅支持MapReduce一種離線計算框架,應用場景非常有限。而YARN則不同,它是一個輕量級彈性計算平臺,很多新型計算框架只能運行在YARN上(不能獨立運行),比如DAG計算框架Tez、實時計算框架Spark(也可運行在另一種資源管理系統Mesos之上),即使現有的計算框架,比如MapReduce(已經支持)、Storm、MPI,也正在轉移到YARN上運行。關于YARN的學習,可參考:http://955.cc/dHM2。
【每日一討論】之MapReduce Shuffle優化方法(2013-5-24)
MapReduce的性能瓶頸之一在于Shuffle階段,Shuffle階段采用了C/S模型,Reduce Task作為Client端從各個Map Task所在節點上(裝有一個Http Server)拉取數據。因此,shuffle優化優化可分為兩個方面,一是對Server端優化,通常用Netty代替Jetty(1.0中采用)作為Http Server,以提高并發性能;二是Client端優化,常用方法是將Shuffle從Reduce Task中獨立出來,讓其不再占用槽位,這樣可交錯使用IO和CPU,進而提高資源利用率。關于Shuffle階段的詳細過程分析可參考最新Hadoop內幕書籍《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》(http://hadoop123.com/)中的第8.4節“Reduce Task內部實現 ”和8.5節”Map/Reduce Task優化“。
【每日一討論】之Hadoop 1.0與Hadoop 2.0(2013-5-31)
Hadoop 1.0:對應版本為apache 1.x和cdh3,主要由HDFS和MapReduce構成,當前是穩定版,各大公司普遍采用這一版本;Hadoop 2.0:對應版本為apache 0.23.x,2.x和cdh4,主要由HDFS、MapReduce和YARN構成,其中HDFS解決了HA,YARN支持多種計算框架,目前尚不穩定,只發布了alpha版本,預計一年左右會出現穩定版(目前是alpha版,過段時間belta版,最后是穩定版),目前只有很少的公司嘗試性使用或者測試用。如果想學習或使用Hadoop,推薦使用最新版本的1.1.x版本或者cdh3u6,這兩個版本屬于不同發行版(不同之處對比可閱讀:http://dongxicheng.org/mapreduce-nextgen/how-to-select-hadoop-versions/),但是包含的功能一致。盡管Hadoop 2.0采用了新的架構,但是很多模塊仍重用了1.0的,比如Map Task和Reduce Task實現,調度器實現(包括FIFO、Fair Scheduler 和Capacity Scheduler)等,對于Hadoop 1.0尚未搞透的同學,不提倡直接學習2.0,因為2.0學習難度遠大于1.0. 對于Hadoop初學者,一定要多動手實踐,如果不知如何開始,那就從搭建一個Hadoop集群開始吧,對于有一定基礎的Hadoop學習者,如果想進一步學習Hadoop內部實現,可參考最新Hadoop暢銷書籍《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》(前三章試讀已經放到群共享里了。該書鏈接:http://955.cc/dYzX)
【每日一討論】之如何規劃屬于自己的Hadoop發展道路(2013-6-3)
這次僅是我個人片面之詞,供Hadoop初學者和迷茫著借鑒。通常而言,選擇Hadoop作為自己未來的方向,可有兩個選擇方向:Hadoop應用程序開發和Hadoop內核優化,前面側重于Hadoop之上的應用,比如利用Hadoop進行數據分析,推薦和數據挖掘算法的開發等,后者側重Hadoop系統本身,通常根據實際遇到的問題開發一些新特性或者修復Hadoop bug等,當然也會為應用開發者提供技術指導。不管選擇哪一個方向,都需要從Hadoop基礎學習,而Hadoop是一個實踐性很強的技術,因此必須多實踐,如果你還不知道從何學起,那么就先從搭建一個Hadoop集群開始吧,然后使用它,玩弄它,感受它,之后可以嘗試編寫MapReduce程序,閱讀一些入門書籍,比如Hadoop權威指南等,學習過程中,一定要多實踐多交流,努力給自己創造一個良好的Hadoop學習氛圍。如果你已經入門了,不管是Hadoop應用開發還是Hadoop內核開發,都要努力了解Hadoop內部實現原理(技術內幕)。
【每日一討論】之Hadoop 2.0離穩定到底還有多遠?(2013-6-6)
Hadoop 2.0(對應版本為apache 0.23.x,2.x和cdh4)是下一代Hadoop,采用了全新的架構和軟件設計,目前apache官方仍處于alpha版,而cloudera早就發布了cdh4系列,并聲稱是穩定版,可以線上使用。實際上,cdh4的所有代碼和補丁來自apache官方,只不過是提前將一些補丁打入自己的版本,但它并沒有經過嚴格的測試,cloudera聲稱cdh4穩定是不太可靠的,畢竟apache版本才處于alpha版(而apache每次發布版本時,都會說明在多少節點的線上集群上得到試用)。究其原因,可能是Hadoop發行版之間競爭過于激烈,都想第一時間搶奪市場導致的。據Hadoop負責人介紹(http://955.cc/evdX),hadoop 2.0 beta版將在2個月后發布,而穩定版將在3個月后發布,按照軟件總是延期的理論,我們可以樂觀推測6個月后,也就是年底,2.0版本可以穩定,屆時可以在線上環境中使用。
【每日一討論】之常見開源系統的問題域(2013-6-7)
在Hadoop生態系統或者周邊開源系統中,存在大量的數據計算相關的系統,包括MapReduce、Hive、Pig、Impala、Storm、Spark等,它們之間到底什么關系,是替代還是互補呢?個人認為,這些系統共同構建了一個良好的生態系統,他們各有自己對應的問題域,互補解決各類問題。根據Cloudera對系統的劃分,按照時間指標可分為四個種類,劃分標準與對應的系統分別是(1)實時應用場景(0~5s):Storm、S4、Cloudera Impala,Apache Drill等;(2)交互式場景(5s~1m):這種場景通常能要求必須支持SQL,則可行系統有:Cloudera Impala、Apache Drill、Shark等;(3)非交互式場景(1m~1h):通常運行時間較長,處理數據量較大,對容錯性和擴展性要求較高,可行系統有:MapReduce、Hive、Pig、Stinger等;(4)批處理場景(1h+):通常運行時間很長,處理數據量很大,對容錯性和擴展性要求很高,可行系統有:MapReduce、Hive、Pig、Stinger等。
【每日一討論】幾個學習Hadoop必須知道的資料(2013-6-8)
今天給大家介紹幾個學習Hadoop必須知道的資料,這些資料大部分是英文的。(1)博客:cloudera和hortonworks的官方博客,從這兩個博客里,你可以了解最新的Hadoop動態,博客地址:http://blog.cloudera.com/blog/和http://hortonworks.com/blog/(也可以參考我的博客:http://dongxicheng.org/?) ,(2)Hadoop書籍:入門級《Hadoop權威指南 》和《Hadoop實戰》(外國人寫的那本,有中文翻譯版),進階的是《Hadoop技術內幕》書籍。(3)Hadoop源代碼下載地址,Apache下載:http://hadoop.apache.org/releases.html(僅包含最新的alpha版、beta版和穩定版下載包 )、Hadoop SVN:http://svn.apache.org/repos/asf/hadoop/common/branches/(包含Apache 各個版本,可直接導入eclipse),CDH版本下載:http://archive.cloudera.com/cdh/3/(CDH3系列) 和http://archive.cloudera.com/cdh4/cdh/4/(CDH4系列), (4)Hadoop jira(Hadoop項目管理工具,可下載各種patch,跟蹤每個問題的解決思路和進展,也可以自己提交問題和patch):https://issues.apache.org/jira/browse/YARN,https://issues.apache.org/jira/browse/HDFS。
【每日一討論】認識Hadoop jira的重要性(2013-6-13)
很多人沒有意識到Hadoop jira(Hadoop項目管理工具)的作用,jira的作用非常的不可小覷,首先,每次Hadoop版本發行的時候,在release文件(比如http://hadoop.apache.org/docs/r2.0.5-alpha/hadoop-project-dist/hadoop-common/releasenotes.html)中,會注明增加的特性或者修復的bug,里面每條會帶一個 jira鏈接,你如果對哪個特性感興趣,可以查看或者打補丁(jira鏈接里有補丁) ,其次,每個jira鏈接記錄了每個特性的來龍去脈,你可以了解這個問題是怎么產生的,怎么解決的,整個過程,盡管不是直接的研發人員,但是你可以清楚的了解到,比如HADOOP-7206記錄了如何將google的snappy壓縮算法集成到Hadoop中,鏈接是https://issues.apache.org/jira/browse/HADOOP-7206。在我的Hadoop新書《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》中引用了大量的jira鏈接(這些都是最重要的jira鏈接,經過我篩選的,節省了大家很多時間),全部在最后的附錄中羅列出來了,有興趣的可以閱讀每個jira鏈接。最后,盡管我們大部分人無法參與Hadoop源代碼的編寫,但是可以參與討論每個特性,你可以在jira網站(https://issues.apache.org/jira/)上 注冊一個賬號,并點擊你感興趣jira頁面中的watch按鈕,這樣,該jira鏈接中有任何改動,均會發到你的郵箱,你可以參與討論,甚至貢獻patch。總之,學會利用Hadoop jira是一個Hadoop程序員必備的能力之一。
【每日一討論】計算框架之上的SQL引擎(2013-6-14)
當前開源屆有很多計算框架,包括MapReduce、Tez、Storm、Spark等,你可以直接在這些計算框架上編寫應用程序(低效、難度較大),也可以通過結構化或者腳本語言(簡單,易于上手)解決一些大數據問題。我們重點談一下后一種。MapReduce之上的SQL引擎是Hive和Pig(Pig是一種腳本語言,功能比SQL更強大);Tez正在發展中,將來也會用于Hive上,該新系統被命名為Stinger;Spark之上的SQL引擎為Shark;Storm目前沒有可用的開源SQL引擎,阿里巴巴內部實現了一個,但是不支持開源版本。還有其他兩種系統,對SQL有非常迫切要求,第一個是HBase,目前開源屆沒有支持SQL的版本,但是有商業公司已經做出來了;第二個是Impala這種類google dremel的系統,這種系統是傳統數據庫與HDFS的雜種,它幾乎支持所有傳統數據庫的SQL語法,而其他系統,包括Hive、Shark、SQL-On-HBase等則只支持ANSI-92 SQL語法的一個子集,這主要是由于大數據時代特殊的計算模型和擴展性、容錯性要求導致的,比如Hive只支持查詢語句,不支持修改和刪除,而SQL-On-HBase則支持各種語句,但是僅能有限的支持,尤其是Join難以支持。對于以上知識,傳統公司(采用傳統數據庫存儲和解決問題的公司)向Hadoop解決方案轉型時,應當十分注意。
原創文章,轉載請注明:?轉載自董的博客
本文鏈接地址:?http://dongxicheng.org/mapreduce-nextgen/hadoope-every-day/
總結
以上是生活随笔為你收集整理的Hadoop每日一讨论整理版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从传统操作系统角度理解Hadoop YA
- 下一篇: Hadoop书籍和网络资源介绍