ping命令互相訪問(如ping master-node-ip)。Hadoop依賴Java運行環境,推薦使用OpenJDK 8或11(兼容性更好):
# 更新軟件包索引
sudo apt update
# 安裝OpenJDK 11(Ubuntu 22.04默認倉庫版本)
sudo apt install -y openjdk-11-jdk
# 驗證安裝(輸出版本信息即為成功)
java -version
注意:后續配置Hadoop時需確認JAVA_HOME路徑(如/usr/lib/jvm/java-11-openjdk-amd64)。
Hadoop集群節點間需通過SSH通信,配置無密碼登錄可避免重復輸入密碼:
# 1. 在Master節點生成SSH密鑰對(默認保存在~/.ssh目錄)
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
# 2. 將公鑰復制到所有Slave節點(替換user為用戶名,slave-ip為Slave節點IP)
ssh-copy-id user@slave-ip
# 3. 測試無密碼登錄(從Master到Slave)
ssh user@slave-ip
# 輸入`exit`退出Slave節點
提示:若需Master節點自身也能無密碼登錄,可將公鑰復制到自身(ssh-copy-id user@master-ip)。
從Apache官網下載穩定版本的Hadoop(如3.3.6),解壓到指定目錄:
# 創建Hadoop安裝目錄
sudo mkdir -p /usr/local/hadoop
# 下載Hadoop(以3.3.6為例,可通過清華鏡像加速)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
# 解壓到安裝目錄
sudo tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/hadoop --strip-components=1
# 修改目錄所有者(替換hadoop為你的用戶名)
sudo chown -R hadoop:hadoop /usr/local/hadoop
驗證:進入Hadoop目錄,查看版本信息:
cd /usr/local/hadoop
./bin/hadoop version
編輯~/.bashrc文件,添加Hadoop和Java的環境變量:
nano ~/.bashrc
在文件末尾添加以下內容(根據實際路徑調整):
# Java環境變量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
# Hadoop環境變量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source ~/.bashrc
驗證:終端輸入hadoop version,顯示版本信息即為成功。
進入Hadoop配置目錄($HADOOP_HOME/etc/hadoop),修改以下關鍵文件:
配置HDFS的默認文件系統和臨時目錄:
<configuration>
<!-- 指定HDFS的NameNode地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master-node-ip:9000</value>
</property>
<!-- Hadoop臨時目錄(需提前創建) -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
配置HDFS的副本數和數據存儲目錄:
<configuration>
<!-- 數據副本數(集群節點數≥3時設為3,否則設為1) -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- NameNode數據存儲路徑(需提前創建) -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value>
</property>
<!-- DataNode數據存儲路徑(需提前創建) -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value>
</property>
</configuration>
配置YARN資源管理器:
<configuration>
<!-- 指定ResourceManager所在節點 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master-node-ip</value>
</property>
<!-- 啟用MapReduce Shuffle服務 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
若目錄下無該文件,需復制模板生成并配置:
cp mapred-site.xml.template mapred-site.xml
nano mapred-site.xml
添加以下內容:
<configuration>
<!-- 指定MapReduce運行框架為YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
注意:所有路徑(如/usr/local/hadoop/data/namenode)需提前創建,并賦予Hadoop用戶權限:
mkdir -p /usr/local/hadoop/data/{namenode,datanode}
chown -R hadoop:hadoop /usr/local/hadoop/data
首次啟動Hadoop前,需格式化NameNode(僅第一次啟動時執行,會清除原有數據):
# 切換到Hadoop用戶
su - hadoop
# 格式化NameNode
hdfs namenode -format
格式化完成后,會生成/usr/local/hadoop/data/namenode/current目錄。
啟動HDFS和YARN服務:
# 啟動HDFS(NameNode和DataNode)
start-dfs.sh
# 啟動YARN(ResourceManager和NodeManager)
start-yarn.sh
驗證進程:使用jps命令查看Master和Slave節點的進程:
NameNode、ResourceManager、SecondaryNameNode(可選)。DataNode、NodeManager。http://master-node-ip:9870(查看HDFS狀態、存儲信息)。http://master-node-ip:8088(查看集群資源、任務調度)。# 創建HDFS目錄
hdfs dfs -mkdir -p /user/hadoop/input
# 上傳本地文件到HDFS
hdfs dfs -put ~/test.txt /user/hadoop/input
# 查看HDFS文件列表
hdfs dfs -ls /user/hadoop/input
若上述命令執行成功,說明集群搭建完成。
chmod或chown調整目錄權限。fs.defaultFS的9000改為其他端口)。sudo ufw disable),或SSH配置是否正確。