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