Centos7 實現Hadoop-2.9.1分散式叢集搭建和部署(三臺機器)
一、準備三臺虛擬機器
hadoop 192.168.131.128
localhost131 192.168.131.131
localhost134 192.168.131.134
(以上是我的三臺虛擬機器的hostname 和 ip)
hadoop 是 master 的 hostname
剩下的兩個是 slave 的 hostname
linux 的 hostname 需要自己手動修改 不然會是 localhost.localdomain
修改 hostname 的命令是:
hostnamectl set-hostname hadoop
修改 hosts 檔案,(三臺虛擬機器都要新增)新增:
192.168.131.131 localhost131 192.168.131.134 localhost134 192.168.131.128 hadoop
二、然後在 master 機器上配置通過 SSH 遠端複製過去就行了,接下來幾乎都是在 master 機器上操作
1->安裝 jdk
在官網上下載 jdk 是 linux 版本的 (我是在 wins 上下載好之後通過 FTP 上傳的 Centos 上的)
注意記得檢視 Centos 是 64 位的還是 32 位的
檢視的命令:
uname -r
字尾是 X86_64 是 64 位的,否則是 32 位的
解壓 jdk,將 jdk 新增 PATH 中:
vim /etc/profile
#新增內容:
export JAVA_HOME=/home/jdkHome #jdk壓縮包解壓位置
export PATH=$PATH:$JAVA_HOME/bin
!!!!!退出vim後,別忘了重啟檔案!!!!
source /etc/profile
2->安裝 Hadoop-2.9.1
這是 hadoop 目前比較穩定的版本
將檔案通過 FTP 上傳的 Centos 上 /home/hadoopCluster 並解壓
3->配置 Hadoop-2.9.1
進入到 Hadoop 目錄下的 etc/hadoop 的目錄下(修改 6 個檔案)
① 修改檔案 hadoop-env.sh
找到 export JAVA_HOME=$JAVA_HOME 修改為 jdk 所在的路徑
②修改檔案 core-site.xml
③修改檔案 hdfs-site.xml<configuration> <!-- 指定HDFS老大(namenode)的通訊地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop:8020</value> </property> <!-- 指定hadoop執行時產生檔案的儲存路徑 --> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoopCluster/hadoop-2.9.1/tmp</value> </property> </configuration>
<configuration>
<!-- 設定namenode的http通訊地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop:50070</value>
</property>
<!-- 設定secondarynamenode的http通訊地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>localhost131:50090</value>
</property>
<!-- 設定hdfs副本數量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 設定datanode存放的路徑 -->
</configuration>
該配置檔案中我之前配置 namenode 和 datanode 的路徑,到最後格式化 namenode 的時候,namenode 沒有啟動,檢視 logs 目錄下的啟動日誌時發現,format 的時候,會報找不到 namenode 的錯誤,jps 檢視 java 程序的時候或發現 namenode 沒有啟動,所以就將 namenode 和 datanode 的路徑設定為預設。
④修改檔案 mapred-site.xml
mapred-site.xml 檔案當你修改時會發現沒有這個檔案,將 mapred-site.xml.template 檔案重新命名為 mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
修改為:
<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
⑤修改檔案 yarn-site.xml<configuration>
<!-- 通知框架MR使用YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
⑥修改檔案 slaves
localhost131
localhost134
4->修改完成了接下是配置 SSH 免密登入
在這裡我使用 root 超級管理員登陸的,所以進入 /root 目錄下
執行命令 ls
進入目錄 .ssh --> cd .ssh
ssh-keygen -t rsa
mv id_rsa_pub authorized_keys
ssh-copy-id [email protected]
ssh-copy-id [email protected]
配置完以上操作之後測試 SSH
ssh localhost131 !!退出 SSH 命令是 exit
ssh localhost134
不需要輸入密碼證明 SSH 配置成功,接下來就是遠端複製檔案,將 jdk 還有 hadoop 複製到另外兩臺機器上
注意:以上操作都是在一臺機器上完成的 master (hadoop : 192.168.131.128)
5->將 Hadoop 新增到 PATH 中去
vim /etc/profile
export JAVA_HOME=/home/jdkHome/jdk1.8.0_171
export HADOOP_HOME=/home/hadoopCluster/hadoop-2.9.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
6->遠端複製檔案
進入目錄 /home 資料夾下(因為 jdk 和 hadoop 檔案都在這個資料夾下)
scp -r jdkHome [email protected]
scp -r hadoopCluster [email protected]
scp -r jdkHome [email protected]
scp -r hadoopCluster [email protected]
7->將另外兩臺機器也配置 jdk 全域性環境
ssh 複製過去的是以檔案的形式傳輸的,所以不用解壓,直接修改 profile 檔案就行了,修改完之後,hadoop 不用再修改了,s三臺機器 hadoop 配置都是一樣的 , 注意:如果 jdk 的路徑有不同,則需要修改 hadoop 配置檔案 hadoop-env.sh 檔案,將裡面的 JAVA_HOME 配置成該機器的路徑
8->格式化 master (hadoop:192.168.131.128) 的 namenode
hdfs namenode -format
9->啟動 Hadoop (master)
進去 sbin 目錄下 : ./start-all.sh
另外兩臺機器:jps
測試:192.168.131.128:50070 進入 namenode 的管理介面
192.168.131.128:8088 進入resourceManager的管理介面
啟動完成