Hadoop和大數據是這兩年最火的詞兒們之一,愈來愈多的公司對這個東西感興趣,可是我接觸到的大多數公司裏的人,不管是技術人員仍是老闆。都不知道怎麼能把這些東西用於改善本身公司的業務。在解答的過程當中,提煉出幾個要點,記錄一下。程序員
大數據和雲是否是一回事?算法
這是最容易混淆的概念之一,我我的認爲這是兩回事,雲服務,不管是雲主機仍是雲存儲仍是雲的其餘應用,都是向用戶提供一個接口,但這個接口的後端是虛擬機技術,或者分佈式存儲技術,或者其餘分佈式計算技術等等。簡而言之,雲的概念就是我向你提供服務,而你不須要關心這種服務的架構或者技術實現有多麼複雜。打個比方,就好象是,雲以前的時代咱們要用電,就須要本身造一個電廠發電,造機組,造變電站,而後再去用它。而云服務就好象是別人搭好了一個電廠,電線直接進你家,你要用,只須要插上插頭,不須要關心電是怎麼被製造出來的。電力的生產和電力設備的維護都由國家電網承擔。聯繫到網絡方面,就是,咱們之前要本身買服務器,本身裝系統,本身上架,本身作負載均衡,本身維護軟硬件環境。有了雲以後,這些都經過雲服務商的虛擬機技術完成了。數據安全和網絡安全都由雲服務商提供,你也不須要專門請人維護一堆設備。數據庫
而說到大數據,這個能夠是基於雲的,也能夠是不基於雲的。大數據的處理技術與提供雲服務的技術是不盡相同的,可是又有所交集。能夠說,雲服務是基礎設施,是市政工程,而大數據是城市裏的高樓大廈。大數據能夠基於雲,也能夠不基於雲。後端
從技術角度上說,國內的大多數雲服務商,主要提供的是虛擬機服務,這是一種分的概念,把一臺物理服務器拆成多個虛擬的小服務器,儘量多的使用其物理資源,避免浪費。而大數據是合的思想,是把不少臺服務器合併成一個虛擬的巨型服務器,經過分配計算資源使數據能夠快速的爲生產力服務。用一句中國的老話形容大數據和Hadoop就是:三個臭皮匠頂個諸葛亮。用合併起來的計算資源超越小型機或者中型機的計算能力。這裏面固然也有云的概念存在着,就是說,你不須要關心數據的存儲和計算究竟是怎麼完成的,你只須要用就能夠了。安全
大數據技術是否是必定須要數據量大才能夠,數據量不大就不須要用?服務器
一般是這樣認爲的,可是並不絕對,計算維度大,計算過程複雜也均可以認爲是大數據。換句話說,就是,若是你所須要的數據,在你所須要的時間內沒法正常計算出來,你可能就須要用到大數據的技術了。網絡
一方面,你的數據須要的存儲量超過數據庫或者數據倉庫的能力範圍,你可能須要大數據技術;另外一方面,你的計算量超過傳統的數據處理手段的時效性能力範圍以外,你也可能須要大數據技術。而典型的計算能力的挑戰就是來自於數據挖掘和多維度分析。可能數據量不大,可是算法和過程很複雜,也可能會須要大數據的技術。好比對用戶作推薦,基於用戶羣的分類作精準的廣告投放。或者在傳統行業計算氣象預報,計算地質數據作石油探測,礦產探測。又或者用在金融行業,經過對歷史數據創建數學模型,對證券和期貨貸款等作風險預估。之因此阿里巴巴對於中國的經濟和進出口的預測比商務部和統計局更精準,除了他們有一羣數學和統計專家外,大數據是徹底不可或缺的技術手段。架構
大數據技術是否是就是那個什麼憨杜普?負載均衡
顯然不是,大數據領域存在不少廠商和應用,有開源的,有收費的。好比一些非Hadoop大數據處理的公司和軟件,EMC的Greenplum,Splunk公司的splunk等等。這些都不是基於Hadoop的,可是也有共同的缺陷,就是很貴。因此,大多數公司採用開源軟件來完成大數據的業務處理。而開源領域作得最好的,應該就是hadoop了。因此如今hadoop基本成了大數據處理的代名詞了。基於Hadoop衍生了不少家商業公司,由於Apache的許可協議並不拒絕商業。像國內比較知名的Cloudera,MapR,他們的商業產品都是基於Hadoop及其周邊的生態軟件。分佈式
大數據應該怎麼推動公司業務的發展?
這是個關乎想象力的事情,有了大容量和大計算,至於怎麼用,這隻能本身想。原來數據怎麼作如今還怎麼作,不過除了啤酒與尿布,口香糖與避孕套以外,還有一個比較生動的案例大約是這樣的:美國有一個公司,在各產糧區每隔一英里插一個傳感器,收集空氣溼度和土壤含氮量等數據。收集上來之後經過大數據的處理手段和算法,預測出該地區的收成可能會是什麼狀況,而後把預測報告賣給美國的農業保險公司。
Hadoop有什麼優缺點?
Hadoop的優勢是數據的容量和計算能力以及數據的備份安全性有了很大程度的提高,1.0最大能夠支持到大約4000臺服務器的並行存儲和運算,而2.0大約能夠支持6000臺服務器。不過2.0如今還不是很完善,因此生產環境仍是建議用1.0。我認爲4000臺集羣的容量和計算能力足以匹敵IBM的大型機,從去年12月15號的中國銀行大型機宕機事件來看。大型機就算安全性再有保障,也畢竟是單點。真出了故障,誰也不敢拍板切換到備份大型機上。Hadoop 1.0已經有了不少方案去解決單點問題,2.0本身就支持單點故障切換。或許將來繼續發展,將全面超越大型機。事實上,IBM已經開始出本身的Hadoop發行版了。
至於缺點,就是Hadoop1.0仍是存在單點問題,可是能夠經過其餘技術手段彌補作到熱切換,只是要求維護人員的技術水平較高。另一個缺點是計算的時間會比較長,還沒法作到實時查詢和快速決策響應。可是有不少其餘的方案在彌補Hadoop的這個問題,像Apache出的跟Google Dremel競爭的Drill,Cloudera推出的Impala,和其餘一些產品。而實時計算則有Twitter開源的Storm集羣,設計理念跟Hadoop是同樣的,可是能夠對實時數據流進行計算,並即刻生成計算結果。作到隨查隨出。
在各個開源社區的支持下,在全世界程序員的共同努力下,大數據的處理能力也在高速的發展,程序員們正在用本身的智慧改造這個世界。