1. 程式人生 > >別老扯什麼Hadoop了,你的資料根本不夠大

別老扯什麼Hadoop了,你的資料根本不夠大

本文原名“Don't use Hadoop when your data isn't that big ”,出自有著多年從業經驗的資料科學家Chris Stucchio,紐約大學柯朗研究所博士後,搞過高頻交易平臺,當過創業公司的CTO,更習慣稱自己為統計學者。對了,他現在自己創業,提供資料分析、推薦優化諮詢服務,他的郵件是:[email protected]

“你有多少大資料和Hadoop的經驗?”他們問我。我一直在用Hadoop,但很少處理幾TB以上的任務。我基本上只是一個大資料新手——知道概念,寫過程式碼,但是沒有大規模經驗。

接下來他們會問:“你能用Hadoop做簡單的group by和sum操作嗎?”我當然會,但我會說需要看看具體檔案格式。

他們給我一個U盤,裡面有所有的資料,600MB,對,他們所有的資料。不知道為什麼,我用pandas.read_csvPandas是一種Python資料分析庫)而不是Hadoop完成了這個任務後,他們顯得很不滿意。

Hadoop其實是挺侷限的。它無非是執行某個通用的計算,用SQL偽程式碼表示就是: SELECT G(...) FROM table GROUP BY F(...) 你只能改變G和F操作,除非要在中間步驟做效能優化(這可不怎麼好玩!)。其他一切都是死的。

(關於MapReduce,之前作者寫過一篇“41個詞講清楚MapReduce”,可以參考。)

Hadoop裡,所有計算都必須按照一個map、一個group by、一個aggregate或者這種計算序列來寫。這和穿上緊身衣一樣,多憋得慌啊。許多計算用其他模型其實更適合。忍受緊身衣的唯一原因就是,可以擴充套件到極大極大的資料集。可你的資料集實際上很可能根本遠遠夠不上那個數量級。

可是呢,因為Hadoop和大資料是熱詞,世界有一半的人都想穿上緊身衣,即使他們根本不需要。

可我的資料有好幾百MB呢!Excel都裝不下

對Excel很大可不是什麼大資料。有很多好工具——我喜歡用的是基於Numpy的Pandas。它可以將幾百MB資料以高效的向量化格式載入到記憶體,在我已經3年的老筆記本上,一眨眼的功夫,Numpy就能完成1億次浮點計算。Matlab和R也是很棒的工具。

數百MB資料一般用一個簡單的Python指令碼逐行讀取檔案、處理,然後寫到了一個檔案就行了。

可我的資料有10G呢!

我剛買了一臺膝上型電腦。16G記憶體花了141.98美元,256GB SSD多收200美元。另外,如果在Pandas里加載一個10GB的csv檔案,實際在記憶體裡並沒有那麼大——你可以將 “17284932583” 這樣的數值串存為4位或者8位整數,“284572452.2435723”存為8位雙精度。

最差情況下,你還可以不同時將所有資料都一次載入到記憶體裡。

可我的資料有100GB/500GB/1TB!

一個2T的硬碟才94.99美元,4T是169.99。買一塊,加到桌面電腦或者伺服器上,然後裝上PostgreSQL。

Hadoop的適用範圍遠小於SQL和Python指令碼

從計算的表達能力來說,Hadoop比SQL差多了。Hadoop裡能寫的計算,在SQL或者簡單的Python指令碼都可以更輕鬆地寫出來。

SQL是直觀的查詢語言,沒有太多抽象,業務分析師和程式設計師都很常用。SQL查詢往往非常簡單,而且一般也很快——只要資料庫正確地做了索引,要花幾秒鐘的查詢都不太多見。

Hadoop沒有任何索引的概念,它只知道全表掃描。而且Hadoop抽象層次太多了——我之前的專案盡在應付Java記憶體錯誤、記憶體碎片和叢集競用了,實際的資料分析工作反而沒了時間。

如果你的資料結構不是SQL表的形式(比如純文字、JSON、二進位制),一般寫一小段Python或者Ruby指令碼按行處理更直接。儲存在多個檔案裡,逐個處理即可。SQL不適用的情況下,從程式設計來說Hadoop也沒那麼糟糕,但相比Python指令碼仍然沒有什麼優勢。

除了難以程式設計,Hadoop還一般總是比其他技術方案要慢。只要索引用得好,SQL查詢非常快。比如要計算join,PostgreSQL只需檢視索引(如果有),然後查詢所需的每個鍵。而Hadoop呢,必須做全表掃描,然後重排整個表。排序通過多臺機器之間分片可以加速,但也帶來了跨多機資料流處理的開銷。如果要處理二進位制檔案,Hadoop必須反覆訪問namenode。而簡單的Python指令碼只要反覆訪問檔案系統即可。

可我的資料超過了5TB!

你的命可真苦——只能苦逼地折騰Hadoop了,沒有太多其他選擇(可能還能用許多硬碟容量的高富帥機器來扛),而且其他選擇往往貴得要命(腦海中浮現出IOE等等字樣……)。

用Hadoop唯一的好處是擴充套件。如果你的資料是一個數TB的單表,那麼全表掃描是Hadoop的強項。此外的話,請關愛生命,儘量遠離Hadoop。它帶來的煩惱根本不值,用傳統方法既省時又省力。

附註:Hadoop也是不錯的工具

我可不是成心黑Hadoop啊。其實我自己經常用Hadoop來完成其他工具無法輕易完成的任務。(我推薦使用Scalding,而不是Hive或者Pig,因為你可以用Scala語言來寫級聯Hadoop任務,隱藏了MapReduce底層細節。)我本文要強調的是,用Hadoop之前應該三思而行,別500MB資料這樣的蚊子,你也拿Hadoop這樣的大炮來轟。

相關推薦

什麼Hadoop資料根本不夠

本文原名“Don't use Hadoop when your data isn't that big ”,出自有著多年從業經驗的資料科學家Chris Stucchio,紐約大學柯朗研究所博士後,搞過高頻交易平臺,當過創業公司的CTO,更習慣稱自己為統計學者。對

雙十一快到還不明白品牌都喜歡投自媒-重慶時中文化

官方 是否 信息流 spa 媒體 表達 集中 禮貌 內容 不知道廣告主們有沒有發現,現在越來越多的廣告位都被官方的宣傳占據了。那你是否感到疑問呢? 原因很簡單,一方面是處於特殊階段,戶外宣傳大多數集中在宣傳上,另一方面就是偏好已經改變,現在都更偏向在自媒體上下功夫了。

還在記密碼? | 1password 備忘&教程

平臺 配置 其他 value 一起 word 其中 是你 方式 每個人在網上或電腦離線軟件上都會有一些賬號和密碼。 這些賬號,如果你設置成一個呢,不安全,尤其是如果你很多地方的賬號密碼都是同一套的話,如果在一個安全系數比較低的地方被盜號了,那其他地方也瞬間都不安全了。 但如

要找的Visio最佳替代就在這!

Visio 替代 繪圖軟件 國產軟件 論是工作還是學習,常會涉及繪制一些可視化的圖形或圖表,比如流程圖、組織架構圖、思維導圖等。遇到這樣的問題,不少人想起用 Word 裏蹩腳的形狀功能來繪制。 顯然,用 Word 繪圖的效率是極其低的,而且效果也並不美觀。在這時候,不妨試試「

【轉】那些事情導致板下調的評價

提前 方案 掌握 但我 真的 周期 事情 未來 所在 別像死魚一樣 在我的團隊裏,出現過不少次這樣的情況,就是你發個消息在工作群裏,沒人回應,比如我看了一篇比較好的營銷文章,發到運營群裏,問大家覺得這個怎樣?然後就出現了死寂的沈默,nobody say anything,除

電腦C盤快滿就重灌系統?犯傻看我三分鐘搞定(值得收藏備用)

隨著電腦使用時間的增長,突然有一天看到電腦C盤“紅了”或者所剩空間已不多,這就會對電腦的執行速度產生影響了,特別是做技術的,這種情況更是經常碰到,如下圖所示。此時若只是清理快取,只能暫時緩解,不能從根本上解決問題。這時有兩種方法:一是重灌系統,為C盤分配更大的容量,但是這種方

玩不過莊家的(深度解析世界盃外圍)

高智商的人創造了情商這個詞 用來安慰智商低的人 數學天才們創造了賭博這個遊戲 用來榨取凡人的財富 — 蔡安然 — 足球反著買,別墅靠大海 要想天天富,冷門下重注 贏了會所嫩模,輸了下地幹活 要麼買樓,背山面海,高樓獨棟 要麼看樓,天台不擠,自由落體 別問為什麼,年輕

都9102年還在做“資料搬運工”嗎?

幾年前,英國某企業創始人Alex寫過一篇部落格《這才是我所謂的黑客》。故事主人公幾乎從不自己幹活,任何需要佔用他90秒以上的工作,

【萬字長文】再報班一篇文章帶入門Python

本文始發於個人公眾號:**TechFlow**,原創不易,求個關注 最近有許多小夥伴後臺聯絡我,說目前想要學習Python,但是沒有一份很好的資料入門。一方面的確現在市面上Python的資料過多,導致新手會不知如何選擇,另一個問題很多資料內容也很雜,從1+1到深度學習都包括,純粹關注Python本身語法

【心得】只有當去做才能真正體會它

天下 成了 什麽 同學 一個 nbsp 做了 bsp 兩個   來深圳工作已經快兩個月了,我同學住我樓下,我來的那天,她就幾乎每天下班回來都會玩“王者榮耀”,她說很好玩,很多人都在玩。 對此,我不以為然,覺得不就是打打殺殺的嗎,有什麽好玩的。   前幾天,她來我樓上蹭網

寫給立誌做碼農的大學生(蘑菇街都掛還要面騰訊? 我去我一定要去)

鍵盤 前言 docker 二本 征求意見 小時 形勢 我沒 妹子 先簡單介紹一下我自己,我是一所普通大學的本科生,大學錄取時的專業是非計算機系的,在大一下學期意識到自己喜歡敲代碼以後,就提交了轉專業申請。大二起開始在計算機系學習。大三時(2015年4月)拿到了騰訊暑期實習的

【10000+文章匯總】技巧都在這裏也能寫出1w+好文!

51cto博客 10000+ 自 #我要10000+# 計劃啟動以來,已經有多位作者參與其中,我們通過文章專屬推廣渠道,取得了驚人的效果!單篇文章的閱讀量,最高達到55倍的閱讀量增長。從默默無聞,到有人喜歡,獲得關註的同時,打造個人影響力。現在讓我們來看看,這些 10000+ 好文,都有哪些~標題閱讀

板不在不得不做出越權的決定該怎麽辦?

培訓 責任 bsp 負責人 曾經 聯系 工作相關 匯報 丟失 [職場考試] 問題1:假設你的老板不在,你不得不做出超過你權限的決定,你該怎麽做(考察主動性和獨立思考能力)? 解答: 說明:此題既然提到老板,你的直接上級就是老板了。另,強調下此題意思是必須要做決定,以下僅為老

網時|ipone又來的腎養好沒?

ipone 網時ipone問世已經10年了,每一次的新品發布會都會讓你的腎顫抖一番。2017年9月13日淩晨1點,在喬布斯劇院舉行新品發布會,這次不僅帶來了4.7英寸ipone8和5.5英寸ipone8 plus,還有10周年的紀念5.8英寸的iponeX,三款手機均為雙面玻璃鏡面,防塵防水,並支持無線充電,

[ZZ] 深度學習三巨頭之一來清華演講只需要知道這7點

動態 能夠 關系 領域 那一刻 計劃 world 哪些 net 深度學習三巨頭之一來清華演講了,你只需要知道這7點 http://wemedia.ifeng.com/10939074/wemedia.shtml Yann LeCun還提到了一項FAIR開發的,用於

“共享護士”來看好這種互聯網+醫療的嘗試嗎?

共享護士 近日,關於共享護士的新聞,引起了社會各界的廣泛關註。這種結合互聯網+醫療的嘗試在方便我們大家的同時,也引發了不少關於整個行業規範以及風險規避制度的討論。目前有看好的,有持懷疑態度者都不占少數。其中關於相關平臺對於簽約護士相關的標準,還有如果出現意外,如何能保障病人權益等的問題都比較受大家關註。今天我

為什麽前後端分離比從前更痛苦?

技術 book 設計 機制 需求 返回 痛苦 頁面 更改 ? 你有沒有遇到過: 前端代碼剛寫完,後端的接口又變了。 接口文檔永遠都是不對的。 測試工作永遠只能臨近上線才能開始。 為什麽前後端分離了,你比從前更痛苦? 前後端分離早已經不是新聞,當真正分離之

11月10日直播:EVE-NG模擬器入門和司機心得分享來不來?

體驗 心得分享 兩個 png racer 功能介紹 img 因此 text 大家好。 今天要告訴你們一個好消息,本周六11月10號早上10點到11點。 我計劃開一個直播和你們一起聊聊如何入門EVE-NG模擬器。 說起EVE-NG,相信很多人都多多少少聽說過。 它和GNS3,

TensorFlow 三歲想對它說點什麼?

讓我們一起慶祝一件非常開心的事情,TensorFlow 3 歲了!  自 2015 年首次釋出以來,已經走過了漫長的道路。如果沒有所有人一直以來的努力,就不會有現在的 TensorFlow 框架。 在我們努力研究 TensorFlow 2.0 的同時,我們來看一下以往新增

00後開始學Python卻原地打轉?常用的Python庫和示例送

AI從2016年發展至今,不僅僅是人工智慧、資料分析領域必不可少的工具 作為最年輕的語言,它被越來越多地公司用於網站搭建。Python 崗位的薪水在水漲船高,成為目前最有潛力的程式語言之一。 但是最近突然出現的熱點,卻讓我們開始惶恐起來。 小學生不打王者榮耀,不吃雞,不LOL了,他