大數據Hadoop入門簡介

hadoop是什麼

Hadoop實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的硬件上;而且它提供高吞吐量來訪問應用程序的數據,適合那些有着超大數據集的應用程序。HDFS放寬了POSIX的要求,可以以流的形式訪問文件系統中的數據。

Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,而MapReduce則爲海量的數據提供了計算。

 

1、Apache Hadoop:是Apache開源組織的一個分佈式計算開源框架,提供了一個分佈式文件系統子項目(HDFS)和支持MapReduce分佈式計算的軟件架構。

對大數據以及人工智能概念都是模糊不清的,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大數據學習qq羣:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大數據講師給大家免費授課,給大家分享目前國內最完整的大數據高端實戰實用學習流程體系 。從java和linux入手,其後逐步的深入到HADOOP-hive-oozie-web-flume-python-hbase-kafka-scala-SPARK等相關知識一一分享!

2、Apache Hive:是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射爲一張數據庫表,通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。

 

3、Apache Pig:是一個基於Hadoop的大規模數據分析工具,它提供的SQL-LIKE語言叫PigLatin,該語言的編譯器會把類SQL的數據分析請求轉換爲一系列經過優化處理的MapReduce運算。

 

4、Apache HBase:是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase技術可在廉價PCServer上搭建起大規模結構化存儲集羣。

 

5、Apache Sqoop:是一個用來將Hadoop和關係型數據庫中的數據相互轉移的工具,可以將一個關係型數據庫(MySQL,Oracle,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。

 

6、Apache Zookeeper:是一個爲分佈式應用所設計的分佈的、開源的協調服務,它主要是用來解決分佈式應用中經常遇到的一些數據管理問題,簡化分佈式應用協調及其管理的難度,提供高性能的分佈式服務。

 

7、Apache Mahout:是基於Hadoop的機器學習和數據挖掘的一個分佈式框架。Mahout用MapReduce實現了部分數據挖掘算法,解決了並行挖掘的問題。

 

8、Apache Cassandra:是一套開源分佈式NoSQL數據庫系統。它最初由Facebook開發,用於儲存簡單格式數據,集GoogleBigTable的數據模型與AmazonDynamo的完全分佈式的架構於一身

9、Apache Avro:是一個數據序列化系統,設計用於支持數據密集型,大批量數據交換的應用。Avro是新的數據序列化格式與傳輸工具,將逐步取代Hadoop原有的IPC機制。

 

10、 Apache Ambari:是一種基於Web的工具,支持Hadoop集羣的供應、管理和監控。

 

11、 Apache Chukwa:是一個開源的用於監控大型分佈式系統的數據收集系統,它可以將各種各樣類型的數據收集成適合Hadoop處理的文件保存在HDFS中供Hadoop進行各種MapReduce操作。

 

12、Apache Hama:是一個基於HDFS的BSP(BulkSynchronousParallel)並行計算框架,Hama可用於包括圖、矩陣和網絡算法在內的大規模、大數據計算。

 

13、Apache Flume:是一個分佈的、可靠的、高可用的海量日誌聚合的系統,可用於日誌數據收集,日誌數據處理,日誌數據傳輸。

 

14、Apache Giraph:是一個可伸縮的分佈式迭代圖處理系統,基於Hadoop平臺,靈感來自BSP(bulksynchronousparallel)和Google的Pregel。

 

15、 Apache Oozie:是一個工作流引擎服務器,用於管理和協調運行在Hadoop平臺上(HDFS、Pig和MapReduce)的任務。

 

16、Apache Crunch:是基於Google的FlumeJava庫編寫的Java庫,用於創建MapReduce程序。與Hive,Pig類似,Crunch提供了用於實現如連接數據、執行聚合和排序記錄等常見任務的模式庫。

 

17、Apache Whirr:是一套運行於雲服務的類庫(包括Hadoop),可提供高度的互補性。Whirr學支持AmazonEC2和Rackspace的服務。

 

18、Apache Bigtop:是一個對Hadoop及其周邊生態進行打包,分發和測試的工具。

 

19、Apache HCatalog:是基於Hadoop的數據表和存儲管理,實現中央的元數據和模式管理,跨越Hadoop和RDBMS,利用Pig和Hive提供關係視圖。

 

20、 Cloudera Hue:是一個基於WEB的監控和管理系統,實現對HDFS,MapReduce/YARN,HBase,Hive,Pig的web化操作和管理。

HDFS文件系統

HDFS(Hadoop Distributed File System,Hadoop分佈式文件系統),它是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,適合那些有着超大數據集(largedata set)的應用程序。

HDFS的設計特點:

1、大數據文件,非常適合上T級別的大文件或者一堆大數據文件的存儲。

2、文件分塊存儲,HDFS會將一個完整的大文件平均分塊存儲到不同計算器上,它的意義在於讀取文件時可以同時從多個主機取不同區塊的文件,多主機讀取比單主機讀取效率要高得多。

3、流式數據訪問,一次寫入多次讀寫,這種模式跟傳統文件不同,它不支持動態改變文件內容,而是要求讓文件一次寫入就不做變化,要變化也只能在文件末添加內容。

4、廉價硬件,HDFS可以應用在普通PC機上,這種機制能夠讓給一些公司用幾十臺廉價的計算機就可以撐起一個大數據集羣。

5、硬件故障,HDFS認爲所有計算機都可能會出問題,爲了防止某個主機失效讀取不到該主機的塊文件,它將同一個文件塊副本分配到其它某幾個主機上,如果其中一臺主機失效,可以迅速找另一塊副本取文件。

 

HDFS的master/slave構架:

一個HDFS集羣是有一個Namenode和一定數目的Datanode組成。Namenode是一箇中心服務器,負責管理文件系統的namespace和客戶端對文件的訪問。Datanode在集羣中一般是一個節點一個,負責管理節點上它們附帶的存儲。在內部,一個文件其實分成一個或多個block,這些block存儲在Datanode集合裏。Namenode執行文件系統的namespace操作,例如打開、關閉、重命名文件和目錄,同時決定block到具體Datanode節點的映射。Datanode在Namenode的指揮下進行block的創建、刪除和複製。Namenode和Datanode都是設計成可以跑在普通的廉價的運行linux的機器上。

 

HDFS的關鍵元素:

1、Block:將一個文件進行分塊,通常是64M。

2、NameNode:保存整個文件系統的目錄信息、文件信息及分塊信息,這是由唯一一臺主機專門保存,當然這臺主機如果出錯,NameNode就失效了。在Hadoop2.*開始支持activity-standy模式----如果主NameNode失效,啓動備用主機運行NameNode。

3、DataNode:分佈在廉價的計算機上,用於存儲Block塊文件。

MapReduce文件系統

MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。MapReduce將分成兩個部分"Map(映射)"和"Reduce(歸約)"。

當你向MapReduce框架提交一個計算作業時,它會首先把計算作業拆分成若干個Map任務,然後分配到不同的節點上去執行,每一個Map任務處理輸入數據中的一部分,當Map任務完成後,它會生成一些中間文件,這些中間文件將會作爲Reduce任務的輸入數據。Reduce任務的主要目標就是把前面若干個Map的輸出彙總到一起並輸出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章