1.核心
HDFS??分布式文件系統
主從結構,一個namenoe和多個datanode, 分別對應獨立的物理機器
1) NameNode是主服務器,管理文件系統的命名空間和客戶端對文件的訪問操作。NameNode執行文件系統的命名空間操作,比如打開關閉重命名文件或者目錄等,它也負責數據塊到具體DataNode的映射
2)集群中的DataNode管理存儲的數據。負責處理文件系統客戶端的文件讀寫請求,并在NameNode的統一調度下進行數據塊的創建刪除和復制工作。
3)NameNode是所有HDFS元數據的管理者,用戶數據永遠不會經過NameNode
MapReduce??并行計算框架
主從結構,一個JobTracker和多個TaskTracker
1) MapReduce是由一個單獨運行在主節點上的JobTacker和運行在每個集群從節點上的TaskTracker共同組成的。JobTacker負責調度構成一個作業的所有任務,這些任務分布在不同的從節點上。總結點監控他們的執行情況,
并且重新執行之前失敗的任務;從節點僅負責由主節點指派的任務
2)??MapReduce模型原理是利用一個輸入的key/value對集合來產生一個輸出的key/value隊集合,使用Map和Reduce函數來計算
3)??MapReduce將大數據分解為成百上千小數據集,每個數據集分別由集群中的一個節點(一般是一臺計算機)并行處理生成中間結果,后然這些中間結果又由大量的節點合并,形成最終結果
2. 基礎概念
1)hadoop集群三種模式:本地模式(單機模式),偽分布模式,全分布式模式
單機模式:沒有守護進程,所有東西運行在jvm上,使用的是本地文件系統, 沒有dfs,使用開發過程中運行mapreduce程序,是使用最少的一種模式
偽分布模式:在一臺服務器上模擬集群安裝環境, 即多個進程運行在一個服務器上;使用與開發和測試環境,所有 守護進程在同一臺機子上
全分布式模式:N臺主機組成一個Hadoop集群,Hadoop守護進程運行在每一臺主機上;分布式模式中,主節點和從節點會分開
2) 網絡連接方式
host-only:宿主機(windows)與客戶機(虛擬機中的客戶機)單獨組網,與主機當前的網絡是隔離的
bridge:宿主機和客戶機網絡是連接的,在同一個局域網中,可以相互訪問
NAT(network address translation): 虛擬機不占用主機所在局域網ip,通過使用主機的NAT功能訪問區域網和互聯網,此種方式虛擬機不用設置靜態ip,只需要使用DHCP功能自動獲取ip即可(絕大多數上網使用此種方式)
3)SSH??使用ssh進行免密碼登陸
產生秘鑰: ssh-keygen -t rsa
目錄:~/.ssh
公鑰拷貝:cp id_rsa.pub authorized_keys
3. 偽分布式安裝
準備:??----關閉防火墻(內網中,安全性問題較小)
查看狀態:service iptables status
關閉: service iptables stop
關閉防火墻的自動啟動: chkconfig -list | grep iptables(查看)
chkconfig iptables off(關閉)
----修改ip??(修改后 讓其生效:server network restart, 然后使用ifconfig查看)
----修改hostname(/etc/sysconfig/network??更改主機名;??etc/hosts??將主機名與ip地址綁定; )
----設置ssh自動登錄(查看上面章節)
ssh-keygen -t rsa
cp id_rsa.pub authorized_keys
驗證 ssh localhost
1. 安裝jdk -----配置環境變量(/etc/profile? ? java_home和path)----生效(source /etc/profile)---驗證(java -version)
2. 安裝hadoop(tar -zxvf hadoop-1.1.2.tar.gz)---重名名(mv hadoop-1.1.2 hadoop)----配置環境變量(hadoop_home和path)----生效(source /etc/profile)
3. 偽分布式集群:
修改hadoop_home/conf下配置文件 hadoop-env.sh? ?core-site.cml??hdfs-site.xml mapred-site.xml
1.hadoop-env.shexport JAVA_HOME=/usr/local/jdk/2.core-site.xmlfs.default.namehdfs://hadoop:9000hadoop.tmp.dir/usr/local/hadoop/tmp??3.hdfs-site.xmldfs.replication1dfs.permissionsfalse4.mapred-site.xmlmapred.job.trackerhadoop:9001
復制代碼
4. 啟動
hadoop namenode -format(格式化)
start-all.sh
使用jps查看進程
JobTracker、DateNode、TaskTracker、SecondaryNameNode、NameNode
網址欄中輸入 hostname:50070 查看namenode信息
輸入 hostname:50030 產看mapreduce信息
關閉: stop-all.sh
4. 分布式安裝
1.規劃集群各節點的功能
兩臺主機 主機1 hadoop0 namenode ;??主機2 hadoop1 datanode
2. 檢查如下配置(同偽分布式安裝):1)防火墻是否關閉 2)ip是否設置 3)主機名是否設置??4)/etc/hosts是否配置 5)自己主機的ssh免密碼登錄是否設置
3. 集群間ssh免密碼登錄配置
在hadoop0上執行:ssh-copy-id -l ~/.ssh/id_rsa.pub hadoop1 (當本機已經產生rsa authorization時, 通過ssh-copy-id 可以將認證傳送到宿端主機)
在hadoop1上執行:ssh-copy-id -l ~/.ssh/id_rsa.pub hadoop0
使用ssh hadoop1驗證
4. 配置/etc/hosts文件
例如在hadoop0的/etc/hosts文件中添加: 192.168.1.169 hadoop0
192.168.1.21 hadoop1
5. 其他節點上jdk和hadoop的安裝
在hadoop0上執行:
scp -rq /usr/local/jdk hadoop1:/usr/local? ?(-r遞歸復制整個目錄, -q不顯示進度條)
scp -rq /usr/local/hadoop hadoop1:/usr/local
scp -rq /etc/profile hadoop1:/etc
scp -rq /etc/hosts hadoop1:/etc
source /etc/profile
6. 配置集群
hadoop0下修改hadoop_home/conf/slaves(存儲datanode和tasktracker節點名稱),將localhost改為hadoop1
7. 啟動集群
在hadoop0中執行hadoop namenode -format
start-all.sh
(關閉: stop-all.sh)
8. jps查看進程
hadoop0上 NameNode 、SecondarayNameNode、JobTracker進程
hadoop1上 DataNode、TaskTracker
9. 常見啟動錯誤
unknownHostException :設置主機名錯誤(查看/etc/sysconfig/network)
BindException:ip設置錯誤(查看/etc/hosts)
Name Node is in safe mode 文件系統在安全模式(分布式文件系統啟動時,開始會有 安全模式,出于安全模式時文件系統中的內容不允許修改和刪除,直至安全模式結束,安全模式是系統啟動時檢查各個datanode上數據塊的有效性,可以等待一會或者關閉安全模式??hadoop dfsadmin -safemode leave)
轉載自大數據巴士:http://www.bdtbus.com