1、環境說明html
一、虛擬機平臺:VMware10java
二、Linux版本:ubuntu-12.04.3-desktop-i386node
三、JDK:jdk1.7.0_51web
四、Hadoop版本:2.2.0apache
五、集羣節點:3個,分別是hadoopMaster,hadoopSlave1,hadoopSlave2ubuntu
註明:文中fyzwjd是虛擬機用戶名。oracle
2、準備工做app
一、安裝虛擬機平臺,並新建一個Ubuntu虛擬機,記爲hadoopMaster。ssh
二、在hadoopMaster上安裝JDK。webapp
Jdk通常有兩個版本:Open JDK、SunJDK,建議使用Sun JDK。安裝步驟以下:
先去 Oracle下載Linux下的JDK壓縮包,http://www.oracle.com/technetwork/java/javase/downloads/index.html,下好後直接解壓。
進入在存放jdk文件夾的當前目錄,將解壓好的jdk1.7.0_51文件夾用最高權限復移動到/usr/lib/jvm目錄裏,此時即便沒有jvm目錄也能夠執行以下命令,jvm文件夾將獲得建立。
[plain] view plaincopy
sudo mv jdk1.7.0_51 /usr/lib/jvm/
接下來須要設置環境變量,進入當前用戶名的主文件夾,修改.profile文件。注意,該文件是當前用戶的配置文件,若是要對使用計算機的全部用戶生效,那麼須要設置的文件應該是 /etc/profile。
[plain] view plaincopy
sudo gedit ~/.profile
在末尾加上:
[plain] view plaincopy
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51
exportJRE_HOME=/usr/lib/jvm/jdk1.7.0_51/jre
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
而後保存關閉,此時在命令行輸入java -version將會仍然顯示java沒有安裝。此時,須要使用source更新下.profile文件:
[plain] view plaincopy
$ source ~/.profile
再次使用java -version命令能夠看到以下輸出:
[plain] view plaincopy
fyzwjd@ubuntu :~$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build1.7.0_51-b18)
到此,已經將oracle jdk配置完成。若是以前系統裏面已經安裝了openjdk,可使用以下方法將默認jdk更改過來:
[plain] view plaincopy
$ sudo update-alternatives --install/usr/bin/java java /usr/lib/jvm/jdk1.7.0_51/bin/java 300
輸入sun jdk前的數字就行了
[plain] view plaincopy
$ sudo update-alternatives --install/usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_51/bin/javac 300
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
三、安裝SSH
能夠先檢查是否已經有ssh,也能夠跳過這步,直接安裝。
[plain] view plaincopy
$ sudo ps -ef | grep ssh
若是隻有 ssh-agent 就須要安裝openssh-server了。
[plain] view plaincopy
$ sudo apt-get install ssh openssh-server
四、配置SSH公鑰
[plain] view plaincopy
$ ssh-keygen -t rsa -P "yourPassWord"
[plain] view plaincopy
$ ssh-keygen -t rsa -P "yourPassWord"
ssh-kengen 是用連字符連着的,千萬不要分開。另外,密碼是你的虛擬機密碼,而不是空(固然,若是你的虛擬機密碼爲空,另當別論)。
五、創建IP和hadoop節點的映射關係
修改etc/hosts文件,在上面加入hadoop節點IP和名稱的映射關係。
[plain] view plaincopy
$ sudo gedit /etc/hosts
在其中加上(ip是節點可配置的ip,本身設定):
[plain] view plaincopy
192.168.32.*** hadoopMaster
192.168.32.*** hadoopSlave1
192.168.32.*** hadoop Slave2
六、克隆兩個Ubuntu虛擬機,做爲hadoop的其餘兩個節點
七、分別修改三個Ubuntu虛擬機的名稱
[plain] view plaincopy
$ sudo gedit /etc/hostname
分別將三個虛擬機名稱改成:hadoopMaster,hadoopSlave1,hadoopSlave2。
八、修改三個Ubuntu虛擬機的IP
3、配置SSH無密碼登錄。
其目的是讓hadoopMaster免密碼登錄hadoopSlave1和hadoopSalve2,步驟以下:
一、在hadoopMaster上建立受權文件authorized_keys
進入~/.ssh/目錄下執行」ls –a」,發現開始是沒有authorized_keys文件的,可使用如下兩種方法來生成:
(1) 將id_rsa.pub追加到authorized_keys受權文件中;
[plain] view plaincopy
$ cat id_rsa.pub >> authorized_keys
(2) 複製id_rsa.pub 爲 authorized_keys
[plain] view plaincopy
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
完成後就能夠無密碼登陸本機了,能夠嘗試登錄localhost
[plain] view plaincopy
$ ssh localhost
二、將受權文件拷貝到hadoopSlave一、hadoopSlave2相同文件夾下
[plain] view plaincopy
$ scp authorized_keys fyzwjd@hadoopSlave1:~/.ssh/authorized_keys
$ scp authorized_keys fyzwjd@hadoopSlave2:~/.ssh/authorized_keys
拷貝過程須要密碼,拷貝以後就能夠免密碼登錄hadoopSlave1和hadoopSlave2了。
4、安裝Hadoop2.2,搭建集羣
一、在hadoopMaster上安裝hadoop
首先到Apache官網上下載hadoop2.2的壓縮文件,將其解壓到當前用戶的根文件夾中(home/fyzwjd/),將解壓出的文件夾更名爲hadoop。
[plain] view plaincopy
$ sudo mv hadoop-2.2.0 hadoop
配置以前,先在本地文件系統建立如下文件夾:~/hadoop/tmp、~/dfs/data、~/dfs/name。 主要涉及的配置文件有7個:都在/hadoop/etc/hadoop文件夾下,能夠用gedit命令對其進行編輯。
[plain] view plaincopy
~/hadoop/etc/hadoop/hadoop-env.sh
~/hadoop/etc/hadoop/yarn-env.sh
~/hadoop/etc/hadoop/slaves
~/hadoop/etc/hadoop/core-site.xml
~/hadoop/etc/hadoop/hdfs-site.xml
~/hadoop/etc/hadoop/mapred-site.xml
~/hadoop/etc/hadoop/yarn-site.xml
(1) 配置文件1:hadoop-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51)
(2) 配置文件2:yarn-env.sh
修改JAVA_HOME值(export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51)
(3) 配置文件3:slaves
[plain] view plaincopy
hadoopSalve1
hadoopSlave2
(4) 配置文件4:core-site.xml
[plain] view plaincopy
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoopMaster:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/fyzwjd/hadoop/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.fyzwjd.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.fyzwjd.groups</name>
<value>*</value>
</property>
</configuration>
(5) 配置文件5:hdfs-site.xml
[plain] view plaincopy
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoopMaster:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/fyzwjd/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/fyzwjd/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
(6) 配置文件6:mapred-site.xml
[plain] view plaincopy
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoopMaster:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoopMaster:19888</value>
</property>
</configuration>
(7) 配置文件7:yarn-site.xml
[plain] view plaincopy
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoopMaster:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoopMaster:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoopMaster:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoopMaster:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoopMaster:8088</value>
</property>
</configuration>
二、將hadoop文件夾拷貝到hadoopSlave1和hadoopSlave2上。
[plain] view plaincopy
scp –r/home/fyzwjd/hadoop fyzwjd@hadoopSlave1:~/
scp –r/home/fyzwjd/hadoop fyzwjd@hadoopSlave2:~/
5、驗證與運行
全部的組件啓動和中止服務都在/hadoop/sbin目錄下,通常啓動hadoop前會格式化namenode。具體命令參考以下:
[plain] view plaincopy
進入安裝目錄: cd ~/hadoop/
格式化namenode:./bin/hdfs namenode –format
啓動hdfs: ./sbin/start-dfs.sh
此時在hadoopMaster上面運行的進程有:namenodesecondarynamenode
hadoopSlave1和hadoopSlave2上面運行的進程有:datanode
[plain] view plaincopy
啓動yarn: ./sbin/start-yarn.sh
此時在hadoopMaster上面運行的進程有:namenodesecondarynamenoderesourcemanager
hadoopSlave1和hadoopSlave2上面運行的進程有:datanode nodemanaget
[plain] view plaincopy
查看集羣狀態:./bin/hdfs dfsadmin –report
查看文件塊組成: ./bin/hdfsfsck/ -files -blocks
查看HDFS: http://hadoopMaster:50070
查看RM: http:// hadoopMaster:8088