hdfs配置文件(hdfs.site.xml)详解

本文详细解析了Hadoop Distributed File System (HDFS)的配置文件hdfs.site.xml,涵盖了其主要配置选项和用途,帮助读者理解HDFS的配置原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的对hdfs(hdfs.site.xml)配置文件做一个简单的说明。

<configuration>
<property>
<!-- 为namenode集群定义一个services name -->
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<property>
<!-- nameservice 包含哪些namenode,为各个namenode起名 -->
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<property>
<!-- 名为nn1的namenode 的rpc地址和端口号,rpc用来和datanode通讯 -->
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>master:8020</value>
</property>
<property>
<!-- 名为nn2的namenode 的rpc地址和端口号,rpc用来和datanode通讯 -->
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>slave1:8020</value>
</property>
<property>
<!--名为nn1的namenode 的http地址和端口号,web客户端 -->
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>master:50070</value>
</property>
<property>
<!--名为nn2的namenode 的http地址和端口号,web客户端 -->
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>slave1:50070</value>
</property>
<property>
<!-- namenode间用于共享编辑日志的journal节点列表 -->
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value>
</property>
<property>
<!-- journalnode 上用于存放edits日志的目录 -->
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/xinjian/hadoop-2.9.0/tmp/data/dfs/jn</value>
</property>
<property>
<!-- 客户端连接可用状态的NameNode所用的代理类 -->
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<!-- HDFS的HA功能的防脑裂方法。可以是内建的方法(例如shell和sshfence)或者用户定义的方法。
建议使用sshfence(hadoop:9922),括号内的是用户名和端口,注意,这需要NN的2台机器之间能够免密码登陆
fences是防止脑裂的方法,保证NN中仅一个是Active的,如果2者都是Active的,新的会把旧的强制Kill。 -->
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<!-- 密钥认证文件-->
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<property>
<!-- 是否开启自动故障转移。建议开启,true -->
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>


<property>
<!-- 配置系统自动数据备份数量为3份(默认是3份::-->
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

<property>
<!-- JournalNode的HTTP地址和端口。端口设置为0表示随机选择。-->
<name>dfs.journalnode.http-address</name>
<value>0.0.0.0:8480</value>
</property>
<property>
<!-- JournalNode RPC服务地址和端口-->
<name>dfs.journalnode.rpc-address</name>
<value>0.0.0.0:8485</value>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property> 
<!-- 是否在HDFS中开启权限检查。-->
<name>dfs.permissions.enabled</name> 
<value>true</value> 
</property> 
<property> 
<!-- 是否在hdfs开启acl,默认为false-->
<name>dfs.namenode.acls.enabled</name> 
<value>true</value> 
</property>

</configuration>
### HDFS 中 `core-site.xml` 文件的配置详解 #### 1. **核心功能** `core-site.xml` 是 Hadoop 的全局配置文件之一,主要用于定义整个 Hadoop 集群的基础属性和行为。它不仅影响 HDFS 的运行方式,还涉及其他模块(如 YARN 和 MapReduce)。以下是常见的配置项及其作用: --- #### 2. **常见配置项** ##### a. `fs.defaultFS` - **描述**: 指定默认的文件系统 URI。 - **用途**: 当未显式提供文件系统的路径时,默认会使用此 URI 来访问数据。 - **示例**: ```xml <property> <name>fs.defaultFS</name> <value>hdfs://namenode_host:port</value> </property> ``` - **解释**: 如果设置了 `fs.defaultFS=hdfs://linux121:9000`,那么执行命令 `hadoop fs -ls /` 实际上相当于访问 `hdfs://linux121:9000/`[^1]。 ##### b. `io.file.buffer.size` - **描述**: 设置 I/O 缓冲区大小(单位为字节)。 - **用途**: 提高读写性能,尤其是在处理大文件时。 - **示例**: ```xml <property> <name>io.file.buffer.size</name> <value>131072</value> </property> ``` ##### c. `hadoop.tmp.dir` - **描述**: 指定临时目录的位置。 - **用途**: 存储框架所需的中间数据和其他临时文件。 - **示例**: ```xml <property> <name>hadoop.tmp.dir</name> <value>/app/hadoop/tmp</value> </property> ``` - **注意**: 此目录应有足够的空间,并定期清理以防止占用过多磁盘资源[^4]。 ##### d. `hadoop.security.authentication` - **描述**: 定义 Hadoop 使用的安全认证机制。 - **用途**: 默认值为 `simple` 表示无认证;如果启用 Kerberos,则需设置为 `kerberos`。 - **示例**: ```xml <property> <name>hadoop.security.authentication</name> <value>kerberos</value> </property> ``` - **关联**: 若启用了 Kerberos 认证,还需配合 `krb5.conf` 文件中的配置[^2]。 ##### e. `ipc.client.connect.timeout` - **描述**: IPC 客户端连接超时时间(毫秒)。 - **用途**: 控制客户端尝试连接 NameNode 或 DataNode 的最大等待时间。 - **示例**: ```xml <property> <name>ipc.client.connect.timeout</name> <value>5000</value> </property> ``` ##### f. `ipc.server.listen.queue.size` - **描述**: RPC 服务监听队列的最大长度。 - **用途**: 调整服务器能够同时接受的请求数量上限。 - **示例**: ```xml <property> <name>ipc.server.listen.queue.size</name> <value>128</value> </property> ``` --- #### 3. **高级配置项** ##### a. `hadoop.proxyuser.<username>.hosts` - **描述**: 允许代理用户的主机列表。 - **用途**: 支持多租户场景下的权限管理。 - **示例**: ```xml <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> ``` ##### b. `hadoop.proxyuser.<username>.groups` - **描述**: 允许代理用户的组列表。 - **用途**: 结合上述配置实现更细粒度的权限控制。 - **示例**: ```xml <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> ``` ##### c. `ha.zookeeper.quorum` - **描述**: ZooKeeper 集群地址列表。 - **用途**: 在 HA(High Availability)模式下支持 NameNode 故障切换。 - **示例**: ```xml <property> <name>ha.zookeeper.quorum</name> <value>zoo1:2181,zoo2:2181,zoo3:2181</value> </property> ``` --- #### 4. **总结** `core-site.xml` 是 Hadoop 配置体系的重要组成部分,其主要职责在于定义基础架构和服务的行为。通过合理调整这些参数,可以显著提升集群的稳定性和性能[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值