1.下載:https://dist.apache.org/repos/dist/release/hadoop/commo
2.詳解:http://blog.csdn.net/aircraftxjd/article/details/44624219
一,安裝環境
1.虛擬機:VMware-12.5.2
2.操作系統:linux CentOs-6.8 64位
3.Jdk:jdk-7u79 64位
4.hadoop版本:hadoop-2.7.1
5.安裝三個CentOs-6.8,其中:一個服務器兩個客戶機
Master:192.168.1.149
node2 :192.168.1.150
node3 :192.168.1.151
二,修改主機名(非必要)
1.修改主機名稱hostname
a) vi /etc/sysconfig/network
b) 保存退出:Esc:wq
c) 重啓生效:reboot
d) 重啓之後可以看到主機名已經改變了
2.三個節點上都配置hosts文件
a) 編輯:vi /etc/hosts
b) 保存退出:Esc:wq
三,配置SSH免密碼登錄
因爲Hadoop需要通過SSH登錄到各個節點進行操作,我用的是root用戶,每臺服務器都生成公鑰,再合併到authorized_keys
1.CentOS默認沒有啓動ssh無密登錄,去掉/etc/ssh/sshd_config其中2行的註釋,每臺服務器都要設置
a) 編輯:vim /etc/ssh/sshd_config
#RSAAuthentication yes
#PubkeyAuthentication yes
b) 保存退出
2.輸入命令:ssh-keygen -t rsa生成key,都不輸入密碼,一直回車,/root就會生成.ssh文件夾,每臺服務器都要設置
3.合併公鑰到authorized_keys文件,在Master服務器,進入/root/.ssh目錄,通過SSH命令合併
a) cd /root/.ssh/
b) cat id_rsa.pub>> authorized_keys
c) ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
d) ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
4.把Master服務器的authorized_keys,known_hosts複製到Slave服務器的/root/.ssh目錄
a) scp -r authorized_keys known_hosts [email protected]:/root/.ssh/
b) scp -r authorized_keys known_hosts [email protected]:/root/.ssh/
5.完成,ssh [email protected],ssh [email protected]就不需要輸入密碼了
四,安裝jdk
每臺服務器都要安裝
1.在/home目錄下新建兩個文件夾java hadoop
2.將jdk放在java文件夾中並解壓配置環境變量
a) 首先卸載自帶的jdk
(1)查看jkd:rpm -qa | grep jdk
(2)卸載:rpm -e 複製查出來的第一行 例:rpm -e java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
b) 解壓:tar -zxvf jdk-7u79-linux-x64.tar.gz
c) 進入解壓文件夾並pwd 複製路徑
d) 編輯配置環境變量:vim /etc/profile 並添加如下圖所示
export JAVA_HOME=/home/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
e) 保存退出:按Esc:wq
f) 使環境變量生效:source /etc/profile
g) 查看jdk:java -version
五,下載安裝Hadoop
將下載的hadoop文件放在/home/hadoop用戶的根目錄下,接着開始解壓
1.解壓:tar -zxvf hadoop-2.7.1.tar.gz
2.在/home/hadoop目錄下創建數據存放的文件夾tmp,hdfs,hdfs/data,hdfs/name
a) mkdir tmp hdfs hdfs/data hdfs/name
3.修改配置文件(在master主節點中配置)
請注意:主節點(master)上面的文件如果修改一定要覆蓋另外兩個節點(node2,node3)
scp -r /home/hadoop/hadoop-2.7.1/etc/hadoop/* [email protected]:/home/hadoop/hadoop-2.7.1/etc/hadoop/
scp -r /home/hadoop/hadoop-2.7.1/etc/hadoop/* [email protected]:/home/hadoop/hadoop-2.7.1/etc/hadoop/
a) 分別是core.site.xml,hdfs-site.xml,mapred-site.xml,hadoop-env.sh,yarn-env.sh,slaves文件
b) 進入此文件夾下:cd /home/hadoop/hadoop-2.7.1/etc/hadoop/
c) 編輯:vim core-site.xml添加:
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.1.149:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
d) 編輯:vim hdfs-site.xml添加:
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>1048576</value>
</property>
<property>
<name>file:dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!--以下是配置SecondaryNameNode,如果不配置默認在主節點上面,而namenode和SecondaryNameNode要分開配置,這裏我配置到了150上面 -->
<property>
<name>dfs.http.address</name>
<value>192.168.1.149:50070</value>
<description>
The address and the base port where the dfs namenode web ui will listen on.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.150:50090</value>
</property>
e) 編輯:vim mapred-site.xml 添加
注意:這裏可能沒有mapred-site.xml這個文件只有mapred-site.xml.template 這時我們需要複製一份並改成 mapred-site.xml
執行命令:cp mapred-site.xml.template mapred-site.xml
然後再添加
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.1.149:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.1.149:19888</value>
</property>
<property>
<name>mapreduce.tasktracker.map.tasks.maximum</name>
<value>10</value>
</property>
<property>
<name>mapreduce.tasktracker.reduce.tasks.maximum</name>
<value>4</value>
</property>
</configuration>
f) 配置hadoop-env.sh,yarn-env.sh兩個文件下的JAVA_HOME
export JAVA_HOME=/home/java/jdk1.7.0_79
g) 最後配置slaves文件,刪除默認的localhost,增加2個從節點
192.168.1.150
192.168.1.151
4.將配置好的Hadoop複製到各個節點對應位置上,通過scp傳送
scp -r /home/hadoop/ 192.168.1.150:/home/
scp -r /home/hadoop/ 192.168.1.151:/home/
5.在Master服務器啓動hadoop,從節點會自動啓動,進入/home/hadoop/hadoop-2.7.0目錄
a) 初始化:bin/hdfs namenode -format
b) 全部啓動sbin/start-all.sh,也可以分開sbin/start-dfs.sh,sbin/start-yarn.sh
c) 停止:sbin/stop-all.sh
d) 輸入命令jps可以看到相關信息
(1)以下節點全部啓動纔是正確的:
注意:namenode和SecondaryNameNode不能再同一個服務器上,上面我已經做了配置,效果如下:
6.測試:
a) 瀏覽器輸入:192.168.1.149:8088
b) 輸入:192.168.1.149:50070 可以看到以下datanodes是兩個,如果是0那就是沒配好