前言linux
從今天起,我將一步一步的分享大數據相關的知識,其實不少程序員感受大數據很難學,其實並非你想象的這樣,只要本身想學,還有什麼可貴呢?程序員
學習Hadoop有一個8020原則,80%都是在不斷的配置配置搭建集羣,只有20%寫程序!數據庫
咱們看一張圖片:apache
咱們知道這個圖片上的人叫張小妹,年齡20歲,職業模特。可是若是隻有數據沒有圖片的話,就沒有意義的數據了。因此數據必定是在特定的環境下才有意義的。編程
咱們再來看一張圖片:服務器
從這張圖片分析出:從縱向分析,範範和張帆的購買東西十分的類似,因此若是要推薦東西給張帆的話,咱們就能夠選擇小米手環。網絡
從橫向分析,無效鼠標,linux編程思想,皮鞋和小米手環都賣的比較火,其餘幾樣銷量少,因此咱們推薦就能夠把這幾樣放上去。架構
你們理解什麼是大數據嗎,那大數據到底有多大!咱們就以百度的數據來分析一下:框架
首先:1PB=1024T機器學習
分析:咱們就看最小的它天天產生的日誌就能夠看出來,百度天天要產生100TB~1PB的日誌數據。通常咱們電腦的硬盤是1T的。那就須要電腦的100個硬盤到1024塊硬盤,你想一想是多麼的恐怖!
其實對於大數據官方並無給出一個準確的定義,不一樣機構有着不一樣的定義。
1)對於「大數據」(Big data)研究機構 Gartner 給出了這樣的定義。「大數據」是須要新處理模式才能具備更強的決策力、洞察發現力和流程優化能力來適應海量、高增加率和多樣化的信息資產。
2)麥肯錫全球研究所給出的定義是:一種規模大到在獲取、存儲、管理、分析方面大大超出了傳統數據庫軟件工具能力範圍的數據集合,具備海量的數據規模、快速的數據流轉、多樣的數據類型和價值密度低四大特徵。
3)大數據技術的戰略意義不在於掌握龐大的數據信息,而在於對這些含有意義的數據進行專業化處理。換而言之,
若是把大數據比做一種產業,那麼這種產業實現盈利的關鍵,在於提升對數據的「加工能力」,經過「加工」實現數據的「增值」。
4) 從技術上看,大數據與雲計算的關係就像一枚硬幣的正反面同樣密不可分。大數據必然沒法用單臺的計算機進行處
理,必須採用分佈式架構。它的特點在於對海量數據進行分佈式數據挖掘。但它必須依託雲計算的分佈式處理、分佈式數據庫和雲存儲、虛擬化技術。
5)隨着雲時代的來臨,大數據(Big data)也吸引了愈來愈多的關注。分析師團隊認爲,大數據(Big data)一般用來形容一個公司創造的大量非結構化數據和半結構化數據,
這些數據在下載到關係型數據庫用於分析時會花費過多時間和金錢。大數據分析常和雲計算聯繫到一塊兒,由於實時的大型數據集分析須要像 MapReduce 同樣的框架來向數10、數百或甚至數千的電腦分配工做。
6) 大數據須要特殊的技術,以有效地處理大量的容忍通過時間內的數據。適用於大數據的技術,包括大規模並行處理(MPP)數據庫、數據挖掘、分佈式文件系統、分佈式數據庫、雲計算平臺、互聯網和可擴展的存儲系統。
7)谷歌給出的大數據定義和特色
容量(Volume):數據的大小決定所考慮的數據的價值和潛在的信息
種類(Variety):數據類型的多樣性
速度(Velocity):指得到數據的速度
可變性(Variability):妨礙了處理和有效地管理數據的過程
真實性(Veracity):數據的質量
複雜性(Complexity):數據量巨大,來源多渠道
價值(Value):合理運用大數據,以低成本創造高價值
1)如今的社會是一個高速發展的社會,科技發達,信息流通,人們之間的交流愈來愈密切,生活也愈來愈方便,大數據就是這個高科技時代的產物。
阿里巴巴創辦人馬雲來臺演講中就提到,將來的時代將不是 IT 時代,而是 DT 的時代,DT 就是 Data Technology 數據科技,顯示大數據對於阿里巴巴集團來講舉足輕重。
2)有人把數據比喻爲蘊藏能量的煤礦。煤炭按照性質有焦煤、無煙煤、肥煤、貧煤等分類,而露天煤礦、深山煤礦的挖掘成本又不同。與此相似,大數據並不在「大」,而在於「有用」。
價值含量、挖掘成本比數量更爲重要。對於不少行業而言, 如何利用這些大規模數據是贏得競爭的關鍵。
3)大數據的價值體如今如下幾個方面:
對大量消費者提供產品或服務的企業能夠利用大數據進行精準營銷
作小而美模式的中小微企業能夠利用大數據作服務轉型
面臨互聯網壓力之下必須轉型的傳統企業須要與時俱進充分利用大數據的價值
4)不過,「大數據」在經濟發展中的巨大意義並不表明其能取代一切對於社會問題的理性思考,科學發展的邏輯不能被湮沒在海量數據中。
著名經濟學家路德維希·馮·米塞斯曾提醒過:「就今日言,有不少人忙碌於資料之無益累積,以至對問題之說明與解決,喪失了其對特殊的經濟意義的瞭解。」這確實是須要警戒的。
5)在這個快速發展的智能硬件時代,困擾應用開發者的一個重要問題就是如何在功率、覆蓋範圍、傳輸速率和成本之間找到那個微妙的平衡點。
企業組織利用相關數據和分析能夠幫助它們下降成本、提升效率、開發新產品、作出更明智的業務決策等等。
例如,經過結合大數據和高性能的分析,下面這些對企業有益的狀況均可能會發生:
及時解析故障、問題和缺陷的根源,每一年可能爲企業節省數十億美圓。
爲成千上萬的快遞車輛規劃實時交通路線,躲避擁堵。
根據客戶的購買習慣,爲其推送他可能感興趣的優惠信息。
從大量客戶中快速識別出金牌客戶。
使用點擊流分析和數據挖掘來規避欺詐行爲。
1)集羣(Cluster):服務器集羣就是指將不少服務器集中起來一塊兒進行同一種服務,在客戶端看來就像是隻有一個服務器。集羣能夠利用多個計算機進行並行 計算從而得到很高的計算速度,也能夠用多個計算機作備份,
從而使得任何一個機器壞了整個系統仍是能正常運行。(通俗來講就是由若干計算機組成的,共同協做來完成一個大型複雜計算任務的計算機羣體。 )
2)數據密集型(DIC):在集羣中所計算的數據的量比較大,可是計算過程並不複雜。
3)計算密集型(CIC):數據量並不大,可是計算過程是比較複雜的。
4)向上擴展(Scale-up):對硬件的擴展。受限於硬件的發展。其實就是對cpu、內存、硬盤的擴展
5)向外擴展(Scale-out):經過計算機集羣的方式來提升計算能力。 (例如當某個計算任務用 10 臺計算機不能完成時就增長計算機臺數來完成)。受限於網絡資源。其實就是對服務器個數的擴展
6)機器學習(MachineLearning):當數據被處理完,用來獲取所處理的信息。從數據集中獲取信息。
7)雲計算(CloudComputing):經過互聯網來提供動態易擴展且常常是虛擬化的資源
1)Hadoop 是一個由 Apache 基金會所開發的分佈式系統基礎架構。
2)用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。
3)Hadoop 實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱 HDFS。 HDFS 有高容錯性的特色,而且設計用來部署在低廉的(low-cost)硬件上;
並且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有着超大數據集(large data set)的應用程序。
HDFS 放寬了(relax) POSIX 的要求,能夠以流的形式訪問(streaming access)文件系統中的數據。
4)Hadoop 的框架最核心的設計就是: HDFS 和 MapReduce。 HDFS 爲海量的數據提供了存儲,則 MapReduce 爲海量的數據提供了計算。
1)Hadoop 是一個可以對大量數據進行分佈式處理的軟件框架。
2) Hadoop 以一種可靠、高效、可伸縮的方式進行數據處理。
3)Hadoop 是可靠的,由於它假設計算元素和存儲會失敗,所以它維護多個工做數據副本,確保可以針對失敗的節點從新分佈處理。
4)Hadoop 是高效的,由於它以並行的方式工做,經過並行處理加快處理速度。
5)Hadoop 仍是可伸縮的,可以處理 PB 級數據。
6)Hadoop 依賴於社區服務,所以它的成本比較低,任何人均可以使用。
7)Hadoop是一個可以讓用戶輕鬆架構和使用的分佈式計算平臺。用戶能夠輕鬆地在Hadoop上開發和運行處理海量數據的應用程序。它主要有如下幾個優勢:
高可靠性:Hadoop 按位存儲和處理數據的能力值得人們信賴
高擴展性:Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇能夠方便地擴展到數以千計的節點中。
高效性:Hadoop 可以在節點之間動態地移動數據,並保證各個節點的動態平衡,所以處理速度很是快
高容錯性:Hadoop 可以自動保存數據的多個副本,而且可以自動將失敗的任務從新分配
低成本:與一體機、商用數據倉庫以及 QlikView、 Yonghong Z-Suite 等數據集市相比, hadoop 是開源的,項目的軟件成本所以會大大下降。
8)Hadoop 帶有用 Java 語言編寫的框架,所以運行在 Linux 生產平臺上是很是理想的。 Hadoop 上的應用程序也可使用其餘語言編寫,好比 C++。
通過幾年的發展,Hadoop已經發展成包含多個相關項目的軟件生態系統。(也就是說Hadoop包含着許多的子項目)
1)狹義的Hadoop
核心項目:
Hadoop Common: 在 0.20 及之前的版本中,包含 HDFS、 MapReduce 和其餘項目公共內容,從 0.21 開始 HDFS和 MapReduce 被分離爲獨立的子項目,其他內容爲 Hadoop Common
爲Hadoop其餘項目提供一些經常使用工具,如系統配置工具Configuration、遠程過程調用RPC序列化機制、Had抽象文件系統FileSystem等。
HDFS: Hadoop 分佈式文件系統(Distributed File System),運行大型商用機集羣,是Hadoop體系中海量數據儲存管理的基礎。
MapReduce: 並行計算框架, 0.20 前使用 org.apache.hadoop.mapred 舊接口, 0.20 版本開始引入 org.apache.hadoop.mapreduce 的新 API。
分佈式數據處理模型和執行環境,是Hadoop體系中海量數據處理的基礎。
2)廣義的Hadoop
核心項目+其餘項目(Avro、Zppkeeper、Hive、Pig、Hbase等):
上面爲基礎,面向具體領域或應用的項目有:mahout、X-Rime、Crissbow、lvory等
數據交換、工做流等外圍支撐系統:Chukwa、Flume、Sqoop、Oozie
子項目:
Hbase:
Zookeeper:
Apache Pig:
Apache Hive:
Apache Flume:
Apache sqoop:
Mahout:
Ambari: