一、环境准备
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
),查看集群状态。