日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

導讀:大數據正在成為經濟社會發展的新的驅動力。隨著云計算、移動互聯網等網絡新技術的應用和發展,社會信息化進程進入大數據時代,海量數據的產生與流轉成為常態。而大數據技術也如雨后春筍般正在蓬勃發展中。Hadoop分布式架構無疑是當前應用最廣泛、最具代表性的大數據技術之一。

Hadoop生態系統

01

Hadoop技術概述

在大數據時代,針對大數據處理的新技術也在不斷地開發和運用中,并逐漸成為數據處理挖掘行業廣泛使用的主流技術。Hadoop作為處理大數據的分布式存儲和計算框架,已在國內外大、中、小型企業中得到了廣泛應用。學習Hadoop技術是從事大數據行業工作必不可少的一步。

1Hadoop的發展歷史

Hadoop是由Apache的Lucence項目創始人道格·卡廷創建的,Lucence是一個應用廣泛的文本搜索系統庫。Hadoop起源于開源的網絡搜索引擎Nutch,Nutch本身也是Lucence項目的一部分。Hadoop的發展歷史如圖1所示。

圖1 Hadoop的發展歷史

2Hadoop的特點

Hadoop是一個能夠讓用戶輕松搭建和使用的分布式計算平臺,能夠讓用戶輕松地在Hadoop上開發和運行處理海量數據的應用程序。Hadoop的主要特點如下。

1)高可靠性。Hadoop的數據存儲有多個備份,集群部署在不同機器上,可以防止一個節點宕機造成集群損壞。當數據處理請求失敗時,Hadoop將自動重新部署計算任務。

2)高擴展性。Hadoop是在可用的計算機集群間分配數據并完成計算任務的。為集群添加新的節點并不復雜,因此可以很容易地對集群進行節點的擴展。

3)高效性。Hadoop可以在節點之間動態地移動數據,在數據所在節點進行并行處理,并保證各個節點的動態平衡,因此處理速度非常快。

4)高容錯性。Hadoop的分布式文件系統HDFS在存儲文件時將在多臺機器或多個節點上存儲文件的備份副本,當讀取該文件出錯或某一臺機器宕機時,系統會調用其他節點上的備份文件,保證程序順利運行。

5)低成本。Hadoop是開源的,即不需要支付任何費用即可下載并安裝使用,節省了購買軟件的成本。

6)可構建在廉價機器上。Hadoop不要求機器的配置達到極高的標準,大部分普通商用服務器即可滿足要求,通過提供多個副本和容錯機制提高集群的可靠性。

7)Hadoop基本框架是基于JAVA語言編寫的。Hadoop是一個基于Java語言開發的框架,因此運行在linux系統上是非常理想的。Hadoop上的應用程序也可以使用其他語言編寫,如C++和Python/ target=_blank class=infotextkey>Python。

3Hadoop存儲框架—HDFS

HDFS是一種旨在普通硬件上運行的分布式文件系統,與現有的分布式文件系統有許多相似之處,但也存在明顯的區別。HDFS具有非常好的容錯能力,旨在部署在低成本硬件上。HDFS支持對應用程序數據進行高吞吐量訪問,并且適用于具有海量數據集的讀寫。HDFS是Hadoop的核心組件之一,用于存儲數據。

HDFS簡介及架構

HDFS是以分布式進行存儲的文件系統,主要負責集群數據的存儲與讀取。分布式系統可以劃分成多個子系統或模塊,各自運行在不同的機器上,子系統或模塊之間通過網絡通信進行協作,以實現最終的整體功能。利用多個節點共同協作完成一項或多項具體業務功能的系統即為分布式系統。

HDFS作為一個分布式文件系統,其分布式主要體現在如下3個方面。

1)HDFS并不是一個單機文件系統,而是分布在多個集群節點上的文件系統。節點之間通過網絡通信進行協作,提供多個節點的文件信息,使每個用戶均可以看到文件系統的文件,使多臺機器上的多用戶可以分享文件和存儲空間。

2)當存儲文件時,文件的數據將分布在多個節點上。數據存儲不是按一個文件存儲,而是將一個文件分成一個或多個數據塊進行存儲。數據塊在存儲時并不是都存儲在一個節點上,而是被分別存儲在各個節點中,并且數據塊會在其他節點存儲副本。

3)數據從多個節點讀取。讀取一個文件時,從多個節點中找到該文件的數據塊,分別讀取所有數據塊,直至最后一個數據塊讀取完畢。

HDFS是一個主/從(Master/Slave)體系架構的分布式文件系統。HDFS支持傳統的層次型文件組織結構,使得用戶或應用程序可以創建目錄,再將文件保存至目錄中。文件系統命名空間的層次結構和大多數現有的文件系統類似,可以通過文件路徑對文件執行創建、讀取、更新和刪除操作。HDFS的基本架構如圖2所示。

2Hadoop的特點

Hadoop是一個能夠讓用戶輕松搭建和使用的分布式計算平臺,能夠讓用戶輕松地在Hadoop上開發和運行處理海量數據的應用程序。Hadoop的主要特點如下。

1)高可靠性。Hadoop的數據存儲有多個備份,集群部署在不同機器上,可以防止一個節點宕機造成集群損壞。當數據處理請求失敗時,Hadoop將自動重新部署計算任務。

2)高擴展性。Hadoop是在可用的計算機集群間分配數據并完成計算任務的。為集群添加新的節點并不復雜,因此可以很容易地對集群進行節點的擴展。

3)高效性。Hadoop可以在節點之間動態地移動數據,在數據所在節點進行并行處理,并保證各個節點的動態平衡,因此處理速度非常快。

4)高容錯性。Hadoop的分布式文件系統HDFS在存儲文件時將在多臺機器或多個節點上存儲文件的備份副本,當讀取該文件出錯或某一臺機器宕機時,系統會調用其他節點上的備份文件,保證程序順利運行。

5)低成本。Hadoop是開源的,即不需要支付任何費用即可下載并安裝使用,節省了購買軟件的成本。

6)可構建在廉價機器上。Hadoop不要求機器的配置達到極高的標準,大部分普通商用服務器即可滿足要求,通過提供多個副本和容錯機制提高集群的可靠性。

7)Hadoop基本框架是基于Java語言編寫的。Hadoop是一個基于Java語言開發的框架,因此運行在Linux系統上是非常理想的。Hadoop上的應用程序也可以使用其他語言編寫,如C++和Python。

3Hadoop存儲框架—HDFS

HDFS是一種旨在普通硬件上運行的分布式文件系統,與現有的分布式文件系統有許多相似之處,但也存在明顯的區別。HDFS具有非常好的容錯能力,旨在部署在低成本硬件上。HDFS支持對應用程序數據進行高吞吐量訪問,并且適用于具有海量數據集的讀寫。HDFS是Hadoop的核心組件之一,用于存儲數據。

HDFS簡介及架構

HDFS是以分布式進行存儲的文件系統,主要負責集群數據的存儲與讀取。分布式系統可以劃分成多個子系統或模塊,各自運行在不同的機器上,子系統或模塊之間通過網絡通信進行協作,以實現最終的整體功能。利用多個節點共同協作完成一項或多項具體業務功能的系統即為分布式系統。

HDFS作為一個分布式文件系統,其分布式主要體現在如下3個方面。

1)HDFS并不是一個單機文件系統,而是分布在多個集群節點上的文件系統。節點之間通過網絡通信進行協作,提供多個節點的文件信息,使每個用戶均可以看到文件系統的文件,使多臺機器上的多用戶可以分享文件和存儲空間。

2)當存儲文件時,文件的數據將分布在多個節點上。數據存儲不是按一個文件存儲,而是將一個文件分成一個或多個數據塊進行存儲。數據塊在存儲時并不是都存儲在一個節點上,而是被分別存儲在各個節點中,并且數據塊會在其他節點存儲副本。

3)數據從多個節點讀取。讀取一個文件時,從多個節點中找到該文件的數據塊,分別讀取所有數據塊,直至最后一個數據塊讀取完畢。

HDFS是一個主/從(Master/Slave)體系架構的分布式文件系統。HDFS支持傳統的層次型文件組織結構,使得用戶或應用程序可以創建目錄,再將文件保存至目錄中。文件系統命名空間的層次結構和大多數現有的文件系統類似,可以通過文件路徑對文件執行創建、讀取、更新和刪除操作。HDFS的基本架構如圖2所示。

圖2 HDFS基本架構

HDFS文件系統主要包含一個NameNode、一個Secondary NameNode和多個DataNode。

(1)NameNode

NameNode用于存儲元數據以及處理客戶端發出的請求。元數據不是具體的文件內容,它包含3類重要信息。第1類信息是文件和目錄自身的屬性信息,如文件名、目錄名、父目錄信息、文件大小、創建時間、修改時間等;第2類信息是記錄文件內容存儲的相關信息,如文件分塊情況、副本個數、每個副本所在的DataNode信息等;第3類信息是用于記錄HDFS中所有DataNode的信息,用于DataNode管理。

在NameNode中存放元信息的文件是fsimage文件。在系統運行期間,所有對元數據的操作均保存在內存中,并被持久化到另一個文件edits中。當NameNode啟動時,fsimage文件將被加載至內存,再對內存里的數據執行edits文件所記錄的操作,以確保內存所保留的數據處于最新的狀態。

(2)Secondary NameNode

Secondary NameNode用于備份NameNode的數據,周期性地將edits文件合并到fsimage文件并在本地備份,然后將新的fsimage文件存儲至NameNode,覆蓋原有的fsimage文件,刪除edits文件,并創建一個新的edits文件繼續存儲文件當前的修改狀態。

(3)DataNode

DataNode是真正存儲數據的地方。在DataNode中,文件以數據塊的形式進行存儲。Hadoop 3.x默認128 MB為一個數據塊,如果存儲一個大小為129 MB的文件,那么文件將被分為兩個數據塊進行存儲。當文件上傳至HDFS端時,HDFS會將文件按128MB的數據塊大小進行切割,將每個數據塊存儲至不同的或相同的DataNode并備份副本,一般默認備份3個副本。NameNode負責記錄文件的分塊信息,以確保在讀取該文件時可以找到并整合所有數據塊。

HDFS的特點

隨著數據量越來越多,傳統的單機式文件存儲系統已經不能滿足日益增長的數據存儲需求,分布式文件存儲系統—HDFS應運而生。作為分布式文件系統,HDFS能夠解決海量數據的存儲問題,其優點列舉如下。

1)高容錯性。HDFS上傳的數據會自動保存多個副本,通過增加副本的數量增加HDFS的容錯性。如果某一個副本丟失,那么HDFS將復制其他節點上的副本。

2)適合大規模數據的處理。HDFS能夠處理GB、TB甚至PB級別的數據,數量級規模可達百萬,數量非常大。

3)流式數據訪問。HDFS以流式數據訪問模式存儲超大文件,有著“一次寫入,多次讀取”的特點,且文件一旦寫入,不能修改,只能增加,以保證數據的一致性。

當然HDFS也不是完美的,同樣存在局限性,如不適合低延遲數據訪問,無法高效存儲大量小文件、不支持多用戶寫入及任意修改文件。

4Hadoop計算引擎—MapReduce

MapReduce是一個分布式運算程序的編程框架,是基于Hadoop的數據分析應用的核心框架。MapReduce的核心功能是將用戶編寫的業務邏輯代碼和自帶的組件整合成一個完整的分布式運算程序,并行運行在Hadoop集群上。認識MapReduce分布式計算框架,并了解MapReduce的執行流程,有利于后續的MapReduce編程學習。

MapReduce是Hadoop的核心計算框架,是用于大規模數據集(大于1TB)并行運算的編程模型,主要包括Map(映射)Reduce(規約)兩個階段。

1)當啟動一個MapReduce任務時,Map端將會讀取HDFS上的數據,將數據映射成所需要的鍵值對類型并傳至Reduce端。

2)Reduce端接收Map端鍵值對類型的中間數據,并根據不同鍵進行分組,對每一組鍵相同的數據進行處理,得到新的鍵值對并輸出至HDFS。

MapReduce作業執行流程如圖3所示。

圖3 MapReduce作業執行流程圖

一個完整的MapReduce過程涉及數據的輸入與分片、Map階段數據處理、Shuffle&Sort階段數據整合、Reduce階段數據處理、數據輸出等操作。

1)數據的輸入與分片。MapReduce過程中的數據是從HDFS分布式文件系統中讀取的。文件上傳至HDFS時,一般按照128 MB分成若干個數據塊,所以在運行MapReduce程序時,每個數據塊均會對應一個Map任務。也可以通過重新設置文件分片大小調整Map的個數,在運行MapReduce程序時系統會根據所設置的分片大小對文件重新分片(Split)。

2)Map階段數據處理。一個程序有一個或多個Map任務,具體由默認存儲或分片個數決定。在Map階段,數據將以鍵值對的形式被讀入,鍵的值一般為每行首字符與文件最初始位置的偏移量,即中間所隔字符個數,值為該行的數據記錄。根據具體的需求對鍵值對進行處理,映射成新的鍵值對并傳輸至Reduce端。

3)Shuffle&Sort階段數據整合。此階段是指從Map端輸出開始,傳輸至Reduce端之前的過程。該過程會對同一個Map中輸出的鍵相同的數據先進行整合,減少傳輸的數據量,并在整合后將數據按照鍵進行排序。

4)Reduce階段數據處理。Reduce任務可以有一個或多個,具體由Map階段設置的數據分區確定,一個分區數據將被一個Reduce處理。針對每一個Reduce任務,Reduce會接收到不同Map任務傳來的數據,并且每個Map傳來的數據都是有序的。一個Reduce任務中的每一次處理均是針對所有鍵相同的數據,對數據進行規約,形成新的鍵值對。

5)數據輸出。Reduce階段處理完數據后即可將數據文件輸出至HDFS,輸出的文件個數和Reduce的個數一致。如果只有一個Reduce,那么輸出只有一個數據文件,默認命名為“part-r-00000”。

5Hadoop資源管理器—YARN

YARN是Hadoop的資源管理器,可以提高資源在集群的利用率,加快執行速率。早期的Hadoop 1.0版本的任務執行效率低下,Hadoop 2.x版本開始引入了YARN框架。YARN框架為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。

Hadoop YARN提供了一個更加通用的資源管理和分布式應用框架。該框架使得用戶可以根據自己的需求實現定制化的數據處理應用,既可以支持MapReduce計算,也可以很方便地管理如Hive、HBase、Pig、Spark/Shark等組件的應用程序。YARN的架構設計使得各類型的應用程序可以運行在Hadoop上,并通過YARN從系統層面進行統一管理。擁有了YARN框架,各種應用可以互不干擾地運行在同一個Hadoop系統中,以共享整個集群資源。

YARN框架總體上仍然是主/從結構,在整個資源管理框架中,ResourceManager為Master,NodeManager為Slave,ResourceManager負責對各個NodeManager上的資源進行統一管理和調度。用戶提交一個應用程序時,需要提供一個用于跟蹤和管理這個程序的ApplicationMaster,ApplicationMaster負責向ResourceManager申請資源,并要求NodeManger啟動可以占用一定資源的任務。由于不同的ApplicationMaster被分布到不同的節點上,所以它們之間不會相互影響。

YARN的基本組成框架如圖4所示。

圖4 YARN的基本組成框架

YARN主要由ResourceManager、Node-Manager、ApplicationMaster和Client App-lication這4個部分構成,具體說明如下。

1)ResourceManager(RM)。一個全局的資源管理器,負責整個系統的資源管理和分配。ResourceManager主要由兩個組件構成,即調度器(Scheduler)和應用程序管理器(Applications Manager,ASM)。

調度器負責將系統中的資源分配給各個正在運行的應用程序,不從事任何與具體應用程序相關的工作,如監控或跟蹤應用的執行狀態等,也不負責重新啟動因應用執行失敗或硬件故障而產生的失敗任務。

應用程序管理器負責處理客戶端提交的Job以及協商第一個Container(包裝資源的對象)以供ApplicationMaster運行,并且在ApplicationMaster失敗時將其重新啟動。其中,Container是YARN中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等。當ApplicationMaster向RM申請資源時,RM為ApplicationMaster返回的資源就是使用Container表示的。YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源。

2)NodeManager(NM)。每個節點上的資源和任務管理器。一方面,NM會定時地向RM匯報本節點上的資源使用情況和各個Container的運行狀態;另一方面,NM會接收并處理來自ApplicationMaster的Container啟動或停止等各種請求。

3)ApplicationMaster(AM)。在用戶提交每個應用程序時,系統會生成一個ApplicationMaster并保存到提交的應用程序里。ApplicationMaster的主要功能如下。

 

  • 與ResourceManager調度器協商以獲取資源(用Container表示)。
  • 對得到的任務進行進一步分配。
  • 與NodeManager通信以啟動或停止任務。
  • 監控所有任務運行狀態,在任務運行失敗時重新為任務申請資源并重啟任務。

     

4)Client Application。Client Application是客戶端提交的應用程序。客戶端會將應用程序提交到RM,然后RM將創建一個Application上下文件對象,再設置AM必需的資源請求信息,最后提交至RM。

02

Hadoop應用場景介紹

在大數據背景下,Apache Hadoop作為一種分布式存儲和計算框架,已經被廣泛應用到各行各業,業界對于Hadoop這一開源分布式技術的應用也在不斷地拓展中。了解Hadoop的應用場景,從而可以更深刻地了解Hadoop在實際生活中的應用。

1)在線旅游。目前全球范圍內大多數在線旅游網站都使用了Cloudera公司提供的Hadoop發行版,Expedia作為全球最大的在線旅游公司也在使用Hadoop。在國內目前比較受歡迎的一些旅游網站如攜程、去哪兒網等也采用了大數據技術對數據進行存儲和計算。

2)移動數據。中國移動于2010年5月正式推出大云BigCloud 1.0,集群節點達到了1024個。華為對Hadoop的HA方案及HBase領域也有深入研究,并已經向業界推出了自己的基于Hadoop的大數據解決方案。

3)電子商務。阿里巴巴的Hadoop集群擁有150個用戶組、4500個集群用戶,為淘寶、天貓、一淘、聚劃算、CBU、支付寶提供底層的基礎計算和存儲服務。

4)詐騙檢測。一般金融服務或政府機構會使用Hadoop存儲所有的客戶交易數據,包括一些非結構化的數據,以幫助機構發現客戶的異常活動,預防欺詐行為。例如國內支付寶、微信錢包這類龐大的互聯網支付平臺,對詐騙、黑客、病毒的防護都十分重視,均使用大數據技術進行詐騙檢測,以保障線上資金的安全。

5)IT安全。除企業IT基礎機構的管理外,Hadoop還可以用于處理機器生成的數據以便識別出來自惡意軟件或網絡中的攻擊。國內奇虎360安全軟件在應用方面也使用Hadoop的HBase組件進行數據存儲,縮短了異常恢復的時間。

6)醫療保健。醫療行業也可以使用Hadoop,如IBM Watson技術平臺使用Hadoop集群作為語義分析等高級分析技術的基礎。醫療機構可以利用語義分析為患者提供醫護人員,并協助醫生更好地為患者進行診斷。

7)搜索引擎。我們在使用搜索引擎的過程中會產生大規模的數據,此時,使用Hadoop進行海量數據挖掘可以提高數據處理的效率。國外的雅虎已將Hadoop應用到搜索引擎中,國內的百度和阿里巴巴也將Hadoop應用到搜索引擎、推薦、數據分析等多個領域。

8)社交平臺。目前網絡社交已經成為人們日常生活的一部分,網絡社交平臺每天產生的數據量十分龐大。騰訊和臉書作為國內外的大型社交平臺,在數據庫存儲方面均利用了Hadoop生態系統中的Hive組件進行數據存儲和處理。

03

Hadoop生態系統

Hadoop經過多年的發展,已經形成了一個相當成熟的生態系統。現代生活節奏快速,各行各業無時無刻產生著大量的數據,Hadoop發揮著重要的作用。因為各行各業的需求不同,很多時候需要在Hadoop的基礎上進行一些改進和優化,也因此產生了許多圍繞Hadoop衍生的工具,逐漸地演變成一個龐大的Hadoop生態系統,如圖5所示。

圖5 Hadoop生態系統

Hadoop生態系統中常用的組件列舉如下,不同的組件分別提供特定的服務。

1)Hive。Hive是建立在Hadoop基礎上的數據倉庫基礎框架,提供了一系列工具,可存儲、查詢和分析存儲在Hadoop中的大規模數據。Hive定義了一種類SQL語言為HQL,該語言編寫的查詢語句在Hive的底層將轉換為復雜的MapReduce程序,運行在Hadoop大數據平臺上。

2)ZooKeeper。ZooKeeper主要用于保證集群各項功能的正常進行,并能夠在功能出現異常時及時通知集群進行處理,保持數據一致性。ZooKeeper是對整個集群進行監控,可解決分布式環境下的數據管理問題。

3)HBase。HBase是一個針對非結構化數據的可伸縮、高可靠、高性能、分布式和面向列的動態模式數據庫。HBase提供了對大規模數據的隨機、實時讀寫訪問。同時,HBase中保存的數據可以使用MapReduce進行處理。HBase將數據存儲和并行計算很好地結合在一起。

4)Spark。Spark是一種快速、通用、可擴展的大數據處理引擎,繼承了MapReduce分布式計算的優點并改進了MapReduce明顯的缺點。Spark的中間輸出結果可以保存在內存中,因此能更好地適用于數據挖掘與機器學習中迭代次數較多的算法。

5)Flume。Flume是Cloudera提供的一個高可用的、高可靠的、分布式的海量日志采集、聚合和傳輸系統,適用于日志文件的采集。

6)Kafka。Kafka是一個分布式的基于發布/訂閱模式的消息隊列,主要應用于大數據實時處理領域。Kafka是一個事件流平臺,能夠連接其他數據源進行持續的數據導入或導出,并且可以根據需求持久可靠地存儲數據。

本文轉載于http://blog.itpub.NET/70024420/viewspace-2928855/,作者摘編于Hadoop與大數據挖掘》。

分享到:
標簽:Hadoop
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定