小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-11-04 / 15 阅读
0
0

Hadoop 配置文件详解及目录简介

1、Hadoop各目录说明

文件夹名称 作用
bin 存放对hadoop相关服务(HDFS,YARN)进行操作的脚本
sbin 存放启动或停止hadoop相关服务的脚本
etc hadoop的配置文件目录,存放hadoop的配置文件
lib 存放hadoop的本地库(对数据进行压缩解压缩功能)
share 存放hadoop的依赖jar包和文档,文档可以被删除掉

2、各个配置文件的作用

配置文件的名称 作用
core-site.xml 核心配置文件,主要定义了我们文件访问的格式 hdfs://
hadoop-env.sh 主要配置我们的java路径
hdfs-site.xml 主要定义配置我们的hdfs的相关配置
mapred-site.xml 主要定义我们的mapreduce相关的一些配置
slaves 控制我们的从节点在哪里 datanode nodemanager在哪些机器上
yarn-site.xml 配置我们的resourcemanager资源调度

你提供的 core-site.xml 配置文件非常详细,涵盖了Hadoop集群中一些重要的配置项。以下是对每个配置项的解释和说明:

core-site.xml 配置文件详解

<configuration>
    <!-- 指定NameNode的HDFS协议的文件系统通信地址,默认是file:///本地文件系统  需要我们改成 hdfs://分布式文件存储系统 -->
    <!-- 可以指定一个主机+端口,也可以指定为一个NameNode服务(这个服务内部可以有多台NameNode实现HA的NameNode服务) -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop01:9000</value>
    </property>

    <!-- 临时数据存放的位置 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop-2.8.3/tmp</value>
    </property>

    <!-- 缓冲区大小,实际工作中根据服务器性能动态调整 -->
    <property>
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
  
    <!-- 开启HDFS的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟  10080 相当于7天  60*24*7-->
    <property>
        <name>fs.trash.interval</name>
        <value>10080</value>
    </property>

    <!-- 故障转移需要的ZooKeeper集群设置 -->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>jokerq1:2181,jokerq2:2181,jokerq3:2181</value>
    </property>
</configuration>

详细解释

  1. fs.defaultFS

    • 描述:指定Hadoop集群中默认的文件系统名称。这是客户端连接到HDFS的入口点。
    • 示例
      <property>
          <name>fs.defaultFS</name>
          <value>hdfs://hadoop01:9000</value>
      </property>
      
    • 说明:这里配置了NameNode的地址和端口。如果使用HA(高可用性)配置,可以指定一个逻辑名称,而不是具体的主机名和端口。
  2. hadoop.tmp.dir

    • 描述:指定Hadoop运行时临时文件存储的位置。
    • 示例
      <property>
          <name>hadoop.tmp.dir</name>
          <value>/usr/local/hadoop-2.8.3/tmp</value>
      </property>
      
    • 说明:这个目录用于存储Hadoop运行时的各种临时文件,如日志、缓存等。
  3. io.file.buffer.size

    • 描述:设置读写文件时使用的缓冲区大小。
    • 示例
      <property>
          <name>io.file.buffer.size</name>
          <value>4096</value>
      </property>
      
    • 说明:缓冲区大小可以根据服务器的性能进行调整,以优化I/O操作的性能。
  4. fs.trash.interval

    • 描述:开启HDFS的垃圾桶机制,删除掉的数据可以从垃圾桶中恢复。单位为分钟。
    • 示例
      <property>
          <name>fs.trash.interval</name>
          <value>10080</value>
      </property>
      
    • 说明:设置为10080分钟,相当于7天。这意味着删除的文件会在垃圾桶中保留7天,之后才会被永久删除。
  5. ha.zookeeper.quorum

    • 描述:配置ZooKeeper集群的地址,用于实现NameNode的高可用性(HA)。
    • 示例
      <property>
          <name>ha.zookeeper.quorum</name>
          <value>jokerq1:2181,jokerq2:2181,jokerq3:2181</value>
      </property>
      
    • 说明:这里列出了ZooKeeper集群中各个节点的地址和端口。ZooKeeper用于协调NameNode之间的切换,确保在主NameNode故障时,备用NameNode可以接管。

其他注意事项

  • 高可用性(HA)配置:如果你的Hadoop集群启用了HA,需要在 hdfs-site.xml 中配置更多的属性,如 dfs.nameservicesdfs.ha.namenodes.<nameserviceId>dfs.namenode.rpc-address.<nameserviceId>.<namenodeId> 等。
  • 安全性:如果启用了Kerberos认证,需要配置相关的安全属性。
  • 性能调优:根据集群的实际需求和硬件性能,可以进一步调整缓冲区大小、文件块大小等参数。

你提供的 hdfs-site.xml 配置文件非常全面,涵盖了HDFS中许多重要的配置项。以下是对每个配置项的详细解释和说明:

hdfs-site.xml 配置文件详解

<configuration>
    <!-- NameNode 数据的存放地点。也就是namenode元数据存放的地方,记录了hdfs系统中文件的元数据 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop-2.8.3/data/name</value>
    </property>

    <!-- NameNode 的访问地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>node01:50070</value>
    </property>
  
    <!-- DataNode 数据的存放地点。也就是block块存放的目录了 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop-2.8.3/data/data</value>
    </property>

    <!-- HDFS 的副本数设置。也就是上传一个文件,其分割为block块后,每个block的冗余副本个数 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
  
    <!-- HDFS 的权限控制 -->
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
  
    <!-- 文件存储的block块大小 -->
    <property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
    </property>
  
    <!-- secondary NameNode 的http通讯地址 -->
    <property>
        <name>dfs.secondary.http.address</name>
        <value>hadoop01:50090</value>
    </property>
  
    <!-- secondary NameNode 的访问地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node01:50090</value>
    </property>

    <!-- 元数据操作日志的存放位置 edits的存放位置 -->
    <property>
        <name>dfs.namenode.edits.dir</name>
        <value>file:///export/servers/hadoop-2.7.5/hadoopDatas/nn/edits</value>
    </property>

    <!-- 元数据检查点保存的位置 -->
    <property>
        <name>dfs.namenode.checkpoint.dir</name>
        <value>file:///export/servers/hadoop-2.7.5/hadoopDatas/snn/name</value>
    </property>

    <!-- 开启hdfs的web访问接口。默认端口是50070 , 一般不配 , 使用默认值 -->
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

详细解释

  1. dfs.namenode.name.dir

    • 描述:指定NameNode元数据的存放位置。这些元数据包括文件系统的命名空间信息。
    • 示例
      <property>
          <name>dfs.namenode.name.dir</name>
          <value>/usr/local/hadoop-2.8.3/data/name</value>
      </property>
      
    • 说明:这个目录用于存储NameNode的命名空间信息和元数据文件(如fsimage)。
  2. dfs.namenode.http-address

    • 描述:指定NameNode的HTTP服务地址,用于Web界面的访问。
    • 示例
      <property>
          <name>dfs.namenode.http-address</name>
          <value>node01:50070</value>
      </property>
      
    • 说明:这个地址用于访问NameNode的Web界面,默认端口是50070。
  3. dfs.datanode.data.dir

    • 描述:指定DataNode数据块的存放位置。
    • 示例
      <property>
          <name>dfs.datanode.data.dir</name>
          <value>/usr/local/hadoop-2.8.3/data/data</value>
      </property>
      
    • 说明:这个目录用于存储DataNode上的数据块。
  4. dfs.replication

    • 描述:设置HDFS中文件块的默认副本数。
    • 示例
      <property>
          <name>dfs.replication</name>
          <value>3</value>
      </property>
      
    • 说明:默认情况下,每个文件块会被复制3次,以提高数据的可靠性和可用性。
  5. dfs.permissions

    • 描述:控制HDFS的权限机制。设置为 false表示关闭权限检查。
    • 示例
      <property>
          <name>dfs.permissions</name>
          <value>false</value>
      </property>
      
    • 说明:在开发和测试环境中,通常会关闭权限检查以简化配置。在生产环境中,建议开启权限检查以增强安全性。
  6. dfs.blocksize

    • 描述:设置HDFS中文件块的大小。
    • 示例
      <property>
          <name>dfs.blocksize</name>
          <value>134217728</value>
      </property>
      
    • 说明:默认块大小为128MB(134217728字节)。根据实际需求,可以调整块大小以优化性能。
  7. dfs.secondary.http.addressdfs.namenode.secondary.http-address

    • 描述:指定Secondary NameNode的HTTP服务地址。这两个属性在Hadoop 2.x及更高版本中,推荐使用 dfs.namenode.secondary.http-address
    • 示例
      <property>
          <name>dfs.secondary.http.address</name>
          <value>hadoop01:50090</value>
      </property>
      <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>node01:50090</value>
      </property>
      
    • 说明:这两个属性用于指定Secondary NameNode的HTTP服务地址。建议使用 dfs.namenode.secondary.http-address
  8. dfs.namenode.edits.dir

    • 描述:指定NameNode的编辑日志(edits)的存放位置。
    • 示例
      <property>
          <name>dfs.namenode.edits.dir</name>
          <value>file:///export/servers/hadoop-2.7.5/hadoopDatas/nn/edits</value>
      </property>
      
    • 说明:这个目录用于存储NameNode的编辑日志文件,记录了文件系统的更改操作。
  9. dfs.namenode.checkpoint.dir

    • 描述:指定Secondary NameNode的检查点(checkpoint)的存放位置。
    • 示例
      <property>
          <name>dfs.namenode.checkpoint.dir</name>
          <value>file:///export/servers/hadoop-2.7.5/hadoopDatas/snn/name</value>
      </property>
      
    • 说明:这个目录用于存储Secondary NameNode生成的检查点文件,用于合并fsimage和edits文件。
  10. dfs.webhdfs.enabled

    • 描述:开启HDFS的WebHDFS接口。
    • 示例
      <property>
          <name>dfs.webhdfs.enabled</name>
          <value>true</value>
      </property>
      
    • 说明:启用WebHDFS接口后,可以通过HTTP请求访问和操作HDFS文件系统。默认端口是50070。

其他注意事项

  • 高可用性(HA)配置:如果启用了HA,需要在 hdfs-site.xml 中配置更多的属性,如 dfs.nameservicesdfs.ha.namenodes.<nameserviceId>dfs.namenode.rpc-address.<nameserviceId>.<namenodeId> 等。
  • 安全性:如果启用了Kerberos认证,需要配置相关的安全属性。
  • 性能调优:根据集群的实际需求和硬件性能,可以进一步调整缓冲区大小、文件块大小等参数。

你提供的 mapred-site.xml 配置文件涵盖了MapReduce框架的一些重要配置项。以下是对每个配置项的详细解释和说明:

mapred-site.xml 配置文件详解

<configuration>
    <!-- 指定MR框架为YARN方式,Hadoop二代MapReduce也基于资源管理系统YARN来运行 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
  
    <!-- 开启MapReduce的小任务模式,用于调优 -->
    <property>
        <name>mapreduce.job.ubertask.enable</name>
        <value>true</value>
    </property>
  
    <!-- 配置MapReduce的JobHistory内部通讯地址。可以查看所有运行完成的任务的一些情况 -->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop01:10020</value>
    </property>

    <!-- 配置MapReduce的JobHistory的访问地址 -->
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop02:19888</value>
    </property>
</configuration>

详细解释

  1. mapreduce.framework.name

    • 描述:指定MapReduce框架的运行模式。在Hadoop 2.x及更高版本中,通常使用YARN作为资源管理器。
    • 示例
      <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
      </property>
      
    • 说明:将这个属性设置为 yarn,表示MapReduce任务将通过YARN进行资源管理和调度。
  2. mapreduce.job.ubertask.enable

    • 描述:开启MapReduce的小任务模式(Ubertask),用于优化小任务的执行。
    • 示例
      <property>
          <name>mapreduce.job.ubertask.enable</name>
          <value>true</value>
      </property>
      
    • 说明:Ubertask模式可以将多个小任务合并成一个较大的任务,以减少任务调度的开销。适用于处理大量小任务的场景。
  3. mapreduce.jobhistory.address

    • 描述:配置JobHistory Server的内部通讯地址。JobHistory Server用于记录和管理已完成的MapReduce任务的历史信息。
    • 示例
      <property>
          <name>mapreduce.jobhistory.address</name>
          <value>hadoop01:10020</value>
      </property>
      
    • 说明:这个地址用于JobHistory Server的内部通讯,通常不需要修改。
  4. mapreduce.jobhistory.webapp.address

    • 描述:配置JobHistory Server的Web界面访问地址。通过这个地址,可以查看已完成的MapReduce任务的详细信息。
    • 示例
      <property>
          <name>mapreduce.jobhistory.webapp.address</name>
          <value>hadoop02:19888</value>
      </property>
      
    • 说明:这个地址用于访问JobHistory Server的Web界面,默认端口是19888。通过浏览器访问这个地址,可以查看已完成任务的详细信息。

其他注意事项

  • JobHistory Server:确保JobHistory Server已经启动。可以使用以下命令启动JobHistory Server:

    $ hadoop mr-jobhistory-daemon start historyserver
    

    停止JobHistory Server的命令如下:

    $ hadoop mr-jobhistory-daemon stop historyserver
    
  • 性能调优:根据集群的实际需求和硬件性能,可以进一步调整MapReduce的配置参数,如任务的并行度、内存分配等。

  • 安全性:如果启用了Kerberos认证,需要配置相关的安全属性,确保JobHistory Server和其他MapReduce组件能够正确地进行身份验证和授权。

你提供的 yarn-site.xml 配置文件涵盖了YARN(Yet Another Resource Negotiator)的许多重要配置项。以下是对每个配置项的详细解释和说明:

yarn-site.xml 配置文件详解

<configuration>
    <!-- 指定我们的resourceManager运行在哪台机器上面 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop01</value>
    </property>

    <!-- NodeManager的通信方式 -->
    <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>604800</value>
    </property>

    <!-- YARN总管理器的IPC通讯地址 -->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop01:8032</value>
    </property>

    <!-- YARN总管理器调度程序的IPC通讯地址 -->
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop01:8030</value>
    </property>

    <!-- YARN总管理器的资源跟踪器的IPC通讯地址 -->
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoop01:8031</value>
    </property>

    <!-- YARN总管理器的管理员IPC通讯地址 -->
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop01:8033</value>
    </property>

    <!-- YARN总管理器的Web HTTP通讯地址 -->
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>singlehost:8088</value>
    </property>
</configuration>

详细解释

  1. yarn.resourcemanager.hostname

    • 描述:指定ResourceManager运行的主机名。
    • 示例
      <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>hadoop01</value>
      </property>
      
    • 说明:这个属性指定了ResourceManager的主机名,确保ResourceManager能够在正确的机器上启动。
  2. yarn.nodemanager.aux-services

    • 描述:配置NodeManager提供的辅助服务。对于MapReduce,通常设置为 mapreduce_shuffle
    • 示例
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
      </property>
      
    • 说明mapreduce_shuffle服务负责在Map和Reduce任务之间传输中间结果数据。
  3. yarn.log-aggregation-enable

    • 描述:启用日志聚合功能,方便查看任务执行完成后的日志记录。
    • 示例
      <property>
          <name>yarn.log-aggregation-enable</name>
          <value>true</value>
      </property>
      
    • 说明:启用日志聚合后,任务完成后日志会被收集到一个集中位置,便于管理和查看。
  4. yarn.log-aggregation.retain-seconds

    • 描述:设置聚合日志的保存时长,单位为秒。
    • 示例
      <property>
          <name>yarn.log-aggregation.retain-seconds</name>
          <value>604800</value>
      </property>
      
    • 说明:604800秒相当于7天,表示日志将在聚合位置保存7天。
  5. yarn.resourcemanager.address

    • 描述:指定ResourceManager的IPC通讯地址。
    • 示例
      <property>
          <name>yarn.resourcemanager.address</name>
          <value>hadoop01:8032</value>
      </property>
      
    • 说明:这个地址用于ResourceManager的客户端通信,默认端口是8032。
  6. yarn.resourcemanager.scheduler.address

    • 描述:指定ResourceManager调度程序的IPC通讯地址。
    • 示例
      <property>
          <name>yarn.resourcemanager.scheduler.address</name>
          <value>hadoop01:8030</value>
      </property>
      
    • 说明:这个地址用于ResourceManager的调度程序通信,默认端口是8030。
  7. yarn.resourcemanager.resource-tracker.address

    • 描述:指定ResourceManager资源跟踪器的IPC通讯地址。
    • 示例
      <property>
          <name>yarn.resourcemanager.resource-tracker.address</name>
          <value>hadoop01:8031</value>
      </property>
      
    • 说明:这个地址用于ResourceManager的资源跟踪器通信,默认端口是8031。
  8. yarn.resourcemanager.admin.address

    • 描述:指定ResourceManager管理员的IPC通讯地址。
    • 示例
      <property>
          <name>yarn.resourcemanager.admin.address</name>
          <value>hadoop01:8033</value>
      </property>
      
    • 说明:这个地址用于ResourceManager的管理员通信,默认端口是8033。
  9. yarn.resourcemanager.webapp.address

    • 描述:指定ResourceManager的Web HTTP通讯地址。
    • 示例
      <property>
          <name>yarn.resourcemanager.webapp.address</name>
          <value>singlehost:8088</value>
      </property>
      
    • 说明:这个地址用于访问ResourceManager的Web界面,默认端口是8088。通过浏览器访问这个地址,可以查看集群的状态和任务信息。

其他注意事项

  • 高可用性(HA)配置:如果启用了HA,需要在 yarn-site.xml 中配置更多的属性,如 yarn.resourcemanager.ha.enabledyarn.resourcemanager.ha.rm-idsyarn.resourcemanager.hostname.rm1yarn.resourcemanager.hostname.rm2 等。
  • 安全性:如果启用了Kerberos认证,需要配置相关的安全属性,确保ResourceManager和其他YARN组件能够正确地进行身份验证和授权。
  • 性能调优:根据集群的实际需求和硬件性能,可以进一步调整YARN的配置参数,如内存分配、任务并行度等。

评论