在所有节点执行以下命令安装OpenJDK 11(Hadoop 3.x推荐版本):
sudo apt update
sudo apt install -y openjdk-11-jdk
验证Java安装是否成功:
java -version
输出应包含openjdk version "11.x.x",确认Java环境配置正确。
Hadoop集群需要主节点与从节点之间通过SSH无密码通信,步骤如下:
生成SSH密钥对(主节点本地操作):
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
(直接按回车键,使用默认路径和空密码)
将公钥复制到所有从节点:
假设从节点IP为slave1_ip、slave2_ip,执行:
ssh-copy-id hadoop@slave1_ip
ssh-copy-id hadoop@slave2_ip
(hadoop为从节点的用户名,需提前创建并设置密码)
测试无密码登录:
ssh hadoop@slave1_ip
ssh hadoop@slave2_ip
若无需输入密码即可登录,说明配置成功。
下载Hadoop(主节点操作): 从Apache官网下载最新稳定版(如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 /opt/
sudo mv /opt/hadoop-3.3.6 /opt/hadoop
sudo chown -R hadoop:hadoop /opt/hadoop # 修改所有者为hadoop用户
创建数据目录(主节点操作): HDFS需要指定NameNode和DataNode的存储路径:
sudo mkdir -p /opt/hadoop/hdfs/namenode
sudo mkdir -p /opt/hadoop/hdfs/datanode
sudo chown -R hadoop:hadoop /opt/hadoop/hdfs # 修改所有者
配置环境变量(主节点操作):
编辑~/.bashrc文件,添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际Java路径调整
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source ~/.bashrc
验证Hadoop命令:
hadoop version
输出Hadoop版本信息,说明安装成功。
进入Hadoop配置目录(/opt/hadoop/etc/hadoop),修改以下文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> <!-- master为主节点IP或主机名 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- Hadoop临时目录 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value> <!-- 数据副本数(根据从节点数量调整,如2个从节点设为2) -->
</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>
</configuration>
若文件不存在,先复制模板:
cp mapred-site.xml.template mapred-site.xml
修改内容:
<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.resource.memory-mb</name>
<value>4096</value> <!-- 每个NodeManager可用内存(单位:MB) -->
</property>
</configuration>
编辑/opt/hadoop/etc/hadoop/workers文件,添加所有从节点的主机名或IP(每行一个):
slave1_ip
slave2_ip
(主节点不需要添加到该文件)。
hdfs namenode -format
(首次启动必须执行,格式化会清除HDFS中的所有数据,生产环境需谨慎)
start-dfs.sh
启动后,NameNode和DataNode进程会自动运行。
start-yarn.sh
启动后,ResourceManager和NodeManager进程会自动运行。
jps
输出应包含以下进程(主节点):
NameNode
SecondaryNameNode
ResourceManager
以及从节点的:
DataNode
NodeManager
http://master_ip:9870(Hadoop 3.x版本为9870,旧版本为50070);http://master_ip:8088。~/.ssh/authorized_keys文件权限(需设为600),或重新生成密钥;core-site.xml中的fs.defaultFS端口(如9000改为其他未被占用的端口);/opt/hadoop/logs/目录下),定位具体错误原因;/opt/hadoop/hdfs/namenode和/opt/hadoop/hdfs/datanode的所有者为hadoop用户。按照以上步骤操作,即可在Ubuntu上成功搭建Hadoop集群。集群搭建完成后,可通过hadoop fs -put命令上传文件到HDFS,或使用hadoop jar命令运行MapReduce程序。