sudo apt update && sudo apt install -y net-tools vim openssh-server
sudo ufw disable
/etc/hosts中添加所有节点的IP与主机名映射(如192.168.1.100 master、192.168.1.101 slave1),确保节点间可通过主机名访问。Hadoop依赖Java运行,推荐安装OpenJDK 8或11:
sudo apt install -y openjdk-11-jdk
验证Java安装:
java -version # 应输出Java版本信息
配置Java环境变量(可选,若未自动设置):编辑/etc/profile,添加:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
wget下载:wget https://downloads.apache.org/hadoop/core/hadoop-3.3.15/hadoop-3.3.15.tar.gz
/usr/local/,并重命名目录:sudo tar -xzvf hadoop-3.3.15.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.15 /usr/local/hadoop
sudo chown -R $USER:$USER /usr/local/hadoop
编辑~/.bashrc(用户级)或/etc/profile(系统级),添加Hadoop路径:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source ~/.bashrc # 或 source /etc/profile
Hadoop配置文件位于$HADOOP_HOME/etc/hadoop,需修改以下关键文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode主机名与端口 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/hdfs/tmp</value> <!-- 临时文件目录 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 单节点设为1,集群设为3 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/hadoop/hdfs/namenode</value> <!-- NameNode元数据目录 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/hadoop/hdfs/datanode</value> <!-- Datanode数据目录 -->
</property>
</configuration>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- Shuffle服务 -->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
Hadoop需要SSH无密码登录NameNode,生成密钥并授权:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 生成密钥对
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 添加公钥到授权文件
chmod 600 ~/.ssh/authorized_keys # 设置权限
测试免密码登录:
ssh localhost # 应无需输入密码
首次启动前需格式化NameNode(仅第一次执行,会清除已有数据):
hdfs namenode -format
格式化后会创建dfs.name.dir指定的目录,存储元数据。
$HADOOP_HOME/sbin/start-dfs.sh
jps命令检查是否启动成功,应看到NameNode、DataNode进程:jps # 输出应包含 NameNode、DataNode
http://namenode:50070,查看集群状态。hdfs dfs命令创建目录、上传文件:hdfs dfs -mkdir -p /test # 创建测试目录
hdfs dfs -put /usr/src/linux-source-2.6.27/Doc*/memory-barriers.txt /test # 上传测试文件
hdfs dfs -ls /test # 列出目录内容
dfs.replication设为1,集群需设为3并配置所有节点的/etc/hosts。dfs.namenode.name.dir和dfs.datanode.data.dir目录存在且有写入权限。$HADOOP_HOME/logs下的日志文件(如NameNode.log)定位问题。