Ubuntu环境下HDFS配置的核心参数说明
在配置HDFS前,需完成Java环境(Hadoop依赖Java运行)和Hadoop安装包的准备:
java -version验证安装是否成功。/usr/local/hadoop)。HDFS的配置主要涉及core-site.xml(通用配置)、hdfs-site.xml(HDFS专用配置)两个核心文件,以下是关键参数:
fs.defaultFS:定义HDFS的默认文件系统URI,格式为hdfs://<namenode-host>:<port>(如hdfs://localhost:9000),是客户端访问HDFS的入口地址。hadoop.tmp.dir:Hadoop临时文件的存储目录(如/usr/local/hadoop/tmp),用于存放NameNode元数据、DataNode数据等临时文件,需确保目录有读写权限。dfs.replication:数据块的副本数(如1,单机模式下建议设为1;集群模式下通常设为3,以保证数据冗余和高可用)。dfs.namenode.name.dir:NameNode元数据的本地存储路径(如/usr/local/hadoop/data/namenode),用于保存文件系统镜像(fsimage)和编辑日志(edits),需配置多个路径(逗号分隔)以实现冗余。dfs.datanode.data.dir:DataNode数据文件的本地存储路径(如/usr/local/hadoop/data/datanode),用于存放实际的数据块,同样支持多个路径。dfs.namenode.secondary.http-address(可选):SecondaryNameNode的HTTP地址(如secondarynamenode:50090),用于辅助NameNode合并编辑日志,减少NameNode启动时间。若需实现HDFS高可用(避免NameNode单点故障),需额外配置以下参数:
dfs.nameservices:命名服务标识(如mycluster),用于区分不同的HDFS集群。dfs.ha.namenodes.<nameservice>:该命名服务下的NameNode节点列表(如nn1,nn2),需与后续的RPC地址一一对应。dfs.namenode.rpc-address.<nameservice>.<namenode>:每个NameNode的RPC地址(如master:8020、node1:8020),客户端通过该地址访问对应的NameNode。dfs.namenode.shared.edits.dir:共享编辑日志的存储路径(如qjournal://master:8485;node1:8485;node2:8485/mycluster),使用JournalNode集群实现元数据的共享与同步,确保主备NameNode数据一致。dfs.client.failover.proxy.provider.<nameservice>:客户端故障转移代理类(如org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider),用于自动切换主备NameNode。dfs.ha.fencing.methods:故障转移时的隔离方法(如ssh),用于防止脑裂(Split-Brain)问题,确保同一时间只有一个NameNode处于Active状态。dfs.ha.automatic-failover.enabled:是否启用自动故障转移(如true),开启后系统会自动检测NameNode状态并进行切换。hadoop.tmp.dir、dfs.namenode.name.dir、dfs.datanode.data.dir)需提前创建,并赋予Hadoop用户(如hadoop)读写权限。hdfs namenode -format命令初始化NameNode元数据,注意格式化会清除原有数据,需谨慎操作。ssh-keygen和ssh-copy-id命令),以便NameNode与DataNode之间的通信。