一、HDFS配置新手快速上手步骤
在开始配置前,需完成以下基础准备,确保环境符合要求:
sudo apt install openjdk-11-jdk),并配置JAVA_HOME环境变量(指向Java安装路径,如export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64);/usr/local/hadoop),并配置HADOOP_HOME环境变量(指向Hadoop目录,如export HADOOP_HOME=/usr/local/hadoop);ssh-keygen -t rsa生成密钥,将公钥(id_rsa.pub)追加到authorized_keys(cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys),并设置权限(chmod 0600 ~/.ssh/authorized_keys)。HDFS的配置文件位于$HADOOP_HOME/etc/hadoop目录,需修改以下两个关键文件:
该文件定义HDFS的NameNode地址,是客户端访问HDFS的入口。添加以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- 伪分布式模式下为localhost,集群模式替换为NameNode主机名/IP -->
</property>
</configuration>
fs.defaultFS:指定HDFS的默认文件系统URI,格式为hdfs://<NameNode主机名/IP>:<端口>(默认端口9000)。该文件配置HDFS的核心行为,如副本数、数据存储路径等。添加以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 伪分布式模式设为1(单节点无需副本),生产环境建议设为3(保证容错性) -->
</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>
dfs.replication:数据块副本数,影响数据容错能力(副本越多,容错性越强,但存储开销越大);dfs.namenode.name.dir:NameNode存储元数据(如目录结构、块位置)的本地目录;dfs.datanode.data.dir:DataNode存储实际数据块的本地目录。NameNode是HDFS的“大脑”,负责管理元数据。首次启动前需格式化(清空原有元数据,仅执行一次):
hdfs namenode -format
执行后会提示“Format successful”,表示格式化完成。注意:格式化会删除NameNode目录下的所有数据,请确保目录为空或备份重要数据。
格式化完成后,启动HDFS服务:
start-dfs.sh
该命令会启动NameNode(主节点)和DataNode(从节点,伪分布式模式下即为当前节点)。启动后,可通过以下命令查看进程是否运行:
jps
正常应看到NameNode和DataNode进程。
通过以下方式验证HDFS是否配置成功:
http://localhost:9870(Hadoop 3.x版本,默认端口9870),若能看到HDFS集群状态(如NameNode信息、存储容量、DataNode列表),则说明启动成功;hdfs dfs命令进行基本操作,如:
hdfs dfs -mkdir -p /user/test(创建/user/test目录);hdfs dfs -put ~/test.txt /user/test(将本地test.txt上传至HDFS的/user/test目录);hdfs dfs -ls /user/test(列出/user/test目录下的文件);hdfs dfs -get /user/test/test.txt ~/download_test.txt(将HDFS中的文件下载至本地)。core-site.xml中的fs.defaultFS配置是否正确(如主机名是否解析、端口是否被占用);确认hadoop.tmp.dir目录(core-site.xml中配置)是否存在且有读写权限;hdfs-site.xml中的dfs.namenode.name.dir和dfs.datanode.data.dir目录是否存在;确认防火墙是否允许HDFS端口(如9000、50070)通信;JAVA_HOME环境变量配置正确(echo $JAVA_HOME应输出Java安装路径),且$JAVA_HOME/bin在PATH中。二、注意事项
slaves文件(列出所有DataNode主机名),并将fs.defaultFS中的主机名改为NameNode的实际IP或域名;$HADOOP_HOME/logs目录下的日志文件(如NameNode.log、DataNode.log)定位错误原因。