AWS EMR中HDFS服务配置参数

一、背景

HDFS的角色

NameNode:只在Master节点中,负责文件,名称等元数据(属性信息)的存储

DataNode:只在Core节点中,负责文件数据的存储

二、内存配置

  1. HADOOP-HDFS的内存配置

    1. 确认内存参数值

内存参数是一下文件中配置:

/etc/hadoop/conf/hadoop-env.sh 

也可以直接使用一下指令查看,单位为mb,默认1000mb

cat /etc/hadoop/conf/hadoop-env.sh | grep -1n HADOOP_HEAPSIZE

这里的内存(HADOOP_HEAPSIZE)实际上统一分配了下面各个守护进程的内存

  • NameNode
  • SecondaryNameNode
  • DataNode
  • JobTracker
  • TaskTracker

  1. NameNode内存配置

  • 在AWS中,内存配置是【HADOOP_NAMENODE_HEAPSIZE】,单位为mb
cat /etc/hadoop/conf/hadoop-env.sh | grep HADOOP_NAMENODE_HEAPSIZE

下面是EMR中各机型所默认配置的各种内存参数

【Hadoop 守护进程配置设置】

Hadoop 守护进程配置设置 - Amazon EMR

  • 另一种配置方法

在其他文章中,看到的配置方式是【HADOOP_NAMENODE_OPTS】

HADOOP_NAMENODE_OPTS=-Xmx4g

这里配置的意思是在程序启动时的进程参数

除了内存还能配置其他启动参数,例如开启审计日志:

HADOOP_NAMENODE_OPTS="$HADOOP_NAMENODE_OPTS -Dhdfs.audit.logger=INFO,RFAAUDIT"

三、审计日志配置

  1. 配置文件路径

审计日志的开启与相关参数文件在以下路径

/etc/hadoop/conf/log4j.properties

  • 相关参数

可以使用以下指令查看相关配置

cat /etc/hadoop/conf/log4j.properties | grep hdfs.audit

其中:

hdfs.audit.logger:记录日志的方式,默认NullAppender即不记录日志

hdfs.audit.log.maxfilesize:每个日志档最大大小,超过该大小后就滚动产生下一份日志

hdfs.audit.log.maxbackupindex:最大日志份数,日志数量超过该值从最老的日志档开始重写

日志路径为

/mnt/var/log/hadoop-hdfs/hdfs-audit.log

  • 配置参数

要开启审计日志,需要将【hdfs.audit.logger】的参数改成下面这样

hdfs.audit.logger=INFO,RFAAUDIT

四、以Json格式修改参数

在EMR中,如果要 整个实例组保持一致的参数,最好的方法是配置json参数,让实例组重新配置每一个实例的参数

下面是官方给出的json格式参数

[
    {
        "classification": "hadoop-env",
        "properties": {},
        "configurations": [
            {
                "classification": "export",
                "properties": {
                    "HADOOP_NAMENODE_OPTS": "\"$HADOOP_NAMENODE_OPTS -Dhdfs.audit.logger=INFO,RFAAUDIT\"",
                    "HADOOP_NAMENODE_HEAPSIZE": "xx"
                },
                "configurations": []
            }
        ]
    },
    {
        "classification": "hadoop-log4j",
        "properties": {
            "hdfs.audit.log.maxbackupindex": "xx",
            "hdfs.audit.log.maxfilesize": "xxMB"
        },
        "configurations": []
    }
]

其中

  • "HADOOP_NAMENODE_OPTS": "\"$HADOOP_NAMENODE_OPTS -Dhdfs.audit.logger=INFO,RFAAUDIT\"" 这个参数将开启审计日志
  • "HADOOP_NAMENODE_HEAPSIZE":"xx" xx 的部份输入您想配置的内存参数值。
  • "hdfs.audit.log.maxbackupindex": "xx" xx 的部份输入您想配置的审计日志数目。
  • "hdfs.audit.log.maxfilesize": "xxMB"xx 的部份输入您想配置的审计日志 rorate 大小

如果是通过该方法修改EMR集群配置,那么当配置完json后,EMR会自动重启整个实例组,从而会造成一段时间服务不可用

如果是这样,对业务的影响非常大,除非是刚创建集群的时候,否则不可以这样配置

五、重启服务

如果是手动配置的话,也需要手动重启服务,然后观察是否有生效

参考官方文档《如何在 Amazon EMR 中重启服务?》

重启 Amazon EMR 中的服务

根据不同的EMR集群版本使用不同的指令

systemctl stop hadoop-hdfs-namenode.service
systemctl start hadoop-hdfs-namenode.service

※注意!!!

如果是active的namenode,那么需要先切换主备

如果手动强制切换可能会导致脑裂状态(两台都成了active状态)

可以通过重启主节点上的zkfc服务来切换主备

systemctl restart hadoop-hdfs-zkfc.service

猜你喜欢

转载自blog.csdn.net/dwe147/article/details/126300478
AWS