① hadoop是做什麼的
提供海量數據存儲和計算的,需要java語言基礎。
Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。
特點
1、快照支持在一個特定時間存儲一個數據拷貝,快照可以將失效的集群回滾到之前一個正常的時間點上。HDFS已經支持元數據快照。
2、HDFS的設計是用於支持大文件的。運行在HDFS上的程序也是用於處理大數據集的。這些程序僅寫一次數據,一次或多次讀數據請求,並且這些讀操作要求滿足流式傳輸速度。
HDFS支持文件的一次寫多次讀操作。HDFS中典型的塊大小是64MB,一個HDFS文件可以被切分成多個64MB大小的塊,如果需要,每一個塊可以分布在不同的數據節點上。
3、階段狀態:一個客戶端創建一個文件的請求並不會立即轉發到名位元組點。實際上,一開始HDFS客戶端將文件數據緩存在本地的臨時文件中。
② Hadoop分布式存儲
為了降低整體的帶寬消耗和讀取延時,HDFS會盡量讓讀取程序讀取離它最近的副本。如果在讀取程序的同一個機架上有一個副本,那麼就讀取該副本。如果一個HDFS集群跨越多個數據中心,那麼客戶端也將首先讀本地數據中心的副本
Namenode啟動後會進入一個稱為安全模式的特殊狀態。處於安全模式的Namenode是不會進行數據塊的復制的。Namenode從所有的 Datanode接收心跳信號和塊狀態報告。塊狀態報告包括了某個Datanode所有的數據塊列表。每個數據塊都有一個指定的最小副本數。當Namenode檢測確認某個數據塊的副本數目達到這個最小值,那麼該數據塊就會被認為是副本安全(safely replicated)的;在一定百分比(這個參數可配置)的數據塊被Namenode檢測確認是安全之後(加上一個額外的30秒等待時間),Namenode將退出安全模式狀態。接下來它會確定還有哪些數據塊的副本沒有達到指定數目,並將這些數據塊復制到其他Datanode上
所有的HDFS通訊協議都是建立在TCP/IP協議之上。客戶端通過一個可配置的TCP埠連接到Namenode,通過ClientProtocol協議與Namenode交互。而Datanode使用DatanodeProtocol協議與Namenode交互。一個遠程過程調用(RPC)模型被抽象出來封裝ClientProtocol和Datanodeprotocol協議。在設計上,Namenode不會主動發起RPC,而是響應來自客戶端或 Datanode 的RPC請求
③ Hadoop到底是干什麼用的
用途:將單機的工作任務進行分拆,變成協同工作的集群。用以解決日益增加的文件存儲量和數據量瓶頸。
通俗應用解釋:
比如計算一個100M的文本文件中的單詞的個數,這個文本文件有若干行,每行有若干個單詞,每行的單詞與單詞之間都是以空格鍵分開的。對於處理這種100M量級數據的計算任務,把這個100M的文件拷貝到自己的電腦上,然後寫個計算程序就能完成計算。
關鍵技術:
HDFS(Hadoop Distributed File System):
既可以是Hadoop 集群的一部分,也可以是一個獨立的分布式文件系統,是開源免費的大數據處理文件存儲系統。
HDFS是Master和Slave的主從結構(是一種概念模型,將設備分為主設備和從設備,主設備負責分配工作並整合結果,或作為指令的來源;從設備負責完成工作,一般只能和主設備通信)。主要由Name-Node、Secondary NameNode、DataNode構成。
Name-Node:分布式文件系統中的管理者,主要負責管理文件系統的命名空間、集群配置信息和存儲塊的復制等
Secondary NameNode:輔助 NameNode,分擔其工作,緊急情況可以輔助恢復
DataNode:Slave節點,實際存儲數據、執行數據塊的讀寫並匯報存儲信息給NameNode
HDFS客戶端的存儲流程:當客戶需要寫數據時,先在NameNode 上創建文件結構並確定數據塊副本將要寫道哪幾個 datanode ,然後將多個代寫 DataNode 組成一個寫數據管道,保證寫入過程完整統一寫入。
讀取數據時則先通過 NameNode 找到存儲數據塊副本的所有 DataNode ,根據與讀取客戶端距離排序數據塊,然後取最近的。