開源軟件框架之Hadoop

開源軟件 Hadoop HDFS 雲計算 GDCA數安時代 GDCA數安時代 2017-09-11

什麼是Hadoop?

Hadoop是一個開發和運行處理大規模數據的軟件平臺,是Apache的一個用java語言實現開源軟件框架,實現在大量計算機組成的集群中對海量數據進行分佈式計算。

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由許多元素構成,其最底部是HDFS,它存儲Hadoop集群中所有存儲節點上的文件,HDFS(對於本文)的上一層是MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成 ,對外部客戶機而言,HDFS就像一個傳統的分級文件系統。可以創建、刪除、移動或重命名文件,比如創建執行命令:hadoop fs -mkdir /fc/src/ 這樣就創建了目錄 /fc/src/,hadoop fs -rmr /fc/src/這樣就刪除了目錄src,等等。Hadoop的架構是基於一組特定的節點構建的,如下圖:它包括了 NameNode(僅一個,負責協調,提供元數據服務)、DataNode(可以多個,負責幹活,提供存儲塊),這裡括號的內容不明白的可以不用先管,繼續往下看。

開源軟件框架之Hadoop

1、NameNode

NameNode 是一個通常在 HDFS 實例中的單獨機器上運行的軟件;存儲在HDFS中的文件會被分成塊(Block),然後將這些塊複製到多個計算機中(就是DataNode中),每個塊的大小通常為64M,塊大小和複製數量(默認保存3份)在創建文件時有客戶機決定,可以設置。NameNode負責管理文件系統名稱空間和控制外部客戶機的訪問,主要提供名稱查詢服務,NameNode保存的信息主要包括:哪個文件分了多少塊,每個塊放在哪個節點上等這些信息,如下列表:

1、文件owership和permissions

2、文件包含哪些塊

3、Block保存在哪個DataNode(由DataNode啟動時上報)

開源軟件框架之Hadoop

NameNode的metadata(元數據) 信息在啟動後會加載到內存,metadata存儲到磁盤文件名為”fsimage”;

開源軟件框架之Hadoop

2、DataNode

DataNode也是通常在HDFS實例中單獨機器上運行的軟件,Hadoop集群包含一個NameNode和大量DataNode。DataNode通常以機架的形式組織,機架通過一個交換機將所有系統連接起來;

DataNode的主要工作:保存Block(數據塊)、啟動DataNode線程時會向NameNode彙報block信息、通過向NameNode發送心跳保持與其聯繫(3秒一次),如果NN(下面都用NN表示NameNode,DN表示DataNode,便於書寫)10分鐘沒有收到DN的心跳,則認為其已經Lost,並copy其上的block(塊)到其他DN。如下圖:

開源軟件框架之Hadoop

這裡講下Block的副本放置策略:

1、第一個副本:放置在上傳文件的DN;如果是集群外提交,則隨機挑選一臺磁盤不太滿,CPU不太忙的節點

2、第二個副本:放置在於第一個副本不同的機架的節點上

3、第三個副本:與第二個副本相同集群的節點

4、更多副本:隨機節點

再提下Block:

設置一個Block 64MB,如果上傳文件小於該值,仍然會佔用一個Block的命名空間(NameNode metadata),但是物理存儲上不會佔用64MB的空間

Block大小和副本數由Client端上傳文件到HDFS時設置,其中副本數可以變更,Block是不可以再上傳後變更的;所以要根據自己平時處理的文件大小自己設置,以免浪費塊空間;

3、數據損壞處理

1、當DN讀取block的時候,它會計算checksum

2、如果計算後的checksum,與block創建時值不一樣,說明該block已經損壞。

3、client讀取其它DN上的block;NN標記該塊已經損壞,然後複製block達到預期設置的文件備份數

4、DN在其文件創建後三週驗證其checksum

Hadoop優點

Hadoop是一個能夠對大量數據進行分佈式處理的軟件框架。 Hadoop 以一種可靠、高效、可伸縮的方式進行數據處理。

Hadoop 是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節點重新分佈處理。

Hadoop 是高效的,因為它以並行的方式工作,通過並行處理加快處理速度。

Hadoop 還是可伸縮的,能夠處理 PB 級數據。

此外,Hadoop 依賴於社區服務,因此它的成本比較低,任何人都可以使用。

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

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

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

高效性。Hadoop能夠在節點之間動態地移動數據,並保證各個節點的動態平衡,因此處理速度非常快。

高容錯性。Hadoop能夠自動保存數據的多個副本,並且能夠自動將失敗的任務重新分配。

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

Hadoop帶有用Java語言編寫的框架,因此運行在 Linux 生產平臺上是非常理想的。Hadoop 上的應用程序也可以使用其他語言編寫,比如 C++。

hadoop大數據處理的意義

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

信息安全

通過Hadoop安全部署經驗總結,開發出以下十大建議,以確保大型和複雜多樣環境下的數據信息安全。

1、先下手為強!在規劃部署階段就確定數據的隱私保護策略,最好是在將數據放入到Hadoop之前就確定好保護策略。

2、確定哪些數據屬於企業的敏感數據。根據公司的隱私保護政策,以及相關的行業法規和政府規章來綜合確定。

3、及時發現敏感數據是否暴露在外,或者是否導入到Hadoop中。

4、蒐集信息並決定是否暴露出安全風險。

5、確定商業分析是否需要訪問真實數據,或者確定是否可以使用這些敏感數據。然後,選擇合適的加密技術。如果有任何疑問,對其進行加密隱藏處理,同時提供最安全的加密技術和靈活的應對策略,以適應未來需求的發展。

6、確保數據保護方案同時採用了隱藏和加密技術,尤其是如果我們需要將敏感數據在Hadoop中保持獨立的話。

7、確保數據保護方案適用於所有的數據文件,以保存在數據彙總中實現數據分析的準確性。

8、確定是否需要為特定的數據集量身定製保護方案,並考慮將Hadoop的目錄分成較小的更為安全的組。

9、確保選擇的加密解決方案可與公司的訪問控制技術互操作,允許不同用戶可以有選擇性地訪問Hadoop集群中的數據。

10、確保需要加密的時候有合適的技術(比如Java、Pig等)可被部署並支持無縫解密和快速訪問數據。


開源軟件框架之Hadoop

SSL證書採用了技術含量比較高的加密技術。日後GDCA(數安時代)將會持續為大家推薦更多關於SSL證書的技術知識。讓大家正確認識SSL證書,快速無誤部署HTTPS安全協議。更多資訊,請關注GDCA。

文章轉載:https://www.trustauth.cn/wiki/21384.html

相關推薦

推薦中...