您好,登錄后才能下訂單哦!
環境:CentOS7 64位 3臺
centos7-1 192.168.190.130 master
centos7-2 192.168.190.129 slave1
centos7-3 192.168.190.131 slave2
hadoop 下載地址:http://mirrors.hust.edu.cn/apache/hadoop/common/ 選則3.1.0版本
1.安裝三臺虛擬機(centos7),安裝jdk,實現節點間免密碼登陸。
#安裝虛擬機不做說明,可查看相關文章資料。
#安裝jdk,配置JAVA_HOME環境變量,不做說明,自行百度。
#三個虛擬機都需要修改hostname,修改/etc/hosts
#vim /etc/hostname //分別寫成master,slave1,slave2,修改后需要重新啟動reboot
#vim /etc/hosts
#192.168.190.130 master
#192.168.190.129 slave1
#192.168.190.131 slave2
#給三臺機器設置面密碼ssh登陸
#ssh-keygen -t rsa //生成密鑰,三臺機器都需要執行相同的命令
#authorized_keys
#touch /root/.ssh/authorized_keys //master節點上
#cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
#把slave1、slave2上的id_rsa.pub都拷貝到master節點上,直接追加到authorized_keys
#scp -r /root/.ssh/id_rsa.pub root@masterIP:/root/.ssh/slave1.id_rsa.pub //slave1
#scp -r /root/.ssh/id_rsa.pub root@masterIP:/root/.ssh/slave2.id_rsa.pub //slave2
#cat /root/.ssh/slave1.id_rsa.pub >> /root/.ssh/authorized_keys //master
#cat /root/.ssh/slave2.id_rsa.pub >> /root/.ssh/authorized_keys //master
#authorized_keys內容如下:
#通過scp命令將master的authorized_keys拷貝到slave1\slave2的/root/.ssh/下
#scp -r /root/.ssh/authorized_keys root@Slave1IP:/root/.ssh/
#scp -r /root/.ssh/authorized_keys root@Slave2IP:/root/.ssh/
#ssh 目標域名 //master、slave1、slave2,第一次需要確認一下輸入yes,后面就不用了
到此免密碼登陸已經完成。
2.載hadoop,解壓tar.gz文件
#cd /usr
#mkdir hadoop
#cd hadoop
#wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.1.0.tar.gz
#tar -zxvf hadoop-3.1.0.tar.gz
解壓后,出現hadoop-3.1.0工作目錄,既可以使用。
#cd /usr/hadoop/hadoop-3.1.0
#mkdir tmp
#./bin/hadoop -version //檢驗是否可以使用
2.設置環境變量,全局(/etc/profile)
#vim /etc/profile
設置HADOOP_HOME,并加到PATH路徑下
HADOOP_HOME=/usr/hadoop/hadoop-3.1.0
PATH=$PATH:$HADOOP_HOME/bin
#source /etc/profile
3.配置hadoop
#hadoop主要的文件,路徑hadoop-3.1.0/etc/hadoop/下
hadoop-env.sh //
core-site.xml //
hdfs-site.xml //
mapred-site.xml //
yarn-site.xml //
workers // 只要配置namenode節點,用于發現slave節點
a.hadoop-env.sh配置
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.171-0.b13.el7_3.x86_64
b.core-site.xml配置
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<description>HDFS的URI,文件系統://namenode標識:端口號</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>namenode上本地的hadoop臨時文件夾</description>
</property>
</configuration>
c.配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本個數,配置默認是3,應小于datanode機器數量</description>
</property>
</configuration>
d.配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</nam
<value>yarn</value>
</property>
</configuration>
e.配置yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
f.配置workers(slaves)文件,這里特別注意一下版本不同可能沒有slaves文件,刪除localhost,一行一個,填寫ip地址也可以(只在namenode節點配置)
slave1
slave2
4.將/usr/hadoop復制到其他服務器:
#scp -r /usr/hadoop root@目標ip:/usr/hadoop
5.格式化namenode:
#CD /usr/hadoop/hadoop-3.1.0
成功的話,會看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若為 “Exitting with status 1” 則是出錯;備注:只需格式化namenode,datanode不需要格式化(若格式化了,可將/usr/hadoop/tmp目錄下文件都刪除),所以先將安裝文件夾復制到其他服務器,再格式化
6.啟動hadoop
#cd /usr/hadoop/hadoop-3.1.0
#sbin/start-all.sh
8.檢查啟動結果
#jps
總結:
a.訪問http://192.168.190.130:9000時發現,端口拒絕訪問
關閉防護墻,依然沒有用,查看端口占用情況(netstat -npl | grep 9000)發現沒有被占用,后來看到hadoop namenode -format消息發現定位到了127.0.0.1,無法遠程訪問,通過修改hosts文件可以解決這個問題:
#cd /etc/hosts //三臺虛擬機都要修改
#vim /etc/hosts //將下面的寫在文件最前面
#192.168.190.130 master
#192.168.190.129 slave1
#192.168.190.131 slave2
重新格式化namenode節點:
#cd /usr/hadoop/hadoop-3.1.0/bin
#./hadoop namenode -format
b.發現經過a后,可以訪問9000端口,但是如下圖:
但是訪問8088端口可以進入,如下:
發現只有一個節點啟動了,所以現在的問題是:namenode啟動起來了,但是slave1,slave2兩個datanode沒有啟動起來,那么這個集群啟動就失敗了,分別在兩臺datanode節點查看jps,發現確實沒有啟動,繼續找問題。
查看別人的安裝過程,發現有個叫做slaves的文件,作用于namenode節點,用于發現slave節點,在配置文件etc/hadoop中我找了半天沒有找到,我最后自己創建slaves文件,依然沒有用,然后看這路徑里的workers文件發現了些什么,于是就打開一看果然就是他,然后重新操作就可以了。
3.1.0版本的slaves文件換成了workers文件,需要特別注意。
c.啟動時可以直接把所有都啟動,命令如下:
#cd /usr/hadoop/hadoop-3.1.0
#sbin/start-all.sh
d.#sbin/start-dfs.sh執行腳本報錯,如下:
ERROR: Attempting to launch hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting launch.
Starting datanodes
ERROR: Attempting to launch hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting launch.
Starting secondary namenodes [localhost.localdomain]
ERROR: Attempting to launch hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting launch.
解決方法:
在start-dfs.sh 、stop-dfs.sh加如下配置
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
添加后可能還是會報如下警告:
WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER.
解決辦法:替換上述的解決方法
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
d.#sbin/start-yarn.sh執行腳本報錯,如下:
Starting resourcemanager
ERROR: Attempting to launch yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting launch.
解決辦法:start-yarn.sh、stop-yarn.sh添加如下配置
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
本文是查看了網絡博客與官方文檔,結合自己操作所記錄的所有過程,如果有不對或者錯誤,請留言指正,如有侵權,請聯系本人刪除。
參考博客:https://www.linuxidc.com/Linux/2018-02/150812.htm
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。