前言
這些天,有很多人諮詢我大數據相關的一些信息,覺得大數據再未來會是一個朝陽行業,希望能儘早學會、入行,借這個機會,我決定寫一下關於大數據的知識和我這些年的感悟。
我寫這個博客目的就是爲了幫助新人快速的進入大數據行業,市面上有很多類似的書籍都是重理論少實踐,特別缺少一線企業實踐經驗的傳授,而這個課程會讓您少走彎路、快速入門和實踐,讓您再最短時間內達到一個一線企業大數據工程師的能力標準,因爲在課程整理和實踐安排上過濾掉很多用不上的知識,直接帶領大家以最直接的方式掌握大數據使用方法。
我在知名一線互聯網公司從事大數據開發與管理多年,深知業界大數據公司一直對大數據人才的渴望,同時也知道有很多的大數據愛好者想參與進這個朝陽行業,因爲平時也是需要參與大數據工程師的招聘與培養的,所以特別想通過一種方式,讓廣大的大數據愛好者更好的與企業對接,讓優秀的人才找到合適的企業,《Hadoop大數據實戰手冊》是我根據多年從業經驗整理的系列課程,接下來的文章是根據這本書再次整理成文,希望讓更多的大數據愛好者收益!
那hadoop又是什麼呢?
hadoop簡介
Hadoop是一個由Apache基金會所開發的開源分佈式系統基礎架構。用戶可以在不瞭解分佈式底層細節的情況下,開發分佈式程序,充分利用集羣的威力進行高速運算和存儲。解決了大數據(大到一臺計算機無法進行存儲,一臺計算機無法在要求的時間內進行處理)的可靠存儲和處理。適合處理非結構化數據,包括HDFS,MapReduce基本組件。
1.Hadoop版本衍化歷史
由於Hadoop版本混亂多變對初級用戶造成一定困擾,所以對其版本衍化歷史有個大概瞭解,有助於在實踐過程中選擇合適的Hadoop版本。
Apache Hadoop版本分爲分爲1.0和2.0兩代版本,我們將第一代Hadoop稱爲Hadoop 1.0,第二代Hadoop稱爲Hadoop 2.0。下圖是Apache Hadoop的版本衍化史:
第一代Hadoop包含三個大版本,分別是0.20.x,0.21.x和0.22.x,其中,0.20.x最後演化成1.0.x,變成了穩定版。
第二代Hadoop包含兩個版本,分別是0.23.x和2.x,它們完全不同於Hadoop 1.0,是一套全新的架構,均包含HDFS Federation和YARN兩個系統,相比於0.23.x,2.x增加了NameNode HA和Wire-compatibility兩個重大特性。
Hadoop遵從Apache開源協議,用戶可以免費地任意使用和修改Hadoop,也正因此,市面上出現了很多Hadoop版本,其中比較出名的一是Cloudera公司的發行版,該版本稱爲CDH(Cloudera Distribution Hadoop)。
截至目前爲止,CDH共有4個版本,其中,前兩個已經不再更新,最近的兩個,分別是CDH3(在Apache Hadoop 0.20.2版本基礎上演化而來的)和CDH4在Apache Hadoop 2.0.0版本基礎上演化而來的),分別對應Apache的Hadoop 1.0和Hadoop 2.0。
2. Hadoop生態圈
架構師和開發人員通常會使用一種軟件工具,用於其特定的用途軟件開發。例如,他們可能會說,Tomcat是Apache Web服務器,MySQL是一個數據庫工具。
然而,當提到Hadoop的時候,事情變得有點複雜。Hadoop包括大量的工具,用來協同工作。因此,Hadoop可用於完成許多事情,以至於,人們常常根據他們使用的方式來定義它。
對於一些人來說,Hadoop是一個數據管理系統。他們認爲Hadoop是數據分析的核心,彙集了結構化和非結構化的數據,這些數據分佈在傳統的企業數據棧的每一層。對於其他人,Hadoop是一個大規模並行處理框架,擁有超級計算能力,定位於推動企業級應用的執行。還有一些人認爲Hadoop作爲一個開源社區,主要爲解決大數據的問題提供工具和軟件。因爲Hadoop可以用來解決很多問題,所以很多人認爲Hadoop是一個基本框架。
雖然Hadoop提供了這麼多的功能,但是仍然應該把它歸類爲多個組件組成的Hadoop生態圈,這些組件包括數據存儲、數據集成、數據處理和其它進行數據分析的專門工具。
該圖主要列舉了生態圈內部主要的一些組件,從底部開始進行介紹:
1) HDFS:Hadoop生態圈的基本組成部分是Hadoop分佈式文件系統(HDFS)。HDFS是一種數據分佈式保存機制,數據被保存在計算機集羣上。數據寫入一次,讀取多次。HDFS爲HBase等工具提供了基礎。
2)MapReduce:Hadoop的主要執行框架是MapReduce,它是一個分佈式、並行處理的編程模型。MapReduce把任務分爲map(映射)階段和reduce(化簡)。開發人員使用存儲在HDFS中數據(可實現快速存儲),編寫Hadoop的MapReduce任務。由於MapReduce工作原理的特性, Hadoop能以並行的方式訪問數據,從而實現快速訪問數據。
3) Hbase:HBase是一個建立在HDFS之上,面向列的NoSQL數據庫,用於快速讀/寫大量數據。HBase使用Zookeeper進行管理,確保所有組件都正常運行。
4) ZooKeeper:用於Hadoop的分佈式協調服務。Hadoop的許多組件依賴於Zookeeper,它運行在計算機集羣上面,用於管理Hadoop操作。
5) Hive:Hive類似於SQL高級語言,用於運行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發人員也能編寫數據查詢語句,然後這些語句被翻譯爲Hadoop上面的MapReduce任務。像Pig一樣,Hive作爲一個抽象層工具,吸引了很多熟悉SQL而不是Java編程的數據分析師。
6) Pig:它是MapReduce編程的複雜性的抽象。Pig平臺包括運行環境和用於分析Hadoop數據集的腳本語言(Pig Latin)。其編譯器將Pig Latin翻譯成MapReduce程序序列。
7) Sqoop:是一個連接工具,用於在關係數據庫、數據倉庫和Hadoop之間轉移數據。Sqoop利用數據庫技術描述架構,進行數據的導入/導出;利用MapReduce實現並行化運行和容錯技術。
現在,我們對hadoop有了一個基本的瞭解,接下來我們就要進行hadoop環境的安裝,我會在下一篇文章中詳細介紹,如何安裝hadoop。