hdfs的core-site.xml
core-site.xml是Hadoop集群的核心配置文件,包含了 Hadoop 全局级别的配置设置。这些设置不仅影响 HDFS(Hadoop Distributed File System),还影响 YARN 和 MapReduce 等其他组件。:
常见配置
- fs.default.name:指定HDFS的NameNode的URI,包括协议、主机名和端口号。这是集群中每一台机器都需要知道的NameNode地址,DataNode和独立的客户端程序都通过这个URI与NameNode交互。
- hadoop.tmp.dir:Hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置NameNode和DataNode的存放位置,默认就放在这个路径下。
- io.file.buffer.size:指定文件读写时使用的缓冲区大小。
- fs.trash.interval:清理回收站的间隔,单位为分钟,默认为0,表示hdfs里删除的文件不会进入回收站,而是直接删除,可以按需修改
代码示例
xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
</configuration>
hdfs-site.xml
hdfs-site.xml
是 HDFS 的特定配置文件,包含了与 HDFS 相关的配置设置。这些设置主要用于调整 HDFS 的行为和性能。
常见配置
- dfs.replication:决定HDFS中文件块的数据备份个数。对于一个实际的应用,通常设为3,以保证数据的可靠性。少于三个的备份可能会影响到数据的可靠性(系统故障时,可能会造成数据丢失)。
- dfs.name.dir:NameNode存储Hadoop文件信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用它。
- dfs.data.dir:DataNode在本地磁盘存放block的位置,可以是以逗号分隔的目录列表。DataNode循环向磁盘中写入数据,每个DataNode可单独指定与其它DataNode不一样的存储路径。
- dfs.namenode.http-address:指定 NameNode 的 HTTP 地址。
- dfs.permissions.enabled:启用或禁用 HDFS 的权限检查。
- dfs.namenode.handler.count:NameNode用来处理来自DataNode的RPC请求的线程数量。建议设置为DataNode数量的10%,一般在10~200个之间。
- dfs.datanode.handler.count:DataNode用来连接NameNode的RPC请求的线程数量,取决于系统的繁忙程度。设置太小会导致性能下降甚至报错。
- dfs.datanode.max.xcievers:DataNode可以同时处理的数据传输连接数。默认值通常是256,但根据集群的规模和需求,可能需要调整这个值。
代码示例
xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
</configuration>
yarn-site.xml
yarn-site.xml是YARN的配置文件,它包含了YARN的各种配置信息,如ResourceManager的地址、NodeManager的资源配置、日志级别、任务调度器等。关键配置包括:
常见配置
- yarn.resourcemanager.hostname:指定 ResourceManager 的主机名。
- yarn.nodemanager.aux-services:指定YARN节点管理器所使用的辅助服务。
- yarn.log-aggregation-enable:设置为true时,YARN将启用日志聚合功能。这意味着,运行完成的Container或任务的日志将被上传到HDFS(Hadoop分布式文件系统)上,而不是保存在各个NodeManager的本地磁盘上。这一功能有助于减轻NodeManager的负载,并提供一个中央化的存储和分析机制,使得用户可以更方便地查看和管理日志。
- yarn.log-aggregation.retain-seconds: 用于指定这些聚合后的日志在HDFS上保存的时间,单位为秒。超过这个时间后,系统将自动删除这些日志,以节省存储空间。
- yarn.resourcemanager.address:ResourceManager暴露给Client的地址,Client可以利用这个地址向ResourceManager提交应用程序,也可以用来杀死某个应用程序等。
- yarn.resourcemanager.scheduler.address:ResourceManager暴露给ApplicationMaster的访问地址,ApplicationMaster可以通过该地址从ResourceManager处申请和释放资源。
- yarn.resourcemanager.resource-tracker.address:ResourceManager暴露给NodeManager的地址,NodeManager可以通过该地址向ResourceManager发送心跳,也可以拉取到待执行的任务。
- yarn.nodemanager.resource.memory-mb:NodeManager的可用物理内存总量。这个参数一旦被设置,在YARN的整个运行过程中不允许被动态修改。
- yarn.nodemanager.vmem-pmem-ratio:用于设置一个比例,即每使用1MB的物理内存最多可以用多大的虚拟内存。
- yarn.nodemanager.resource.cpu-vcores:NodeManager的可用虚拟CPU总数。
代码示例
xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>640800</value>
</property>
</configuration>
krb5.conf
krb5.conf文件包含Kerberos的配置信息,它是Kerberos认证和授权机制的核心配置文件。关键配置包括:
常见配置
- [libdefaults]:Kerberos V5库使用的设置,如加密类型、校验和类型、凭据缓存类型等。
- [realms]:特定域的联系信息和设置,如KDC(Key Distribution Centers)的位置、域的管理员服务器位置等。
- [domain_realm]:将服务器主机名映射到Kerberos域,用于确定一个主机名属于哪个Kerberos域。
- [capaths]:非层次跨域认证路径的配置,用于指定不同Kerberos域之间的认证路径。
总结
core-site.xml
:包含 Hadoop 的全局配置设置。hdfs-site.xml
:包含 HDFS 特定的配置设置。yarn-site.xml
:包含 YARN 资源管理和调度相关的配置设置。krb5.conf
:包含 Kerberos 客户端的配置设置,用于安全认证。
这些配置文件共同构成了Hadoop集群和Kerberos认证机制的完整配置体系,它们之间的协同工作确保了Hadoop集群的高效、稳定和安全运行。