HDFS在Ubuntu上的正确配置步骤
首先更新Ubuntu系统的软件包列表及已安装的包,确保系统处于最新状态:
sudo apt update && sudo apt upgrade -y
Hadoop依赖Java运行环境,推荐安装OpenJDK 8(Hadoop 3.x兼容版本):
sudo apt install -y openjdk-8-jdk
验证Java安装是否成功:
java -version
输出应包含Java版本信息(如openjdk version "1.8.0_XXX")。
Hadoop需要SSH无密码登录来管理集群节点(即使是单机模式也建议配置):
sudo apt install -y openssh-server
生成SSH密钥对(若已存在可跳过):
ssh-keygen -t rsa -P ''(直接按回车键,默认路径和空密码)
将公钥复制到本地节点(实现免密登录):
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
设置authorized_keys权限:
chmod 600 ~/.ssh/authorized_keys
测试SSH连接:
ssh localhost(输入密码后若无需再次输入,则配置成功)。
从Apache Hadoop官网下载稳定版本(如3.3.4),并解压到指定目录(如/usr/local):
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzvf hadoop-3.3.4.tar.gz -C /usr/local/
为方便后续操作,重命名解压后的目录:
sudo mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
编辑用户级的~/.bashrc文件(或系统级的/etc/profile),添加Hadoop相关环境变量:
nano ~/.bashrc
在文件末尾添加以下内容(根据实际解压路径调整):
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使环境变量立即生效:
source ~/.bashrc
验证环境变量是否配置正确:
echo $HADOOP_HOME(应输出/usr/local/hadoop)。
进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下关键配置文件:
编辑core-site.xml,设置HDFS的默认访问地址(单机模式下为localhost):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
编辑hdfs-site.xml,配置NameNode和DataNode的目录及副本数(单机模式下副本数为1):
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 副本数,单机模式设为1 -->
</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>
根据hdfs-site.xml中的配置,创建NameNode和DataNode的存储目录,并设置正确的权限:
sudo mkdir -p /usr/local/hadoop/data/namenode
sudo mkdir -p /usr/local/hadoop/data/datanode
sudo chown -R $USER:$USER /usr/local/hadoop/data(将目录所有者改为当前用户,避免权限问题)。
首次启动HDFS前,必须格式化NameNode(初始化元数据存储目录):
hdfs namenode -format
格式化后会生成/usr/local/hadoop/data/namenode/current目录(包含元数据)。
使用以下命令启动HDFS服务(包含NameNode和DataNode):
start-dfs.sh
启动后,可通过以下命令检查服务进程是否正常运行:
jps
若输出包含NameNode、DataNode和SecondaryNameNode(可选,用于备份NameNode元数据),则说明启动成功。
打开浏览器,访问NameNode的Web管理界面(默认端口50070,部分版本为9870):
http://localhost:9870(Hadoop 3.x及以上版本)
若能看到HDFS的文件系统概览(如存储容量、数据节点数量),则说明配置成功。
执行以下HDFS命令,测试基本功能:
hdfs dfs -mkdir -p /user/$USERhdfs dfs -put ~/test.txt /user/$USER/(test.txt为本地文件)hdfs dfs -ls /user/$USERhdfs dfs -get /user/$USER/test.txt ~/download_test.txthdfs dfs -rm /user/$USER/test.txt若需要停止HDFS服务,可使用以下命令:
stop-dfs.sh
core-site.xml中的端口(如9000)是否被占用,可通过sudo netstat -tulnp | grep 9000查看。namenode、datanode)的所有者为当前用户,避免因权限不足导致启动失败。core-site.xml中的fs.defaultFS为集群NameNode地址,并配置slaves文件(指定DataNode节点列表)。