配置文件
hadoop的配置是由两种重要类型的配置文件进行驱动的:
默认是只读的配置:
core-default.xml, hdfs-default.xml, yarn-default.xml and mapred-default.xml。
特殊节点配置:
conf/core-site.xml, conf/hdfs-site.xml, conf/yarn-site.xml and conf/mapred-site.xml。
此外,你可以通过分布的bin/文件夹下的hadoop脚本conf/hadoop-env.sh和yarn-env.sh。通过设置设定值进行控制。
节点配置:
要配置Hadoop集群,你需要配置在Hadoop运行的环境中配置环境变量以及为Hadoop守护进程的配置参数。
Hadoop启动进程是NameNode/DataNode and ResourceManager/NodeManager。
配置Hadoop运行环境
管理员可以使用的conf/hadoop-env.sh 和 conf/yarn-env.sh脚本做的Hadoop运行的进程环境中的特定节点的配置。至少你应该正确配置集群远程节点上的JAVA_HOME 。
在大多数情况下,你也应该设置HADOOP_PID_DIR 和 HADOOP_SECURE_DN_PID_DIR。设置只有运行在Hadoop进程中的用户才可以有写的权限。否则有可能受到攻击。
管理员可以使用下表所示的配置选项配置各个守护进程:
进程值
|
环境变量
|
NameNode
|
HADOOP_NAMENODE_OPTS
|
DataNode
|
HADOOP_DATANODE_OPTS
|
Secondary NameNode
|
HADOOP_SECONDARYNAMENODE_OPTS
|
ResourceManager
|
YARN_RESOURCEMANAGER_OPTS
|
NodeManager
|
YARN_NODEMANAGER_OPTS
|
WebAppProxy
|
YARN_PROXYSERVER_OPTS
|
Map Reduce Job History Server
|
HADOOP_JOB_HISTORYSERVER_OPTS
|
例如,要配置的Namenode使用parallelGC,下面的语句应该在的hadoop-env.sh加入:
其他有用的配置参数,你可以自定义包括:
HADOOP_LOG_DIR / YARN_LOG_DIR -hadoop的守护进程的日志文件的存储目录。他们如果目录不存在,会自动创建。
HADOOP_HEAPSIZE / YARN_HEAPSIZE-堆大小的上限设置。以MB为单位例如:如果varibale设置为1000堆将被设置为1000MB。这是用来配置堆大小的守护进程。默认情况下,该值是1000,如果你想单独配置值为每个守护进程设置就可以使用。
-
守护进程环境变量ResourceManagerYARN_RESOURCEMANAGER_HEAPSIZENodeManagerYARN_NODEMANAGER_HEAPSIZEWebAppProxyYARN_PROXYSERVER_HEAPSIZEMap Reduce Job History ServerHADOOP_JOB_HISTORYSERVER_HEAPSIZE
在非安全模式下配置hadoop守护进程。
本节讨论在给定的配置文件中指定重要的参数的问题:
- conf/core-site.xml
参数值注释fs.defaultFSNameNode URIhdfs://host:port/io.file.buffer.size131072SequenceFiles文件中.读写缓存size设定
- conf/hdfs-site.xml:配置 NameNode:
-
参数值Notesdfs.namenode.name.dir在本地文件系统所在的NameNode的存储空间和持续化处理日志如果这是一个以逗号分隔的目录列表,然后将名称表被复制的所有目录,以备不时之需。dfs.namenode.hosts /dfs.namenode.hosts.excludeDatanodes
permitted/excluded列表如有必要,可以使用这些文件来控制允许数据节点的列表dfs.blocksize268435456大型的文件系统HDFS块大小为256MBdfs.namenode.handler.count100设置更多的namenode线程,处理从datanode发出的大量RPC请求 - Configurations for DataNode:
ParameterValueNotesdfs.datanode.data.dir逗号分隔的一个DataNode上,它应该保存它的块的本地文件系统的路径列表如果这是一个以逗号分隔的目录列表,那么数据将被存储在所有命名的目录,通常在不同的设备。
-
- conf/yarn-site.xml
- 配置ResourceManager 和 NodeManager:
参数值备注yarn.acl.enabletrue /false启用ACL的?默认为false。yarn.admin.aclAdmin ACL访问控制列表,在群集上设置管理员。 ACL是为逗号分隔usersspacecomma分隔组。默认为*特殊值这意味着任何人。只是空间的特殊值意味着没有人进入。yarn.log-aggregation-enablefalse配置来启用或禁用日志聚合
- 配置 ResourceManager:
参数值备注yarn.resourcemanager.address客户端对ResourceManager主机通过 host:port 提交作业host:portyarn.resourcemanager.scheduler.addressApplicationMasters 通过ResourceManager 主机访问host:port 跟踪调度程序获资源host:portyarn.resourcemanager.resource-tracker.addressNodeManagers通过ResourceManager主机访问 host:porthost:portyarn.resourcemanager.admin.address管理命令通过ResourceManager 主机访问host:porthost:portyarn.resourcemanager.webapp.addressResourceManager web页面host:port.host:portyarn.resourcemanager.scheduler.classResourceManager 调度类(Scheduler class)CapacityScheduler(推荐),FairScheduler(也推荐),orFifoScheduleryarn.scheduler.minimum-allocation-mb每个容器内存最低限额分配到的资源管理器要求I以MB为单位yarn.scheduler.maximum-allocation-mb资源管理器分配给每个容器的内存最大限制以MB为单位yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-pathNodeManagers 的permitted/excluded列表如有必要,可使用这些文件来控制允许NodeManagers列表。
- 配置 NodeManager:
参数值备注yarn.nodemanager.resource.memory-mbgivenNodeManager即资源的可用物理内存,以MB为单位定义在节点管理器总的可用资源,以提供给运行容器yarn.nodemanager.vmem-pmem-ratio最大比率为一些任务的虚拟内存使用量可能会超过物理内存率每个任务的虚拟内存的使用可以通过这个比例超过了物理内存的限制。虚拟内存的使用上的节点管理器任务的总量可以通过这个比率超过其物理内存的使用。yarn.nodemanager.local-dirs数据写入本地文件系统路径的列表用逗号分隔多条存储路径可以提高磁盘的读写速度yarn.nodemanager.log-dirs本地文件系统日志路径的列表逗号分隔。多条存储路径可以提高磁盘的读写速度yarn.nodemanager.log.retain-seconds10800如果日志聚合被禁用。默认的时间(以秒为单位)保留在节点管理器只适用日志文件,yarn.nodemanager.remote-app-log-dir/logsHDFS目录下的应用程序日志移动应用上完成。需要设置相应的权限。仅适用日志聚合功能。yarn.nodemanager.remote-app-log-dir-suffixlogs后缀追加到远程日志目录。日志将被汇总到 ${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam} 仅适用日志聚合功能。yarn.nodemanager.aux-servicesmapreduce_shuffleShuffle service 需要加以设置的Map Reduce的应用程序服务。
- 配置历史记录服务器(需要被移到别处):
参数值备注yarn.log-aggregation.retain-seconds-1如何长期保持聚集日志删除之前。 -1禁用。请注意,设置这个太小了,你将名称节点的垃圾邮件yarn.log-aggregation.retain-check-interval-seconds-1检查汇总的日志保留的时间。如果设置为0或负值,则该值被计算为十分之一的聚合日志保留时间。请注意,设置这个太小了,你将称为名称节点的垃圾邮件。
- 配置ResourceManager 和 NodeManager:
- conf/mapred-site.xml
- 配置 MapReduce 应用程序:
参数值备注mapreduce.framework.nameyarn执行框架设置为 Hadoop YARN.mapreduce.map.memory.mb1536对maps更大的资源限制的.mapreduce.map.java.opts-Xmx1024Mmaps 中对jvm child设置更大的堆大小mapreduce.reduce.memory.mb3072设置 reduces对于较大的资源限制mapreduce.reduce.java.opts-Xmx2560Mreduces对 child jvms Larger heap-size 设置mapreduce.task.io.sort.mb512更高的内存限制,而对数据进行排序的效率。mapreduce.task.io.sort.factor100在文件排序中更多的流合并为一次mapreduce.reduce.shuffle.parallelcopies50通过reduces从非常多的map中读取较多的平行副本
- 配置MapReduce的JobHistory服务器:
ParameterValueNotesmapreduce.jobhistory.addressMapReduce JobHistory Server host:port默认端口号 10020.mapreduce.jobhistory.webapp.addressMapReduce JobHistory Server Web UIhost:port默认端口号 19888.mapreduce.jobhistory.intermediate-done-dir/mr-history/tmp在历史文件被写入由MapReduce作业mapreduce.jobhistory.done-dir/mr-history/done目录中的历史文件是由MR JobHistory Server管理。
- 配置 MapReduce 应用程序: