Hadoop集群在Ubuntu上的搭建步驟
Hadoop依賴Java運行環境,推薦使用OpenJDK 8或11(兼容性更好):
# 更新軟件包索引
sudo apt update
# 安裝OpenJDK 11(Ubuntu 22.04+默認倉庫版本)
sudo apt install -y openjdk-11-jdk
# 驗證安裝(需顯示Java版本信息)
java -version
注意:若使用Hadoop 3.3.x及以上版本,建議選擇OpenJDK 11以避免兼容性問題。
Hadoop集群節點間需通過SSH無密碼通信,避免每次操作輸入密碼:
# 在Master節點上生成SSH密鑰對(默認保存到~/.ssh/id_rsa)
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
# 將公鑰復制到所有Slave節點(替換user為節點用戶名,slave-ip為Slave節點IP)
ssh-copy-id user@slave-ip
# 測試免密登錄(無需密碼即可登錄Slave節點)
ssh user@slave-ip
從Apache官網下載穩定版本的Hadoop(如3.3.6),解壓到指定目錄:
# 創建Hadoop安裝目錄
sudo mkdir -p /usr/local/hadoop
# 下載Hadoop(以3.3.6為例,可通過wget或瀏覽器下載)
wget https://dlcdn.apache.org/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
# 修改目錄所有者(替換hadoop為當前用戶)
sudo chown -R hadoop:hadoop /usr/local/hadoop
編輯~/.bashrc
文件,添加Hadoop和Java環境變量:
# 打開.bashrc文件
nano ~/.bashrc
# 在文件末尾添加以下內容(替換路徑為用戶實際路徑)
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # Java安裝路徑
export HADOOP_HOME=/usr/local/hadoop # Hadoop安裝路徑
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 添加Hadoop命令到PATH
# 保存并退出(Ctrl+O→回車→Ctrl+X)
# 使環境變量生效
source ~/.bashrc
進入Hadoop配置目錄($HADOOP_HOME/etc/hadoop
),修改以下關鍵文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- Master節點主機名,端口默認9000 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> <!-- Hadoop臨時目錄 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value> <!-- 數據副本數(根據節點數量調整,建議2-3) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元數據存儲路徑 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value> <!-- DataNode數據存儲路徑 -->
</property>
</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 使用YARN作為資源管理框架 -->
</property>
</configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value> <!-- ResourceManager所在節點主機名 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- MapReduce Shuffle服務 -->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
首次啟動Hadoop前,需格式化NameNode(會清除原有數據,僅第一次需要):
# 切換到Hadoop用戶(替換hadoop為當前用戶)
su - hadoop
# 格式化NameNode
hdfs namenode -format
# 在Master節點上啟動HDFS服務
$HADOOP_HOME/sbin/start-dfs.sh
# 在Master節點上啟動YARN服務
$HADOOP_HOME/sbin/start-yarn.sh
# 在Master節點上查看Hadoop進程(需顯示NameNode、DataNode、ResourceManager、NodeManager)
jps
http://master:9870
(Hadoop 3.x版本端口為9870,2.x為50070);http://master:8088
。# 查看HDFS節點列表
hdfs dfsadmin -report
# 查看YARN節點列表
yarn node -list
sudo chown -R hadoop:hadoop /usr/local/hadoop
);core-site.xml
、yarn-site.xml
中的端口(如9000改為9001);~/.ssh/authorized_keys
文件權限(需設置為600),或重新生成密鑰。