Hadoop是Apache軟體基金會旗下的一個開源分散式運算平臺,支援密集型分散式應用並以Apache2.0授權合約發佈。
Hadoop:以Hadoop分散式檔案系統HDFS(Hadoop Distributed Filesystem)和MapReduce(GoogleMapReduce的開源實現) 為核心的Hadoop為使用者提供了系統底層細節透明的分散式基礎架構
1.Hadoop實現了MapReduce的程式設計范式:應用程式被分割成許多小部分,而每個部分都能在集群中的任意節點上執行或重新執行。
2.HDFS:用以存儲所有計算節點的數據,這為整個集群帶來了非常高的帶寬。
3.Hadoop集群結構為:Master和Slave。 一個HDFS集群是由一個NameNode和若干個DataNode組成的。 其中NameNode作為主伺服器,管理檔案系統的命名空間和用戶端對檔案系統的訪問操作;集群中的DataNode管理存儲的資料。
4.MapReduce框架是由一個單獨運行在主節點上的JobTracker和運行在每個集群從節點的TaskTracker共同組成的。 主節點負責調度構成一個作業的所有任務,這些任務分佈在不同的從節點上。 主節點監控它們的執行情況,並且重新執行之前的失敗任務;從節點僅負責由主節點指派的任務。 當一個Job被提交時,JobTracker接收到提交作業和配置資訊之後,就會將配置資訊等分發給從節點,同時調度任務並監控TaskTracker的執行。
5.HDFS和MapReduce共同組成了Hadoop分散式系統體系結構的核心。 HDFS在集群上實現分散式檔案系統,MapReduce在集群上實現了分散式運算和任務處理。 HDFS在MapReduce任務處理過程中提供了檔操作和存儲等支援,MapReduce在HDFS的基礎上實現了任務的分發、跟蹤、執行等工作,並收集結果,二者相互作用,完成了Hadoop分散式集群的主要任務。
Hadoop的五大優勢
高可擴充性
Hadoop是一個高度可擴展的存儲平臺,因為他可以存儲和分發橫跨數百個平行作業的廉價的伺服器資料集群。 不同于傳統的關聯式資料庫系統不能擴展到處理大量的資料,Hadoop是能給企業提供涉及成百上千TB的資料節點上運行的應用程式。
成本效益
Hadoop 還為企業使用者提供了極具成本效益的存儲解決方案。 傳統的關聯式資料庫管理系統的問題是,他並不符合海量資料的處理器,不能夠符合企業的成本效益。 許多公司過去不得不假設那些資料最優價值,然後根據這些有價值的資料設定分類,如果保存所有的資料,那麼成本就會過高。 雖然這種方法可以短期內實現工作,但是隨著資料量的增大,這種方式並不能很好的解決問題。
Hadoop的架構則不同,其被設計為一個向外擴展的架構,可以經濟的存儲所有公司的資料供以後使用,節省的費用是非常驚人的,Hadoop提供數百TB的存儲和計算能力,而不是幾千塊錢就能解決的問題。
靈活性更好
Hadoop能夠使企業輕鬆訪問到新的資料來源,並可以分析不同類型的資料,從這些資料中產生價值,這意味著企業可以利用Hadoop的靈活性從社交媒體、電子郵件或點擊流量等資料來源獲得寶貴的商業價值。
此外,Hadoop的用途非常廣,諸如對數處理、推薦系統、資料倉儲、市場活動分析以及欺詐檢測。
快
Hadoop擁有獨特的存儲方式,用於資料處理的工具通常在與資料相同的伺服器上,從而導致能夠更快的處理器資料,如果你正在處理大量的非結構化資料,Hadoop能夠有效的在幾分鐘內處理TB級的資料, 而不是像以前PB級資料都要以小時為單位。
容錯能力
使用Hadoop的一個關鍵優勢就是他的容錯能力。 當資料被發送到一個單獨的節點,該資料也被覆制到集群的其它節點上,這意味著在故障情況下,存在另一個副本可供使用。 非單點故障。
Hadoop集群配置實例:架構
1個Master,1個Backup(主機備用),3個Slave(由虛擬機器創建)。
節點IP位址:
rango(Master) 192.168.56.1 namenode
vm1(Backup) 192.168.56.101 secondarynode
vm2(Slave1) 192.168.56.102 datanode
vm3(Slave2) 192.168.56.103 datanode
vm4(Slave3) 192.168.56.104 datanode
ps:Hadoop最好運行在一個單獨的使用者下,且所有集群中的使用者應該保持一致,即使用者名相同。
Master機器設定檔中:masters檔中指定的是要運行的secondarynamenode,slaves檔指定的是要運行的datanode和tasktracker
Master機器主要配置NameNode和JobTracker的角色,負責總管分散式資料和分解任務的執行; Salve機器配置DataNode和TaskTracker的角色,負責分散式資料存儲以及任務的執行。
在進行Hadoop集群配置中,需要在"/etc/hosts"檔中添加集群中所有機器的IP與主機名稱,這樣Master與所有的Slave機器之間不僅可以通過IP進行通信,而且還可以通過主機名稱進行通信。 JDK(java整合式開發環境)和hadoop的安裝、配置。
MapReduce:" 任務的分解與結果的匯總"。 用於執行MapReduce任務的機器角色有兩個:一個是JobTracker;另一個是 TaskTracker,JobTracker是用於調度工作的,TaskTracker是用於執行工作的。 一個Hadoop集群中只有一台 JobTracker(位於Master中)���
MapReduce框架負責處理了並行程式設計中分散式存儲、工作調度、負載均衡、容錯均衡、容錯處理以及網路通信等複雜問題,把處理過程高度抽象為兩個函數:map和reduce,map負責把任務分解成多個任務, reduce負責把分解後多工處理的結果匯總起來。
Hadoop配置實例:具體過程
1.網路、主機配置:在所有主機上配置其主機名稱
/etc/hosts:將集群中所有主機的主機名稱和對應ip位址加入所有機器的hosts檔中,以便集群之間可以用主機名稱進行通信和驗證。
2.配置ssh無密碼登錄
3.java環境安裝
集群所有機器都要安裝jdk,jdk版本:jdk1.7.0_45,並配置好環境變數:/etc/profile:
# set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_45
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
source /etc/profile 使其生效
4.hadoop安裝和配置:所有機器都要安裝hadoop,hadoop版本:hadoop-1.2.1
4.1 安裝:tar zxvf hadoop-1.2.1.tar.gz ; mv hadoop-1.2.1 /usr/hadoop;
將資料夾hadoop的許可權分配給hadoop使用者。
4.2 hadoop環境變數:#set hadoop path
export HADOOP_HOME=/usr/hadoop
export PATH=$PATH :$HADOOP_HOME/bin
在"/usr/hadoop"創建"tmp"資料夾:mkdir /usr/hadoop/tmp
4.3 配置hadoop
1)配置hadoop-env.sh:
# set java environment
export JAVA_HOME=/usr/java/jdk1.7.0_45
2)配置core-site.xml檔:
3)配置hdfs-site.xml檔
4)配置mapred-site.xml檔
5)配置masters檔:加入的為secondarynamenode的ip位址
6)配置slaves檔(Master主機特有):添加datanode節點的主機名稱或ip位址。
ps:可以先在master安裝並配置好,然後通過scp -r /usr/hadoop root@伺服器ip:/usr/,將Master上配置好的hadoop所在資料夾"/usr/hadoop"複製到所有的Slave的"/usr "目錄下。 然後在各自機器上將hadoop資料夾許可權賦予各自的hadoop使用者。 並且配置好環境變數等。
5 啟動和驗證
5.1 格式化HDFS檔案系統
在Master上使用hadoop使用者進行操作:
hadoop namenode -format
ps:只需一次,下次啟動不再需要格式化,只需start-all.sh
5.2 啟動hadoop:
在啟動前關閉集群中所有機器的防火牆,不然會出現datanode開後又自動關閉:
service iptables stop
使用下面命令啟動:
start-all.sh
啟動hadoop成功後,在Master 中的tmp 資料夾中生成了dfs 資料夾,在Slave中的tmp 資料夾中均生成了 dfs 資料夾和mapred 資料夾。
5.3 驗證hadoop:
(1)驗證方法一:用"jps"命令
(2)驗證方式二:用"hadoopdfsadmin -report")驗證
6 網頁查看:訪問"HTTP://masterip:50030"
Hadoop使用埠說明
預設埠 設置位置 描述資訊
8020 namenode RPC交互埠
8021 JT RPC交互埠
50030 mapred.job.tracker.HTTP.address JobTrackeradministrative web GUI
JOBTRACKER的HTTP伺服器和埠
50070 dfs.HTTP.address NameNode administrative web GUI
NAMENODE的HTTP伺服器和埠
50010 dfs.datanode.address DataNode control port (each DataNode listens on this port and registers it with the NameNode on startup) DATANODE控制埠,主要用於DATANODE初始化時向NAMENODE提出註冊和應答請求
50020 dfs.datanode.ipc.address DataNode IPC port, usedfor block transfer
DATANODE的RPC伺服器位址和埠
50060 mapred.task.tracker.HTTP.address Per TaskTracker webinterface
TASKTRACKER的HTTP伺服器和埠
50075 dfs.datanode.HTTP.address Per DataNode webinterface
DATANODE的HTTP伺服器和埠
50090 dfs.secondary.HTTP.address Per secondary NameNode web interface
輔助DATANODE的HTTP伺服器和埠
總結