1. 程式人生 > >Spark SQL 與 Hive 的第一場會師

Spark SQL 與 Hive 的第一場會師

“你好,一杯熱美式,加 2 份shot, 1 份焦糖,謝謝”

L 跨進匯智國際中心大廈的 Starbucks, 拿著 iPhone 對著點餐機輕輕一掃,對黑帶服務員小妹丟擲一個笑臉。

“ L 先生,您的熱美式”

“謝謝”

最近 1 禮拜,無論雙休還是工作日,L 每天基本都是同一時間,在早上 Starbucks 開門的 5 分鐘內必定衝進去,點好咖啡,在大玻璃落地窗坐定。開啟 17 寸 MacPro 翻蓋,等待喚醒休眠了 6 小時的 3 臺 vmware fusion centos 虛擬機器。

當 vmware fusion 全亮了之後,L 也將各種 guide 從十字徽章包中取出,一一攤開在松木桌上。滿意的看著這些戰利品,L 認真的飲下兩口香美式。

在 L 的心目中,大玻璃落地窗,加上一張 2.8 米長,1.5 米寬的深棕色送木桌,簡直是靈感之臺,夢寐以求。而如今 41 塊的價格,便能讓他坐上一整天,這麼划算的買賣,L 自是不會放過。

每天 不到 6 小時的睡眠,從參加了 GIIS (Global Information Industry Summit)峰會之後, L 便一直沉浸在對大資料的研究中。搭建了各種 hadoop, Hive, Spark 環境,就是為了讓自己儘快對各種實戰環境能有所熟悉。這種久違的亢奮,還是 10 多年前在玩 Oracle 9i/10g 的時候有過。Oracle Concepts 小手冊被 L 列印了 6 份,生活中所到之處,都可以隨手翻看。別人說他浪費,“嗯,每天拿著 900 多頁的書,跑來跑去,那才叫浪費,浪費智力”。

“上班擠公交,下班亂逛街,那都是浪費精力,精力不可再生,無端浪費會妨礙智力的獲取與生長,簡直是對生命的褻瀆” L 一向都這麼告誡自己。

“ Spark 的威力在於可以發揮分散式叢集種所有機器的記憶體運算,使其只為一個應用服務。”

“ 而 Spark SQL 則將這種記憶體運算封裝為類 SQL 標準的 DSL 語法。相當於是說,我要挖幹西湖,唯一要做的事情就是發出“挖”這個命令,至於 1 個人挖還是 1000 個人挖,我不管。我要做的事情便是發出指令,如何實現的,我只要找到對的人,派給他幹就行。我要考慮的是挖幹西湖之後,我接下來要幹什麼。”

“挖西湖這麼偉大的工程,一個人肯定不行。同樣在 20分鐘內,處理大資料比如 2T 資料,一臺計算機肯定玩不轉吧,那麼 1000 臺同時計算呢?” L 眉頭一緊,“ 還真是沒想想過這麼玩的”。

“不過且慢。1000臺計算機就肯定比一臺計算機快嗎?就簡單拿 3 臺計算機來說,Spark 怎能確保每臺計算機正好處理了他所需要的那部分資料呢,如果需要從網路上另一臺計算機讀取所需資料呢,是不是造成堵塞,延遲加長?再比如,1000 臺計算機,萬一哪一天某臺計算機抽風,跪了之後怎麼能確保資料一致性呢?”

“再如果…. ”

一堆問題縈繞在 L 心頭。

不知不覺,馬克杯的美式,已經半杯下肚了。

作為 SQL 的狂熱分子,其實 L 看上 Spark 的原因,也是因為 Spark SQL. 想著也肯定可以快速玩轉 Spark SQL, 然問題卻越來越多。

L 盯著前兩天做的草圖,眼珠不停的在幾個方框之間來回遊離

image
image

“如果 Spark SQL 和 Hive 的 metaData store 通用一套,那麼 Spark SQL 不是也知道了 Hdfs 上的檔案儲存塊。這樣一來,Spark SQL 的物理指令不也箭無虛發了”

“所以可以大膽的假設,Spark 在每一臺 hadoop data node 上都部署了自己的 slave, 與 hadoop cluster 融為一體,再擁有了 hive 的 metadata store, 便可坐擁寶山了。Awesome, you are great, L! 本質上我要只要把這些統統都搭建在一個叢集中,給 spark 配置一套 hive 的引數檔案,那麼整個體系就打通了。 ”

“說幹就幹吧!” L 猛地吞下兩口咖啡,登入進了黑屏的 centos.

"java, hadoop/hive/spark home, 已經 配置好了,ssh 也設定完畢。centos00,centos01,centos02 已經同步完成。現在的問題是配置檔案,問題不大。"

開啟 freedoor, google 下來一堆配置引數,L 照著都填了進去。

“先開 hdfs, 再開 yarn, 看看結果如何”

image
image
image
image

"hadoop ready , awesome"

"看看 Hive "

image
image

"配上 hive-site.xml 給 spark "

image
image

"似乎一切也來得太容易了,登入 spark-sql 看看 sqoop 匯入的資料"

image
image

“簡直perfect, 沒想到今天這麼順利。看來前幾天的功夫沒白費,犒勞下自己看場電影吧”

作為 85 前,80 後,都是看著港劇長大的,自然《無雙》是不可不看的。加上 L 是個影迷,一星期不看一部電影,那都是感覺白活了。

"順便把前些日子沒看的補上吧,貌似鐵血戰士也不錯"當然,L 在潛意識中也想好了下一步,僅僅環境部署好了,沒有上手的客戶端去跑 SQL,去做資料展現也是無用,所以 Hue, Tableau 也得抓緊配上來,但眼下不急,該玩的時候還得玩。

L 用海明威在接受《巴黎評論》採訪的語錄安慰自己:

寫書或者寫故事的時候,每天早上天一亮我就動筆,沒人打攪;寫好的部分通讀一下,知道接下來會發生什麼,會寫什麼就停下來,直到第二天再去碰它。

“ 大作家都這麼做,更何況我一小 IT ”