在討論大數據分析時,我們可能多次提到神話般的DevOps精神。我會引用一個虛構的人物,他在一家著名的互聯網公司工作——我們暫且叫它為TwittleBookOhBoy.com。我們將帶你進入該公司位于西海岸的實驗室。
這個人有能力編寫Java機器學習分類器,配置Hadoop集群——修了一下自己的自行車和喝了杯咖啡,然后再回去修改出錯的Python查詢,生成了一個關于拉脫維亞關鍵字趨勢的報告。這就是他一天的活動。
但是,Hadoop的發展歷史告訴我們,雖然與MapReduce編程相關的高級Java技能一定程度上能夠幫助組織提高數據處理效率,但是僅僅這些還不足以幫助組織實現全部目標。開發者們一直在忙于開發能從更高抽象層次上解決這個問題的工具,甚至其中有一位開發者還來自于伯克利。
等待SQL
Michael Fabacher是美國亞特蘭大Cardlytics公司負責數據架構與數據庫開發的副總裁,他的公司通過深入分析銷售點數據來生成針對于信用卡和借記卡用戶的零售與餐館推廣活動。最近我與他探討Hadoop之上的SQL話題時,我想到了要等待SQL。
Fabacher指責說:“我們在‘東海岸’,這里有很多精通SQL的人。”或許,他主要是針對于西海岸經常宣傳的Hadoop和DevOps精神。他的團隊在使用由MapR支持的Hadoop。另外,他們還使用MapR的Drill軟件支持Hadoop上使用SQL的應用程序。Drill是一種新型SQL風格工具,它遵循由Facebook最先提出的Hive技術的方式。Fabacher并沒有放棄這個諷刺,為了表示對西海岸頂尖開發者的不認同,Facebook的開發人員決定開發一個能夠幫助他們和同事使用SQL操作Hadoop數據的軟件。
他說:“Facebook的工程師非常優秀,他們的時間不應該浪費在編寫MapReduce作業上。”他是對的。或許,DevOps和Hadoop的快速發展需要調整一下。
Dremel、Impala、Drill和Presto
很大程度上看,Hadoop之上的SQL始于Hive。它最早是由Facebook在2007年提出的;當時它成為了一個Apache開源項目。Hive能夠將一些SQL命令轉換為MapReduce作業,從而去掉了一層復雜的編程。這個軟件擴大了Hadoop在Facebook及其他公司的使用,而且現在它已經成為所有Hadoop主流發行版的一部分。與MapReduce類似,它的血統源于Hadoop分布式文件系統(HDFS)的批處理作業。
451 Research分析師Matthew Aslett說:“如果了解Hive的起源就知道,它的目標是讓一些有能力編寫SQL查詢的人能夠操作HDFS。它就是將SQL技術集帶到Hadoop中。”從那時開始,Hive發展迅速。但是,同時也出現了許多新型工具。
這其中包括Impala、Drill和Presto,它們每一個都有一個企業贊助商(分別是Cloudera、MarR和Teradata),但是也提供了Apache軟件基金會開源授權版本。Aslett指出,這些工具在MapReduce發起者谷歌的Dremel計劃中占據重要位置,后者是一種在MapReduce上使用的SQL風格語言,關于它的介紹可以參見2010年發布的一篇谷歌技術論文。
要使用正確的工具
這些工具每一個都盡量不去執行完長時間的批處理任務,而是提供高性能大數據分析交互性。有意思的地,Hive發明者Facebook也是Presto的發起者,這家公司于2012年首次在內部使用這個工具,然后它投資了Teradata將它開發成一個產品。
谷歌開發了Dremel,它的目標作為MapReduce的補充而非替代,以實現已抓取網頁文檔的規模化交互式分析、跟蹤Android商店網站應用的安裝數據、谷歌產品的崩潰報表、廣告郵件分析等。
現在行業正在推進用SQL-on-Hadoop產品來替代原始MapReduce分析,這個舉措有一定的爭議性。有一些觀察人員可能會質疑,是否真有必要開發這些優化工具,或者它們是否有一定的夸大因素。但是,這些工具的出現仍然引起了很大的關注——它們有許多都來自于一些重量級程序員,他們認同一個格言:要用正確的工具去做正確的事情。這些工具來自于真實需求。而且,即使是在TwittleBookOhBoy.com,DevOps也不是唯一的熱點;現在已經有一個大團隊,其中還有搭配合理的優秀成員。