什麼是Hadoop,怎樣學習Hadoop

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。sql


hadoop學習


Hadoop實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特色,而且設計用來部署在低廉的(low-cost)硬件上;並且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有着超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,能夠以流的形式訪問(streaming access)文件系統中的數據。
Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了計算。一句話來說Hadoop就是存儲加計算。數據庫

Hadoop這個名字不是一個縮寫,而是一個虛構的名字。該項目的建立者,Doug Cutting解釋Hadoop的得名 :“這個名字是我孩子給一個棕黃色的大象玩具命名的。數據結構

Hadoop是一個可以讓用戶輕鬆架構和使用的分佈式計算平臺。用戶能夠輕鬆地在Hadoop上開發和運行處理海量數據的應用程序。它主要有如下幾個優勢:架構

一、高可靠性 Hadoop按位存儲和處理數據的能力值得人們信賴。框架

二、高擴展性 Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇能夠方便地擴展到數以千計的節點中。機器學習

三、高效性 Hadoop可以在節點之間動態地移動數據,並保證各個節點的動態平衡,所以處理速度很是快。分佈式

四、高容錯性 Hadoop可以自動保存數據的多個副本,而且可以自動將失敗的任務從新分配。工具

五、低成本 與一體機、商用數據倉庫以及QlikView、Yonghong Z-Suite等數據集市相比,hadoop是開源的,項目的軟件成本所以會大大下降。oop

Hadoop帶有用Java語言編寫的框架,所以運行在 Linux 生產平臺上是很是理想的。Hadoop 上的應用程序也可使用其餘語言編寫,好比 C++。性能

Hadoop大數據處理的意義

Hadoop得以在大數據處理應用中普遍應用得益於其自身在數據提取、變形和加載(ETL)方面上的自然優點。Hadoop的分佈式架構,將大數據處理引擎儘量的靠近存儲,對例如像ETL這樣的批處理操做相對合適,由於相似這樣操做的批處理結果能夠直接走向存儲。Hadoop的MapReduce功能實現了將單個任務打碎,並將碎片任務(Map)發送到多個節點上,以後再以單個數據集的形式加載(Reduce)到數據倉庫裏。

Hadoop由如下幾個項目構成

hadoop學習

一、Hadoop Common :Hadoop體系最底層的一個模塊,爲Hadoop各子項目提供各類工具,如:配置文件和日誌操做等。

二、HDFS:分佈式文件系統,提供高吞吐量的應用程序數據訪問,對外部客戶機而言,HDFS 就像一個傳統的分級文件系統。能夠建立、刪除、移動或重命名文件,等等。可是 HDFS 的架構是基於一組特定的節點構建的(參見圖 1),這是由它自身的特色決定的。這些節點包括 NameNode(僅一個),它在 HDFS 內部提供元數據服務;DataNode,它爲 HDFS 提供存儲塊。因爲僅存在一個 NameNode,所以這是 HDFS 的一個缺點(單點失敗)。    存儲在 HDFS 中的文件被分紅塊,而後將這些塊複製到多個計算機中(DataNode)。這與傳統的 RAID 架構大不相同。塊的大小(一般爲 64MB)和複製的塊數量在建立文件時由客戶機決定。NameNode 能夠控制全部文件操做。HDFS 內部的全部通訊都基於標準的 TCP/IP 協議。

三、MapReduce :一個分佈式海量數據處理的軟件框架集計算集羣。

四、Avro :doug cutting主持的RPC項目,主要負責數據的序列化。有點相似Google的protobuf和Facebook的thrift。avro用來作之後hadoop的RPC,使hadoop的RPC模塊通訊速度更快、數據結構更緊湊。

五、Hive :相似CloudBase,也是基於hadoop分佈式計算平臺上的提供data warehouse的sql功能的一套軟件。使得存儲在hadoop裏面的海量數據的彙總,即席查詢簡單化。hive提供了一套QL的查詢語言,以sql爲基礎,使用起來很方便。

六、HBase :基於Hadoop Distributed File System,是一個開源的,基於列存儲模型的可擴展的分佈式數據庫,支持大型表的存儲結構化數據。

七、Pig :是一個並行計算的高級的數據流語言和執行框架 ,SQL-like語言,是在MapReduce上構建的一種高級查詢語言,把一些運算編譯進MapReduce模型的Map和Reduce中,而且用戶能夠定義本身的功能。

八、ZooKeeper :Google的Chubby一個開源的實現。它是一個針對大型分佈式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、分佈式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。

九、Chukwa :一個管理大型分佈式系統的數據採集系統 由yahoo貢獻。

十、Cassandra :無單點故障的可擴展的多主數據庫 。

十一、Mahout :一個可擴展的機器學習和數據挖掘庫 。

Hadoop 設計之初的目標就定位於高可靠性、高可拓展性、高容錯性和高效性,正是這些設計上與生俱來的優勢,才使得Hadoop 一出現就受到衆多大公司的青睞,同時也引發了研究界的廣泛關注。到目前爲止,Hadoop 技術在互聯網領域已經獲得了普遍的運用,如Yahoo、Facebook、Adobe、IBM、百度、阿里巴巴、騰訊、華爲、中國移動等。

關於怎樣學習hadoop,首先要了解而且深入認識什麼是hadoop,它的原理以及做用是什麼,包括基本構成是什麼,分別有什麼做用,固然,在學習以前,至少要掌握一門基礎語言,這樣在學習起來纔會事半功倍,由於目前hadoop在國內發展時間不長,有興趣的朋友能夠先找一些書籍來學習,打好基本功,本站也將持續更新有關hadoop的學習方法以及資料資源共享,但願咱們一塊兒努力,有好的方法和建議歡迎交流。

相關文章
相關標籤/搜索