Hadoop之集群设置

一,目的

如何配置Hadoop集群,如果只是简单的玩玩hadoop(看 Single Node Setup)。该篇不包含Hadoop的一些高级特别,如安全和高可用等。

 

二,安装

参考: Hadoop2.2.0分布式安装(详细)

 

三,非安全模式配置Hadoop

hadoop的配置是由下列两种类型的配置文件驱动的:

     1,只读默认配置core-default.xml,hdfs-default.xml,yarn-default.xml和mapred-default.xml

     2,用户配置:etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml.

此外,还可以通过设置etc/hadoop/hadoop-env.sh 和 etc/hadoop/yarn-env.sh的文件,来设置启动参数,启动的时候将在这两个文件读取启动配置。

HDFS的守护进程有NameNode, SecondaryNameNode, and DataNode,YARN的守护进程有ResourceManager, NodeManager, and WebAppProxy,如果使用了MapReduce,那么可以启动MapReduce Job History Server。如果是在大型集群中,这些守护进程是运行在不同的主机上的。

 

四,配置Hadoop守护进程的环境变量

管理员可以使用etc/hadoop/hadoop-env.sh 和 任选 etc/hadoop/mapred-env.sh 和 etc/hadoop/yarn-env.sh 脚本去指定hadoop守护进程的环境设置。

至少可以指定JAVA_HOME的安装路径。

管理可以单独为守护进程配置如下的配置:

守护进程环境参数
NameNodeHADOOP_NAMENODE_OPTS
DataNodeHADOOP_DATANODE_OPTS
Secondary NameNodeHADOOP_SECONDARYNAMENODE_OPTS
ResourceManagerYARN_RESOURCEMANAGER_OPTS
NodeManagerYARN_NODEMANAGER_OPTS
WebAppProxyYARN_PROXYSERVER_OPTS
Map Reduce Job History ServerHADOOP_JOB_HISTORYSERVER_OPTS

 

例如,让NameNode使用parallelGC,可以在hadoop-env.sh增加下列一行:

 

export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC"

 

etc/hadoop/hadoop-env.sh文件中,其他的配置参数,可以自定义的有:

 

HADOOP_PID_DIR - 守护进程ID文件的存放路径
HADOOP_LOG_DIR - 守护进程LOG文件的存放路径,如果文件不存在,则自动创建。
HADOOP_HEAPSIZE / YARN_HEAPSIZE - 堆可以使用最大值,单位是MB,这是 用来配置堆守护进程的大小的,默认是1000,如果你想要配置的值不一样,可以在每台机器上都配置。

 

大多数情况下,你应该指定HADOOP_PID_DIR 和 HADOOP_LOG_DIR 目录,默认是在/tmp目录,/tmp目录通常来说是任何人都可以访问的,最好只能由启动Hadoop守护进程的用户写,否则会存在被攻击的可能。

 

守护进程环境变量
ResourceManagerYARN_RESOURCEMANAGER_HEAPSIZE
NodeManagerYARN_NODEMANAGER_HEAPSIZE
WebAppProxyYARN_PROXYSERVER_HEAPSIZE
Map Reduce Job History ServerHADOOP_JOB_HISTORYSERVER_HEAPSIZE

 

五,配置Hadoop守护进程

这节主要讲一下各个配置文件中主要的一些参数:

 

etc/hadoop/core-site.xml :

参数描述
fs.defaultFSNameNode URIhdfs://host:port/
io.file.buffer.size131072在SequenceFiles读写文件的缓冲区大小。

etc/hadoop/hdfs-site.xml :

配置NameNode:

参数描述
dfs.namenode.name.dirfile://${hadoop.tmp.dir}/dfs/name如果这是一个逗号分隔的目录列表,那么会把namespace和事务日志的信息复制到所有的目录中去,以进行冗余。
dfs.hosts / dfs.hosts.exclude                   如果有必要,通过设置哪些是可用的DataNode,哪些是排除在外的DataNode。
dfs.blocksize268435456HDFS文件系统中,块的大小
dfs.namenode.handler.count100创建多少NameNode服务线程去处理DataNodes的RPC请求

 

配置DataNode:

 

参数描述
dfs.datanode.data.dir      file://${hadoop.tmp.dir}/dfs/data如果是一个用逗号分隔的目录,DataNode中的块就存放在这些目录中。通常是不同的硬件。比如多块硬盘。

 

etc/hadoop/yarn-site.xml:

配置 ResourceManager and NodeManager:

参数描述
yarn.acl.enabletrue / false是否启用ACLs? 默认为FALSE.
yarn.admin.aclAdmin ACL 
yarn.log-aggregation-enablefalse启动或停止日志聚合

 

 

配置ResourceManager:

 

 

ParameterValueNotes
yarn.resourcemanager.address 客户端提交JOB到ResourceManager的Host:Port,如果没有设置,默认使用yarn.resourcemanager.hostname的hostname
yarn.resourcemanager.scheduler.address ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。
yarn.resourcemanager.resource-tracker.address                                               ResourceManager对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。
yarn.resourcemanager.admin.address ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。
yarn.resourcemanager.webapp.addressResourceManager web-ui host:port.如果在这里设置了host:port,那么就会重载yarn.resourcemanager.hostname中设置的值。
yarn.resourcemanager.hostnameResourceManager的host.ResourceManager地址
yarn.resourcemanager.scheduler.classResourceManager Scheduler class.CapacityScheduler (推荐), FairScheduler (推荐)FifoScheduler
yarn.scheduler.minimum-allocation-mb1024ResourceManager分配给每个Container内存的最小限制
yarn.scheduler.maximum-allocation-mb8192ResourceManager分配给每个Container内存的最大限制
yarn.resourcemanager.nodes.include-path / yarn.resourcemanager.nodes.exclude-path 包含和排除的NodeManagers列表


配置NodeManager:

ParameterValueNotes
yarn.nodemanager.resource.memory-mb8192定义在NodeManager总共有多少资源(内存)用来运行Containers
yarn.nodemanager.vmem-pmem-ratio2.1每个任务使用的虚拟内存最大可以超过物理内存的比率。通过对单个nodemanager任务使用的虚拟内存总量可能超过物理内存使用的比率。
yarn.nodemanager.local-dirs${hadoop.tmp.dir}/nm-local-dir写入中间数据的本地文件路径列表,用逗号分隔。多目录增加硬盘IO性能
yarn.nodemanager.log-dirs${yarn.log.dir}/userlogs写入日志的本地文件路径列表,用逗号分隔。多目录增加硬盘IO性能
yarn.nodemanager.log.retain-seconds10800如果日志聚合没有启动的话,在NameManager上保留日志文件的时间。
yarn.nodemanager.remote-app-log-dir/logs应用程序运行完成之后,应用程序的日志将移动到HDFS的目录,这里需要设置适当的权限,仅仅在log-aggregation设置成启用。
yarn.nodemanager.remote-app-log-dir-suffix                                           logs追加到远程日志目录的后缀,日志将聚合到${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam} ,如果log-aggregation设置成启用的话.
yarn.nodemanager.aux-services          mapreduce_shuffleShuffle service 需要加以设置的Map Reduce的应用程序服务。

 

 

History Server配置 (Needs to be moved elsewhere):

 

 

ParameterValueNotes
yarn.log-aggregation.retain-seconds-1聚合日志在删除前保存多长时间,-1为禁用,不过这个值不能设置的太小。
yarn.log-aggregation.retain-check-interval-seconds                           -1检查聚合日志的保存时间,如果设置为0或者负数,那么这个值将被设置为聚合日志保留时间的1/10,不过这个值不能设置的太小。

 

etc/hadoop/mapred-site.xml:

 

配置MapReduce应用程序:

 

ParameterValueNotes
mapreduce.framework.nameyarn设置执行框架
mapreduce.map.memory.mb1536限制Map任务的最大资源数量(内存)
mapreduce.map.java.opts-Xmx1024MMap任务JVM最大堆栈大小
mapreduce.reduce.memory.mb3072限制Reduce任务的最大资源数量(内存)
mapreduce.reduce.java.opts-Xmx2560MReduce任务JVM最大堆栈大小
mapreduce.task.io.sort.mb512任务内部排序缓冲区大小
mapreduce.task.io.sort.factor100在排序文件时,多个流合并了。
mapreduce.reduce.shuffle.parallelcopies50在reduce拷贝(shffle)阶段,启动多少个并行传输线程

配置MapReduce JobHistory:

 

ParameterValueNotes
mapreduce.jobhistory.addressMapReduce JobHistory 服务的host:port默认端口是10020.
mapreduce.jobhistory.webapp.addressMapReduce JobHistory 服务 Web UI host:port默认端口是19888.
mapreduce.jobhistory.intermediate-done-dir/mr-history/tmpMapReduce JOB写的历史文件路径
mapreduce.jobhistory.done-dir/mr-history/doneMR JobHistory服务管理的历史文件路径

六,监控NodeManager的健康状况

Hadoop提供了一种机制,管理员可以配置nodemanager运行提供脚本定期确定一个节点是否健康。

管理员可以通过在脚本中执行检查来判断该节点是否处于健康状态。如果脚本检查到节点不健康,可以打印一个标准的错误输出。NodeManager通过一些脚本定期检查他的输出,如果脚本输出有错误信息,如上所述,该节点将报告为不健康,就将节点加入到ResourceManager的黑名单列表中,则任务不会分配到该节点中。然后NodeManager继续跑这个脚本,所以如果Node节点变为健康了,将自动的从ResourceManager的黑名单列表删除,节点的健康状况随着脚本的输出,如果变为不健康,在ResourceManager web 接口上对管理员来说是可用的。这个时候节点的健康状况不会显示在web接口上。

在etc/hadoop/yarn-site.xml下,可以控制节点的健康检查脚本

ParameterValueNotes
yarn.nodemanager.health-checker.script.pathNode health script这个脚本检查节点的健康状态。
yarn.nodemanager.health-checker.script.optsNode health script options检查节点的健康状态脚本选项
yarn.nodemanager.health-checker.script.interval-msNode health script interval运行健康脚本的时间间隔
yarn.nodemanager.health-checker.script.timeout-msNode health script timeout interval健康脚本的执行超时时间

 

如果只是本地硬盘坏了,健康检查脚本将不会设置该节点不健康。但是NodeManager有能力来定期检查本地磁盘的健康(检查nodemanager-local-dirs 和 nodemanager-log-dirs两个目录),当达到yarn.nodemanager.disk-health-checker.min-healthy-disks设置的阀值,则整个节点将标记为不健康。

 

 

七,Slaves File

所有Slave的hostname或者IP都保存在etc/hadoop/slaves文件中,每行一个。脚本可以通过etc/hadoop/slaves文件去运行多台机器的命令。他不使用任何基于java的hadoop配置。为了使用这个功能,ssh必须建立好使用账户才能运行hadoop。所以在安装hadoop的时候,需要配置SSH登陆。

 

八,Hadoop机架感知

很多hadoop组件得益于机架感知,给性能和安全性带来了很大的提升,Hadoop的守护进程调用管理配置的模块,获取到集群Slave的机架信息,更多的机架感知信息,查看:Hadoop之机架感知

 

九,日志

Hadoop使用Log4j作为日志框架,编辑etc/hadoop/log4j.properties文件来自定义日志的配置。

 

十,运行hadoop集群

所有配置都完成了,就可以启动hadoop集群了,分发配置文件到所有机器,所有机器安装Hadoop目录的路径应该是一样的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值