一、集群環境准備工作
1、修改主機名
在root 賬戶下 vi /etc/sysconfig/network 或者 sudo vi /etc/sysconfig/network
2、設置系統默認啟動級別
在 root 賬號下輸入 vi /etc/inittab 將默認的5改為3即可
3、配置hadoop用戶 sudoer權限
在 root 賬號下,命令終端輸入: vi /etc/sudoers
添加一行 hadoop ALL=(ALL) ALL
4、配置IP
5、關閉防火牆
查看防火牆狀態: service iptables status
關閉防火牆: service iptables stop
開啟防火牆: service iptables start
重啟防火牆: service iptables restart
關閉防火牆開機啟動: chkconfig iptables off
開啟防火牆開機啟動: chkconfig iptables on
6、添加內網域名映射
vi /etc/hosts

7、安裝JDK

做完以上步驟就開始克隆虛擬機了
二、hadoop集群安裝
1、hadoop版本選擇

2、同步服務器時間 設置crontab
ntpdate 202.120.2.101
3、配置免密登錄
4、hadoop分布式集群安裝(偽分布式)
4、hadoop分布式集群安裝
總共三個datanode,設置副本數為2,是為了觀察數據塊分布方便
集群規划:
HDFS YARN
hadoop01 NameNode+DataNode NodeManager
hadoop02 DataNode+SecondaryNameNode NodeManager
hadoop03 DataNode NodeManager+ResourceManager
hadoop01是HDFS的主節點(namenode進程)、hadoop03是Yarn的主節點(ResourceManager進程)
具體安裝步驟:




三、集群初步使用
1、hadoop集群啟動
DFS 集群啟動: sbin/start-dfs.sh
DFS 集群關閉: sbin/stop-dfs.sh
YARN 集群啟動: sbin/start-yarn.sh
YARN 集群啟動: sbin/stop-yarn.sh
2、HDFS初步使用
查看集群文件: hadoop fs –ls /
上傳文件: hadoop fs –put filepath destpath
下載文件: hadoop fs –get destpath
創建文件夾: hadoop fs –mkdir /hadoopdata
查看文件內容: hadoop fs –cat /hadoopdata/mysecret.txt
3、mapreduce 初步使用

四、hadoop集群安裝高級知識
1、為什么會有hadoop HA機制呢
HA: High Available,高可用
在 Hadoop 2.0 之前,在 HDFS 集群中 NameNode 存在單點故障 (SPOF:A single point of failure)。 對於只有一個 NameNode 的集群,如果 NameNode 機器出現故障(比如宕機或是軟件、硬件 升級),那么整個集群將無法使用,直到 NameNode 重新啟動
那如何解決呢?
HDFS 的 HA 功能通過配置 Active/Standby 兩個 NameNodes 實現在集群中對 NameNode 的 熱備來解決上述問題。如果出現故障,如機器崩潰或機器需要升級維護,這時可通過此種方 式將 NameNode 很快的切換到另外一台機器。
在一個典型的 HDFS(HA) 集群中,使用兩台單獨的機器配置為 NameNodes 。在任何時間點, 確保 NameNodes 中只有一個處於 Active 狀態,其他的處在 Standby 狀態。其中 ActiveNameNode 負責集群中的所有客戶端操作, StandbyNameNode 僅僅充當備機,保證一
旦 ActiveNameNode 出現問題能夠快速切換。
為了能夠實時同步 Active 和 Standby 兩個 NameNode 的元數據信息(實際上 editlog),需提 供一個共享存儲系統,可以是 NFS、 QJM( Quorum Journal Manager)或者 Zookeeper, Active Namenode 將數據寫入共享存儲系統,而 Standby 監聽該系統,一旦發現有新數據寫入,則
讀取這些數據,並加載到自己內存中,以保證自己內存狀態與 Active NameNode 保持基本一致,如此這般,在緊急情況下 standby 便可快速切為 active namenode。為了實現快速切換, Standby 節點獲取集群的最新文件塊信息也是很有必要的。為了實現這一目標, DataNode 需要配置
NameNodes 的位置,並同時給他們發送文件塊信息以及心跳檢測。 
2、思考問題:secondarynamenode 和standbynamenode的區別?
Secondary NameNode不是NameNode的備份。它的作用是:定期合並fsimage與edits文件,並推送給NameNode,以及輔助恢復NameNode。
standbynamenode僅僅充當active的備機,保證一 旦 ActiveNameNode 出現問題能夠快速切換,並且Active 和 Standby 兩個 NameNode 的元數據信息(實際上 editlog)是同步的
3、hadoop配置機架感知
Hadoop在設計時考慮到數據的安全與高效,數據文件默認在HDFS上存放三份,存儲策略為本地一份,同機架內其它某一節點上一份,不同機架的某一節點上一份。這樣如果本地數據損壞,節點可以從同一機架內的相鄰節點拿到數據,速度肯定比從跨機架節點上拿數據要快;
同時,如果整個機架的網絡出現異常,也能保證在其它機架的節點上找到數據。為了降低整體的帶寬消耗和讀取延時,HDFS會盡量讓讀取程序讀取離它最近的副本。如果在讀取程序的同一個機架上有一個副本,那么就讀取該副本。如果一個HDFS集群跨越多個數據中心,
那么客戶端也將首先讀本地數據中心的副本。那么Hadoop是如何確定任意兩個節點是位於同一機架,還是跨機架的呢?答案就是機架感知。
默認情況下,Hadoop的機架感知是沒有被啟用的。所以,在通常情況下,hadoop集群的HDFS在選機器的時候,是隨機選擇的,也就是說,很有可能在寫數據時,hadoop將第一塊數據block1寫到了rack1上,然后隨機的選擇下將block2寫入到了rack2下,
此時兩個rack之間產生了數據傳輸的流量,再接下來,在隨機的情況下,又將block3重新又寫回了rack1,此時,兩個rack之間又產生了一次數據流量。在job處理的數據量非常的大,或者往hadoop推送的數據量非常大的時候,這種情況會造成rack之間的網絡流量成倍的上升,
成為性能的瓶頸,進而影響作業的性能以至於整個集群的服務
如何配置:http://blog.csdn.net/l1028386804/article/details/51935169
4、hadoop Fedaration
(1)為什么要有Fedaration機制呢
在 Hadoop 2.0 之前, HDFS 的單 NameNode 設計帶來很多問題,包括單點故障、內存受限, 制約集群擴展性和缺乏隔離機制(不同業務使用同一個 NameNode 導致業務相互影響)等。為了解決這些問題,除了用基於共享存儲的 HA 解決方案,我們還可以用 HDFS 的 Federation
機制來解決這個問題。
(2)什么是Fedaration機制?
HDFS Federation 是指 HDFS 集群可同時存在多個 NameNode。這些 NameNode 分別管理一部 分數據,且共享所有 DataNode 的存儲資源。
這種設計可解決單 NameNode 存在的以下幾個問題:
1、 HDFS 集群擴展性。多個 NameNode 分管一部分目錄,使得一個集群可以擴展到更多節 點,不再像 1.0 中那樣由於內存的限制制約文件存儲數目。
2、 性能更高效。多個 NameNode 管理不同的數據,且同時對外提供服務,將為用戶提供 更高的讀寫吞吐率。
3、 良好的隔離性。用戶可根據需要將不同業務數據交由不同 NameNode 管理,這樣不同 業務之間影響很小。
注意問題: HDFS Federation 並不能解決單點故障問題,也就是說,每個 NameNode 都存在 在單點故障問題,你需要為每個 namenode 部署一個 backup namenode 以應對 NameNode 掛掉對業務產生的影響。
補充:
1、數據丟失 hadoop會處於安全模式
強制退出安全模式命令 bin/hadoop dfsadmin -safemode leave
