Ubuntu中HDFS配置的关键要点
sudo apt update && sudo apt install openjdk-11-jdk安装,验证java -version确认安装成功。/usr/local/目录(如/usr/local/hadoop-3.3.1),避免权限问题。~/.bashrc或/etc/profile,添加HADOOP_HOME(指向Hadoop安装目录)和PATH(包含$HADOOP_HOME/bin、$HADOOP_HOME/sbin),执行source命令使配置生效。HDFS的配置主要涉及core-site.xml(通用配置)和hdfs-site.xml(HDFS专用配置):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- 单机模式;集群模式改为集群名称(如hdfs://mycluster) -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> <!-- 临时文件目录,需提前创建 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 副本数(单机模式设为1;集群模式根据节点数调整,如3) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hdfs/namenode</value> <!-- NameNode元数据存储目录 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/hdfs/datanode</value> <!-- DataNode数据存储目录 -->
</property>
</configuration>
core-site.xml中添加io.file.buffer.size(建议4096或8192字节);若需开启垃圾回收(保留删除文件7天),可在hdfs-site.xml中添加fs.trash.interval(值为分钟,如10080)。hdfs-site.xml中的配置,创建NameNode和DataNode的存储目录(如sudo mkdir -p /usr/local/hadoop/hdfs/namenode、sudo mkdir -p /usr/local/hadoop/hdfs/datanode),并修改所有权为当前用户(sudo chown -R $USER:$USER /usr/local/hadoop/hdfs)。hdfs namenode -format。注意:格式化会清除已有数据,仅首次启动或元数据损坏时使用。start-dfs.sh(位于$HADOOP_HOME/sbin),启动NameNode和DataNode进程。jps命令查看是否运行NameNode、DataNode进程(若未运行,检查日志文件$HADOOP_HOME/logs中的错误信息)。http://localhost:50070(单机模式)或http://namenode-ip:50070(集群模式),查看HDFS集群状态(如存储容量、文件数量)。若配置多节点HDFS集群,需在NameNode与其他节点(DataNode、SecondaryNameNode)之间配置SSH免密登录:
ssh-keygen -t rsa -P ''(默认保存至~/.ssh/id_rsa)。ssh-copy-id user@datanode-ip),输入密码后完成分发。ssh user@datanode-ip,无需输入密码即可登录,确保集群节点间通信无阻碍。若需提升HDFS可靠性,可配置高可用(HA)模式,核心是通过ZooKeeper实现NameNode的自动故障转移:
zkServer.sh start),并通过zkServer.sh status确认Leader/Follower状态。fs.defaultFS为集群名称(如hdfs://mycluster),并指定ZooKeeper地址(ha.zookeeper.quorum)。dfs.nameservices)、NameNode节点列表(dfs.ha.namenodes.mycluster)、RPC地址(dfs.namenode.rpc-address.mycluster.nn1/nn2)、HTTP地址(dfs.namenode.http-address.mycluster.nn1/nn2)、共享编辑目录(dfs.namenode.shared.edits.dir,使用JournalNode)、故障转移代理(dfs.client.failover.proxy.provider.mycluster)和隔离方法(dfs.ha.fencing.methods,如sshfence)。dfs.journalnode.edits.dir(编辑日志存储目录),并启动JournalNode(hdfs --daemon start journalnode)。hdfs namenode -initializeSharedEdits(初始化共享编辑日志),然后启动JournalNode和NameNode(start-dfs.sh),通过hdfs haadmin -getServiceState nn1验证NameNode状态(active/standby)。