分配IP
先在草稿紙上分配好IP和主機名,三臺主機均能上外網,且均能互相ping通即可。
IP | 主機名 |
192.168.85.101 | node1 |
192.168.85.102 | node2 |
192.168.85.103 | node3 |
再將以上表格內的內容寫入/etc/hosts中(每個都要寫)
echo '192.168.85.101 node1' >>/etc/hosts
echo '192.168.85.102 node2' >>/etc/hosts
echo '192.168.85.103 node3' >>/etc/hosts
分別在對應IP的主機中修改主機名
在node1中
vi /etc/hostname
將hostname中的內容改爲node1
然後執行reboot命令重啓主機
在node2,node3中重複上述操作。
關閉防火牆
實驗環境中關閉防火牆,防止後續查看web頁面訪問受阻。
systemctl stop firewalld #臨時關閉
systemctl disable firewalld #禁止開機啓動
配置ssh免密登陸
在所有虛擬機中分別執行
ssh-keygen -t rsa
三次回車生成密鑰
在node1中執行下述操作
生成認證的公鑰key,再用下面的命令分發給各個節點
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
scp /root/.ssh/id_rsa.pub root@node2:/root/.ssh/authorized_keys
scp /root/.ssh/id rsa.pub root@node3:/root/.ssh/authorized_keys
再給所有虛報機上的authorized_keys添加權限
chmod 644 /root/.ssh/authorized_keys
即可完成node1到其他節點的免密登錄
可用以下命令測試ssh免密登陸是否設置成功
ssh root@node2 #不需輸入密碼即爲成功
exit #退出ssh
安裝JDK
創建java目錄
mkdir -p /usr/local/java
下載jdk1.8版本,並將其解壓到/usr/local/java目錄下
tar -zxf jdk-8u65-linux-x64.tar.gz -C /usr/local/java/
配置環境變量
vi /etc/profile
#在配置文件的最後添加如下配置
#JAVA
JAVA_HOME=/usr/local/java/jdk1.8.0_65 #自己解壓後的jdk目錄名稱
JRE_JOME=/usr/local/java/jdk1.8.0_65/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_JOME CLASS_PATH PATH
保存退出後,執行以下命令刷新環境變量
source /etc/profile
進行測試是否成功
java -version
安裝hadoop3.1.1
下載hadoop3.1.11
從清華鏡像網站https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/hadoop-3.1.1上下載hadoop3.1.1壓縮包到本地
在node1主機上創建hadoop目錄
mkdir -p /usr/local/hadoop
上傳到node1主機上,並解壓到/usr/local/hadoop目錄下
tar -zxf hadoop-3.1.1.tar.gz -C /usr/local/hadoop/
配置環境變量
vi /etc/profile
#在配置文件最後一行添加如下配置
#HADOOP
export HADOOP_HOME =/usr/local/hadoop/hadoop-3.1.1
export PATH = $PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
運行如下命令刷新環境變量
source /etc/profile
配置Hadoop3.1.1
創建目錄
#在/usr/local/hadoop目錄下創建目錄
cd /usr/local/hadoop/
mkdir tmp
mkdir var
mkdir dfs
mkdir dfs/name
mkdir dfs/data
修改配置文件
vi workers
刪除localhost
添加從節點主機名,例如我這裏是:
node2
node3
1) hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_65
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.1
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
以下配置在各個文件的<configuration></configuration>中添加
2)core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.85.101:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
3) hdfs-site.xml
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/dfs/name</value>
<description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/dfs/data</value>
<description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>need not permissions</description>
</property>
4) yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
5) mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>node1:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/usr/local/hadoop/var</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
同步
使用scp命令將node1下的目錄複製到各個從節點的相應位置上
scp -r /usr/local/java node2:/usr/local/java
scp -r /usr/local/hadoop node2:/usr/local/hadoop
scp -r /etc/profile node2:/etc
scp -r /usr/local/java node3:/usr/local/java
scp -r /usr/local/hadoop node3:/usr/local/hadoop
scp -r /etc/profile node3:/etc
在從節點上分別運行下述命令刷新環境變量
source /etc/profile
格式化節點
在node1中運行下述命令,格式化節點
hdfs namenode -format
運行之後不報錯,並在倒數第五六行有successfully即爲格式化節點成功
運行以下命令,啓動hadoop集羣的服務
start-all.sh
在node1上輸入jps可以看到node1下的節點
在node2下的節點
在瀏覽器上訪問hdfs的web界面
在瀏覽器上輸入http://192.168.85.101:8088(前者爲主節點ip地址,後者爲hdfs的web進程對應的端口號)