1.這裏準備三臺虛擬機用來搭建hadoop集羣。java
10.118.213.211 secms-tomcat211
10.118.213.212 secms-tomcat212
10.118.213.216 secms-tomcat216node
其中211做爲master。vim
2.安裝JDK,這裏版本爲1.8。tomcat
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_151 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$PATH:$JAVA_HOME/bin
3.配置hosts文件服務器
vim /etc/hosts
192.168.1.111 master01 192.168.1.112 slaveone02 192.168.1.113 slaveone03
4.創建hadoop帳號ssh
useradd hadoop 建立用戶hadoop passwd hadoop 給已建立的用戶設置密碼
5.設置ssh免密碼登陸oop
經過hadoop帳號登錄到secms-tomcat211上,在/home/hadoop目錄下執行命令:測試
ssh-keygen -t rsa
屢次回車以後在/home/hadoop/.ssh目錄下產生id_rsa和id_rsa.pub文件。在其餘主機上面使用一樣方式產生祕鑰文件。spa
在secms-tomcat211上面使用以下命令3d
cat id_rsa.pub >> authorized_keys
將id_rsa.pub公鑰內容拷貝到authorized_keys文件中。
登陸其餘主機,將其餘主機的公鑰文件內容都拷貝到secms-tomcat211主機上的authorized_keys文件中。
命令以下:
ssh-copy-id -i secms-tomcat211
查看secms-tomcat211主機上的authorized_keys文件內容
cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwioob4cnpLc+OyqE3i4gX718HNf80c7gQcA+Kpmta4Rk/n/kbmYT83h4XoeMVMBZ9h5/t5uvmetF+/dMIa7DJKz0cTXvwa4XYH0rV7vnL+Kpx57pWbiLNGI1SogG6sp85xlTZ8Se8Fxr3V77to6VoonU5aUa6nWY4SPhCf7iBcSFnnEwC0H98UQpRmajZyYZrenLrlHtGkA1X5fEcTiRGeQsPzkHDQ6Vjkc24HDfLH1ojDLIh+M4CcFiixxyEeTxBLuRHM0DQqPT0oIeT066bnzmPEXLjfHueiTQJqg9lpFxOP+1GUtBHhvgzszRjscH0S9EiRl1ZgBl7tRFZoDKIw== hadoop@secms-tomcat211 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs/YEWUC5/TIIHEMvD3LlpQXAiBPhX3LIsjl4lKKuLduyzhhiRy93T5htCToldoXgeIzDD8T0/eOg9ATm/MJ2FJ6lS56RpI5eCuq/QKxz0b+ocKsOfnaYEXsx6V4O1x5dgU/5h+yeNR+hLJjyTm5Frh8LKUJYj0kx+WgL37Yv/0WTf9wtdF8htjIu5hupSqXyi7eK/wRqyKzNChG78YMKXCmjJyMML+s1BnOLwcU/rYIiICdDJi8g44C3H8qQMCEQFfVySOvWFHYW2MCpIARC2jaemabYRkgInekNu+EYgKo9HtKbbMVCU9X+tPcxw+NWx/TAtHVbWghIuO2rJJW+Tw== hadoop@secms-tomcat212 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArsOs0oMen1oUPz6cSZfV79EaMBIJr3P3R6Ju2ooYNFO3qx212Zz1kCtcmIsBs/qLksU1mtak35o4hdR4H4KBWLZ2E6jBj09rDapt0Z6vJsCkTtR+YC/+olrybaGNkRJn5WlzIh+MSZY+6MTlzX/YHrnjJH6D0LV+vALi4MrxtOflBPG+xJTCQ3df0eEIaYFw9xYZDjhsttzJHl6N7KyQf1qYWIEwaN8CmKYhPD1NwP/5xKnRTuEVwiQN5PXkzAw9hgdvkKRUOsDfePxJrkJVpIzktS84IeiwxcefEanqLOmoB+lSCpaJpXfzs7Zew7girFxUE/ORpO64bTRyr2LsNQ== hadoop@secms-tomcat216
受權authorized_keys文件
chmod 600 authorized_keys
將authorized_keys拷貝到secms-tomcat212和secms-tomcat216上面。
scp /home/hadoop/.ssh/authorized_keys secms-tomcat212:/home/hadoop/.ssh/ scp /home/hadoop/.ssh/authorized_keys secms-tomcat216:/home/hadoop/.ssh/
至此,免密碼登陸已經設定完成,注意第一次ssh登陸時須要輸入密碼,再次訪問時便可免密碼登陸。
1.下載hadoop壓縮包hadoop-2.7.5.tar.gz,拷貝到/home/hadoop/目錄下進行解壓。
2.配置hadoop環境變量
export HADOOP_HOME=/home/hadoop/hadoop-2.7.5 export JAVA_HOME=/usr/java/jdk1.8.0_151 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
3.建立文件目錄
給Master上面hdfs的NameNode、DataNode及臨時文件。並使用scp命令將新建的文件夾目錄拷貝到其餘主機上面。
/home/hadoop/hdfs/data /home/hadoop/hdfs/name /home/hadoop/hdfs/tmp
4.配置slaves文件
slaves文件中指定Datanode的節點
secms-tomcat212 secms-tomcat216
5.配置core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://secms-tomcat211:8020</value>//這裏配置主節點 </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/hdfs/tmp</value>//運行產生的臨時數據文件存放位置 </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>2</value>//備份2分 </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/hdfs/data</value> </property> </configuration>
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> //mapreduce使用yarn來調度 <value>yarn</value> </property> </configuration>
yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>secms-tomcat211</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
將配置文件拷貝到其餘主機上面
//拷貝到secms-tomcat216 scp core-site.xml hadoop@secms-tomcat212:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp hdfs-site.xml hadoop@secms-tomcat212:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp mapred-site.xml hadoop@secms-tomcat212:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp yarn-site.xml hadoop@secms-tomcat212:/home/hadoop/hadoop-2.7.5/etc/hadoop/ //拷貝到secms-tomcat216 scp core-site.xml hadoop@secms-tomcat216:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp hdfs-site.xml hadoop@secms-tomcat216:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp mapred-site.xml hadoop@secms-tomcat216:/home/hadoop/hadoop-2.7.5/etc/hadoop/ scp yarn-site.xml hadoop@secms-tomcat216:/home/hadoop/hadoop-2.7.5/etc/hadoop/
6.修改hadoop-env.sh中jdk路徑
export JAVA_HOME=/usr/java/jdk1.8.0_151
7.關閉主機上面的防火牆
service iptables stop
8.格式化namenode
在secms-tomcat211上面執行
bin/hdfs namenode -format
提示(成功的話,會看到 「successfully formatted」 和 「Exitting with status 0」 的提示,若爲 「Exitting with status 1」 則是出錯)。
9.啓動NameNode 和 DataNode進程
在master節點執行啓動命令:
sbin/start-dfs.sh
執行jps查看啓動狀況
29121 SecondaryNameNode 28914 NameNode 30681 Jps
分別在secms-tomcat2十二、secms-tomcat216執行jps查看啓動狀況
6474 DataNode 8250 Jps
hdfs監控界面:http://10.118.213.211:50070/
10.啓動ResourceManager 和 NodeManager 進程
ResourceManager管理總資源分配
NodeManager管理該臺節點資源
在master上面執行命令:
sbin/start-yarn.sh sbin/mr-jobhistory-daemon.sh start historyserver # 開啓歷史服務器,才能在Web中查看任務運行
yarn界面:http://10.118.213.211:8088
注:關閉yarn時執行命令
sbin/stop-yarn.sh sbin/mr-jobhistory-daemon.sh stop historyserver
若是不想啓動 YARN,務必把配置文件 mapred-site.xml 重命名,改爲 mapred-site.xml.template,
須要用時改回來就行。不然在該配置文件存在,而未開啓 YARN 的狀況下,
運行程序會提示 「Retrying connect to server: 0.0.0.0/0.0.0.0:8032」 的錯誤,
這也是爲什麼該配置文件初始文件名爲 mapred-site.xml.template。
1.測試文件
新建測試文件vim words
hello a
world b
hello c
jiafeng b
sean a
2.上傳文件到hdfs中
//上傳命令 //文件路徑 //hdfs中文件路徑 bin/hadoop fs -put /home/hadoop/words /words
3.運行測試文件
//程序所在jar包 //統計詞頻例子 //數據路徑 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /words /words_out (輸出路徑)
4.查看結果
bin/hadoop fs -ls / bin/hadoop fs -ls /words_out bin/hadoop fs -cat /words_out/part-r-00000
結果顯示
a 2 b 2 c 1 hello 2 jiafeng 1 sean 1 world 1