JDK 版本:jdk 1.7.0_67
Apache Hadoop 版本:Hadoop 2.5.0

1、安裝目錄準備

~]$ cd /opt/

opt]$ sudo mkdir /opt/modules
opt]$ sudo chown beifeng:beifeng modules

opt]$ sudo mkdir softwares
opt]$ sudo chown beifeng:beifeng softwares/

2、安裝 JDK

(1)解壓 JDK

softwares]$ tar  -zxf  jdk-7u67-linux-x64.tar.gz  -C  /opt/modules/

(2)配置環境變數

在配置檔案 /etc/profile 中配置如下環境變數:

#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin

3、Apache Hadoop 2.x 偽分散式環境搭建

(1)解壓 Hadoop

softwares]$ tar -zxf hadoop-2.5.0.tar.gz -C /opt/modules/

(2)刪除 share/doc/ 目錄下的全部內容,裡面是英文文件,比較佔用儲存空間

hadoop-2.5.0]$ rm -rf /opt/modules/hadoop-2.5.0/share/doc/

(3)建立目錄 data/tmp/,該目錄存放 NameNode 和 DataNode 的塊檔案、映象檔案和日誌檔案

hadoop-2.5.0]$ mkdir -p data/tmp/

(4)修改配置檔案,配置 Hadoop 基本元件

Hadoop 的配置檔案存放在 /opt/modules/hadoop-2.5.0/etc/hadoop/ 目錄下。

export JAVA_HOME=/opt/modules/jdk1.7.0_67

2.   在 core-site.xml 配置檔案中指定 NameNode 所在機器位置及互動埠號,另外也是指定使用的是 HDFS 檔案系統:

<property>
	<name>fs.defaultFS</name>
	<value>hdfs://bigdata-senior.ibeifeng.com:8020</value>
</property>

3.   在 hdfs-site.xml 配置檔案中指定副本數個數,預設為 3 個:

<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

4.   在 core-site.xml 配置檔案中更改 Hadoop 預設的臨時目錄位置,用於存放塊檔案和元資料檔案:

<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/modules/hadoop-2.5.0/data/tmp</value>
</property>

5.   在 slaves 配置檔案中指定從節點位置(主機名),包括 DataNode 和 NodeManager:

6.   更改 mapred-site.xml 檔名稱,指定 MR 執行在 yarn 上:

<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

7.   修改配置檔案 yarn-site.xml,設定 yarn 的相關服務和 ResourceManager 所在的主機名:

<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>bigdata-senior.ibeifeng.com</value>
</property>

(5)配置 Hadoop 歷史伺服器

在配置檔案 mapred-site.xml 中如下配置:

<property>
	<name>mapreduce.jobhistory.address</name>
	<value>bigdata-senior.ibeifeng.com:10020</value>
</property>
<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>bigdata-senior.ibeifeng.com:19888</value>
</property>

(6)配置 Hadoop 日誌聚集

在配置檔案 yarn-site.xml 中如下配置:

<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
</property>
<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>106800</value>
</property>

(7)配置 HDFS 使用者許可權檢查

在配置檔案 hdfs-site.xml 中如下配置:

<property>
	<name>dfs.permissions.enabled</name>
	<value>false</name>
</property>

在配置檔案 core-site.xml 中如下配置:

<property>
	<name>hadoop.http.staticuser.user</name>
	<value>beifeng</value>
</property>

(8)配置 SecondaryNameNode

在配置檔案 hdfs-site.xml 中如下配置:

 <property>
	 <name>dfs.namenode.secondary.http-address</name>
	 <value>bigdata-senior.ibeifeng.com:50090</value>
 </property>

(9)配置 SSH 免密碼登陸

~]$ cd home/beifeng/.ssh
.ssh]$ ssh-keygen -t rsa

即生成 id_rsa 和 id_rsa.pub 檔案,其中 id_rsa 是私鑰,id_rsa.pub 是公鑰。

.ssh]$ ssh-copy-id bigdata-senior.ibeifeng.com

即生成 authorized_keys 和 known_hosts 檔案,其中 authorized_keys 是向遠端主機發送的使用者公鑰,known_hosts 是記錄檔案,有記錄檔案就不需要再輸入密碼了。

4、格式化 NameNode

格式化 NameNode,對於元資料進行初始化,否則無法讀取元資料:

hadoop-2.5.0]$ bin/hdfs namenode -format

注:不要多次格式化 NameNode,如需再次格式化,需要先刪除 data/tmp/ 下的所有檔案。

5、啟動 Hadoop 服務元件

(1)啟動 NameNode:

hadoop-2.5.0]$ sbin/hadoop-daemon.sh start namenode

(2)啟動 DataNode:

hadoop-2.5.0]$ sbin/hadoop-daemon.sh start datanode

(3)啟動 ResourceManager:

hadoop-2.5.0]$ sbin/yarn-daemon.sh start resourcemanager

(4)啟動 NodeManager:

hadoop-2.5.0]$ sbin/yarn-daemon.sh start nodemanager

(5)啟動 SecondaryNameNode:

hadoop-2.5.0]$ sbin/hadoop-daemon.sh start secondarynamenode

(6)啟動 HistoryServer:

hadoop-2.5.0]$ sbin/mr-jobhistory-daemon.sh start historyserver

6、停止 Hadoop 服務元件

(1)停止 NameNode:

hadoop-2.5.0]$ sbin/hadoop-daemon.sh stop namenode

(2)停止 DataNode:

hadoop-2.5.0]$ sbin/hadoop-daemon.sh stop datanode

(3)停止 ResourceManager:

hadoop-2.5.0]$ sbin/yarn-daemon.sh stop resourcemanager

(4)停止 NodeManager:

hadoop-2.5.0]$ sbin/yarn-daemon.sh stop nodemanager

(5)停止 SecondaryNameNode:

hadoop-2.5.0]$ sbin/hadoop-daemon.sh stop secondarynamenode

(6)停止 HistoryServer:

hadoop-2.5.0]$ sbin/mr-jobhistory-daemon.sh stop historyserver