一、環境準備
sudo apt update && sudo apt upgrade -y
更新系統;安裝OpenJDK 8(或更高版本,推薦Temurin):sudo apt install -y openjdk-8-jdk
(或使用Temurin源安裝);安裝SSH服務:sudo apt install -y openssh-server
,用于節點間無密碼登錄。二、安裝Hadoop
/usr/local
目錄:wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz && sudo tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/
。~/.bashrc
(或/etc/profile
),添加以下內容:export HADOOP_HOME=/usr/local/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 或Temurin路徑
執行source ~/.bashrc
使配置生效;驗證安裝:hadoop version
,應顯示Hadoop版本信息。三、配置SSH免密登錄
ssh-keygen -t rsa -b 4096
,按提示回車(默認保存路徑~/.ssh/id_rsa
,無需設置密碼)。ssh-copy-id hadoop@namenode
、ssh-copy-id hadoop@datanode1
(hadoop
為集群統一用戶名,需提前在各節點創建)。ssh hadoop@namenode
、ssh hadoop@datanode1
,無需輸入密碼即可登錄,驗證配置成功。四、配置Hadoop核心文件
所有節點需配置core-site.xml
、mapred-site.xml
;NameNode節點需配置hdfs-site.xml
;若啟用YARN,需配置yarn-site.xml
。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- 主節點主機名 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- 臨時目錄,需提前創建 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 數據副本數,根據節點數量調整 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/hdfs/namenode</value> <!-- NameNode元數據目錄 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/hdfs/datanode</value> <!-- DataNode數據目錄 -->
</property>
<!-- 高可用配置(可選) -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value> <!-- NameNode ID列表 -->
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>namenode1:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>namenode2:8020</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/mycluster</value> <!-- JournalNode共享目錄 -->
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value> <!-- 啟用自動故障轉移 -->
</property>
</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>resourcemanager</value> <!-- ResourceManager主機名 -->
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- 高可用配置(可選) -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-cluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>namenode1:2181,namenode2:2181,namenode3:2181</value>
</property>
</configuration>
五、配置主機名解析
編輯所有節點的/etc/hosts
文件,添加集群節點的IP地址與主機名映射(替換為實際IP):
127.0.0.1 localhost
192.168.1.100 namenode
192.168.1.101 datanode1
192.168.1.102 datanode2
192.168.1.103 resourcemanager
保存后執行ping namenode
測試解析是否正確。
六、初始化HDFS(僅NameNode節點)
在NameNode節點執行hdfs namenode -format
,格式化HDFS元數據目錄(此操作會清除原有數據,僅首次啟動需執行)。
七、啟動Hadoop集群
start-dfs.sh
,啟動NameNode和DataNode服務;執行jps
查看進程,應顯示NameNode
、DataNode
。start-yarn.sh
,啟動ResourceManager和NodeManager服務;執行yarn node -list
查看NodeManager列表,驗證YARN啟動成功。hadoop-daemons.sh start journalnode
)和ZooKeeper集群(zkServer.sh start
),并驗證ZooKeeper狀態(zkServer.sh status
)。八、驗證集群狀態
hdfs dfs -ls /
,若返回“Permission denied”,可執行hdfs dfs -mkdir -p /user/hadoop
創建用戶目錄,再執行hdfs dfs -ls /
查看根目錄。yarn node -list
,應顯示所有NodeManager節點信息;提交測試任務:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 10 100
,驗證YARN任務調度功能。http://namenode:9000
)、ResourceManager Web界面(http://resourcemanager:8088
),查看集群狀態。