其實在Hadoop之前,百度也曾想過開發自己的GFS+MapReduce+BigTable,沒錯,百度想要開發的系統就是基于Google那三篇著名的論文的2。這個系統叫做Pyramid,其領銜人是王選的高徒陽振坤博士。Pyramid大約開發了2-3年,最終以失敗告終,據說最后與Hadoop PK的時候完敗下來,陽振坤也在其后離職加盟淘寶3。我不知道Google開發GFS+MapReduce+BigTable用了多久,但是GFS的論文是03年,MapReduce論文是04年,BigTable應該是07年,想來Google應該也是開發了4-6年左右的時間。Pyramid的失敗直接導致了Hadoop在百度的崛起,不到兩年,Hadoop的機器數量從無到有,很快就突破了萬臺的規模,并且機房也從北京開始像長三角擴展,百度也終于邁出了跨數據中心的步子,盡管這個步伐似乎比Google慢了5-8年4?
不過百度雖然自己用Hadoop用得很High,負載什么的,報表都弄得不錯,集群規模也上了國內少有的3000+臺,但是卻很少對Hadoop社區進行開源回饋。其內部Hadoop是基于Hadoop 0.19-0.20改進的。這樣做的好處就是快,一方面依賴社區拿到已有的代碼基,整合測試就可上線,同時也不用管什么倫理道德奉獻回饋的鳥事,但其缺點就是內部的Hadoop和官方的Hadoop會逐漸越走越遠,上游的Patch和改進越到后來會越難引進合并。這樣做的結果就是和社區分離,用自己一人之力對抗全球智慧,最終只能自討苦吃5。
我記得有一次內部年會上,有位工程師跳起來問,“公司可不可以做一些開源的產品呢?很多東西本來就是從外邊拿過來的。”我只記得當時臺上的兩位高管,其中一位女高管臉色稍變,過了一會又開始講什么“做開源需要時間精力;好的東西才好意思開源出去,否則會丟臉”什么什么的。我想,*一個IT公司有沒有勇氣擁抱開源,是一個公司是否對自己的技術有足夠自信的一個表現*。在這方面,百度乏陳可善,不但沒有代碼,連論文也很少。而淘寶在章文嵩的帶領下,其開源已經做的如火如荼,算是國內IT企業中開源做的最好的一個。
3.3 世界上最優秀的工程師?
百度的內部郵件中不止一次的提到“世界上最優秀的工程師”這個字眼,可惜作為這封郵件的收件人,連我們自己都不相信自己是世界上最優秀的工程師。09-11年高速擴張的兩年,百度的招人標準降低了很多。這也是無可奈何的事情,畢竟中國的人才儲備有限,有時候即便你想花錢,也不一定能招到足夠的人。
你當然無法否認,百度內部有很多牛人,可是大凡拿得上臺面的公司,那個手里沒有一些牛人呢?重要的是保證整體人才的平均質量,而不是樹立幾個典型,然后就自吹自擂說自己的工程師是世界上最優秀的。
3.4 KPI為王
我在Hadoop運維組做到第4個月的時候,一手創立Hadoop運維的經理走了,空降了一位新來的經理。當然,這位經理是不懂Hadoop的,加上他又實在繁忙,所能做的就是從報表入手。比如說每周幾千臺機器幾百條小報警有沒有都處理掉,預算做的怎么樣,總之都是報表性的東西。至于技術上的,監控怎么做,如何才能更好的自動化,怎樣統一歸約化的整合集群的各個系統,從來就不是他關心的重點。我辛苦兩周做出來一個小的監控系統,可以自動的檢測各個集群的一些指標參數,并且支持自定義插件,自動化的生成監測報告發送到郵箱中,他給的評價是“這算啥,T2的工程師都能做”。我當時特別火也特別委屈,心里想“T2的工程師都能做,可是為什么一直沒有人做呢?站著說話不腰疼”。
再比如我們每周都要寫Hadoop集群運維周報,內容無非是去幾個監控系統上鼠標copy/paste一些數據到一個模板里。其實這樣的東西完全可以稍微花些人力寫點程序抓點網頁完成,可是一直沒有人做這個事情,大家就這樣一周一周的寫下來。反正經理要的就是這個,誰管你怎么得來的呢。
當一家技術公司由技術驅動變成KPI驅動的時候,也就意味著這家公司發展到了一個瓶頸期。不斷有前同事跟我聊,說自己想做一些事情,但是經理不讓。為什么呢?比如說一個4、5年的產品代碼,由于人員的交替加上技術的封閉,必然是有很多丑陋的代碼的,這個時候后來接手的人如果是個有責任心又有代碼潔癖的人的話,自然就想對代碼做些重構和改進。這就帶來了一個問題:萬一由于這種額外的改動造成產品出現事故,怪誰?經理是不想承擔這樣的責任的,因為百度的經理不寫代碼,多一事不如少一事。這樣一個技術人員的積極進取心就這樣被壓制了。還有的經理說,”做,可以做,如果一個星期之內可以完成,就去做”??墒怯卸嗌賯ゴ蟮漠a品是一個星期內完成的呢?GFS不是,MapReduce也不是??墒墙浝聿挪粫苓@些,他關心的是他的KPI,是報表。一個東西,如果短期內無法出成果,就不要做。
所以像Puppet這樣的工具是不可能出自百度之手的。即便是工程師在平時的工作之中有一些思考,但也很少能有時間形成系統化的,并且能夠走出百度被業界認可的東西的。
3.5 會議,還是會議;總結,還是總結;溝通,還是溝通
百度的會議之多,總結之煩,溝通之雜簡直是令人聞風喪膽。我在百度的時候,每周至少開3個會,每個會不少于1個小時;每天發送查看郵件不少于40封;每天花在Hi上交流的時間不少于3個小時。有人會問,這么多的溝通會議時間,還有時間干正事嘛?怎么會需要這么多時間溝通交流呢?首先是百度非??粗朽]件文化,所有事無論大小都要有個郵件性的總結,學會設定郵件規則是每個百度人的第一課;其次就是百度的部門極其多,據統計整個公司大概有500多個部門和組,工種單一,想要完成一個Project需要跨越很多部門。這就導致了百度內部的溝通成本一直居高不下,會議室都要提前一周甚至兩周才能訂上。很多rd都是上午過來處理郵件,下午開會,然后晚飯后寫代碼6。
3.6 自由上班?Shit
百度號稱自由上班,但這個所謂的自由上班,每天8小時只多不少7。
3.7 部門隔離
沒錯,百度雖然號稱“簡單可依賴”,“不唯上”,平等,無“公司政治”的企業文化,但是由于部門繁多,流程繁雜,真的想做一件事情,如果沒有自上而下的推動,光預算、排期、開會就要耗掉幾周甚至幾個月的時間。
另一方面,如果你去仔細觀察百度的產品,你會發現百度的產品風格差異極大。無論是網頁產品還是客戶端產品,其UI方面從來都沒有給人一種非常明朗統一的感覺,能夠讓人一看就知道這是百度的東西。這方面,蘋果做的最好,Google次之,百度毫無章法。
原文轉自:http://cnlox.is-programmer.com/posts/37276