Hadoop(2.7.3)集群配置-官方文档

原文地址:http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/ClusterSetup.html

目标

本文描述了如何安装、配置和管理有实际意义的Hadoop集群,其规模可从几个节点的小集群到几千个节点的超大集群。如果你希望在单机上安装Hadoop玩玩,从这里(Single Node Setup)能找到相关细节。

这份文档不包含更先进话题,比如安全或者高可用。

先决条件

  1. 安装Java。查看Hadoop Wiki了解合适的版本。
  2. 从Apache镜像下载一个稳定版本的Hadoop。

安装

安装Hadoop集群通常包括将安装软件解压到集群内的所有机器上。

通常,集群里的一台机器被指定为NameNode,另一台不同的机器被指定为ResourceManager。这些机器是masters。其他服务(比如:App Proxy Server和MapReduce Job History server)通常运行在专用的硬件或在共享的基础设施上,视负载而定。

余下的机器即作为DataNode也作为NodeManager。这些机器是slaves。

配置Hadoop在Non-Secure模式下

Hadoop的Java配置被分成两个类型的重要配置文件:

  • 只读的配置 - core-default.xml, hdfs-default.xml, yarn-default.xml 和 mapred-default.xml。
  • 特定功能的配置 - etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml和etc/hadoop/mapred-site.xml。

此外,通过设置etc/hadoop/hadoop-env.sh和etc/hadoop/yarn-env.sh中的变量为集群特有的值,你可以对bin/目录下的Hadoop脚本进行控制。

要配置Hadoop集群,你需要设置Hadoop守护进程的运行环境和Hadoop守护进程的运行参数。

HDFS的守护进程是NameNode, SecondaryNameNode,和DataNode。YARN的守护进程是ResourceManager, NodeManager, 和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,这样才能在每个远程节点上被正确定义。

管理员可以通过使用下面列表中显示的配置选项配置个人的守护进程:

Daemon EnvironmentVariable
NameNodeHADOOP_NAMENODE_OPTS
DataNodeHADOOP_DATANODE_OPTS
SecondaryNameNode HADOOP_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。比如,1000MB。 这个参数用于设置hadoop守护进程的堆大小。缺省大小是1000MB。如果你想分别设置每个进程的推大小,你可以使用它。

在多数情况下,你应该指定HADOOP_PID_DIR和HADOOP_LOG_DIR目录。这样,他们就只能被将要运行hadoop进程的用户写入。否则,就存在符号链接攻击的可能性。

通常也会在系统全局的shell环境变量配置HADOOP_PREFIX,比如在/etc/profile.d中的一个简单的脚本。

HADOOP_PREFIX=/path/to/hadoop
export HADOOP_PREFIX
Daemon EnvironmentVariable
ResourceManagerYARN_RESOURCEMANAGER_HEAPSIZE
NodeManagerYARN_NODEMANAGER_HEAPSIZE
WebAppProxyYARN_PROXYSERVER_HEAPSIZE
Map Reduce Job History ServerHADOOP_JOB_HISTORYSERVER_HEAPSIZE

配置Hadoop进程

这节处理给定的配置文件中被指定的重要参数:

  • etc/hadoop/core-site.xml
ParameterValueNotes
fs.defaultFSNameNode URIhdfs://host:port/
io.file.buffer.size131072Size of read/write buffer used in SequenceFiles.
  • etc/hadoop/hdfs-site.xml
  • 配置NameNode:
ParameterValueNotes
dfs.namenode.name.dirPath on the local filesystem where the NameNode stores the namespace and transactions logs persistently.If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy.
dfs.hosts / dfs.hosts.excludeList of permitted/excluded DataNodes.If necessary, use these files to control the list of allowable datanodes.
dfs.blocksize268435456HDFS blocksize of 256MB for large file-systems.
dfs.namenode.handler.count100More NameNode server threads to handle RPCs from large number of DataNodes.
  • etc/hadoop/yarn-site.xml
  • 配置ResourceManager和NodeManager:
ParameterValueNotes
yarn.acl.enabletrue / falseEnable ACLs? Defaults to false.
yarn.admin.aclAdmin ACLACL to set admins on the cluster. ACLs are of for comma-separated-usersspacecomma-separated-groups. Defaults to special value of * which means anyone. Special value of just space means no one has access.
yarn.log-aggregation-enablefalseConfiguration to enable or disable log aggregation
  • 配置ResourceManager:
ParameterValueNotes
yarn.resourcemanager.addressResourceManager host:port for clients to submit jobs.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.scheduler.addressResourceManager host:port for ApplicationMasters to talk to Scheduler to obtain resources.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.resource-tracker.addressResourceManager host:port for NodeManagers.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.admin.addressResourceManager host:port for administrative commands.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.webapp.addressResourceManager web-ui host:port.host:port If set, overrides the hostname set in yarn.resourcemanager.hostname.
yarn.resourcemanager.hostnameResourceManager host.host Single hostname that can be set in place of setting all yarn.resourcemanager*address resources. Results in default ports for ResourceManager components.
yarn.resourcemanager.scheduler.classResourceManager Scheduler class.CapacityScheduler (recommended), FairScheduler (also recommended), or FifoScheduler
yarn.scheduler.minimum-allocation-mbMinimum limit of memory to allocate to each container request at the Resource Manager.In MBs
yarn.scheduler.maximum-allocation-mbMaximum limit of memory to allocate to each container request at the Resource Manager.In MBs
yarn.resourcemanager.nodes.include-path / yarn.resourcemanager.nodes.exclude-pathList of permitted/excluded NodeManagers.If necessary, use these files to control the list of allowable NodeManagers.
  • 配置NodeManager:
ParameterValueNotes
yarn.nodemanager.resource.memory-mbResource i.e. available physical memory, in MB, for given NodeManagerDefines total available resources on the NodeManager to be made available to running containers
yarn.nodemanager.vmem-pmem-ratioMaximum ratio by which virtual memory usage of tasks may exceed physical memoryThe virtual memory usage of each task may exceed its physical memory limit by this ratio. The total amount of virtual memory used by tasks on the NodeManager may exceed its physical memory usage by this ratio.
yarn.nodemanager.local-dirsComma-separated list of paths on the local filesystem where intermediate data is written.Multiple paths help spread disk i/o.
yarn.nodemanager.log-dirsComma-separated list of paths on the local filesystem where logs are written.Multiple paths help spread disk i/o.
yarn.nodemanager.log.retain-seconds10800Default time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled.
yarn.nodemanager.remote-app-log-dir/logsHDFS directory where the application logs are moved on application completion. Need to set appropriate permissions. Only applicable if log-aggregation is enabled.
yarn.nodemanager.remote-app-log-dir-suffixlogsSuffix appended to the remote log dir. Logs will be aggregated to yarn.nodemanager.remoteapplogdir/ {user}/${thisParam} Only applicable if log-aggregation is enabled.
yarn.nodemanager.aux-servicesmapreduce_shuffleShuffle service that needs to be set for Map Reduce applications.
  • 配置History Server (需要转移到其他地方):
ParameterValueNotes
yarn.log-aggregation.retain-seconds-1How long to keep aggregation logs before deleting them. -1 disables. Be careful, set this too small and you will spam the name node.
yarn.log-aggregation.retain-check-interval-seconds-1Time between checks for aggregated log retention. If set to 0 or a negative value then the value is computed as one-tenth of the aggregated log retention time. Be careful, set this too small and you will spam the name node.
  • etc/hadoop/mapred-site.xml
  • 配置MapReduce Applications:
ParameterValueNotes
mapreduce.framework.nameyarnExecution framework set to Hadoop YARN.
mapreduce.map.memory.mb1536Larger resource limit for maps.
mapreduce.map.java.opts-Xmx1024MLarger heap-size for child jvms of maps.
mapreduce.reduce.memory.mb3072Larger resource limit for reduces.
mapreduce.reduce.java.opts-Xmx2560MLarger heap-size for child jvms of reduces.
mapreduce.task.io.sort.mb512Higher memory-limit while sorting data for efficiency.
mapreduce.task.io.sort.factor100More streams merged at once while sorting files.
mapreduce.reduce.shuffle.parallelcopies50Higher number of parallel copies run by reduces to fetch outputs from very large number of maps.
  • 配置ConfigurationsMapReduce JobHistory Server:
ParameterValueNotes
mapreduce.jobhistory.addressMapReduce JobHistory Server host:portDefault port is 10020.
mapreduce.jobhistory.webapp.addressMapReduce JobHistory Server Web UI host:portDefault port is 19888.
mapreduce.jobhistory.intermediate-done-dir/mr-history/tmpDirectory where history files are written by MapReduce jobs.
mapreduce.jobhistory.done-dir/mr-history/doneDirectory where history files are managed by the MR JobHistory Server.

NodeManager的健康检测

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

管理员可以通过操作他在脚本中选择的任何检查,来确定一个节点是否处于一个健康的状态。如果脚本检测到节点处于一个不健康的状态,它会打印一行以字符串ERROR开始的行到标准输出。NodeManager定期产生大量的脚本并检查它的输出。如果脚本的输出中存在上面描述中的ERROR字符串,这个节点的状态就被报告成不健康,并且这个节点就被ResourceManager加入到黑名单。没有进一步的任务将被分配到这个节点。但是,这nodemanager会继续运行脚本,所以如果节点再次变得健康,他将自动从ResourceManager的黑名单节点列表中移除。节点的健康随着脚本的输出,如果是不健康的,在ResourceManager的web界面对管理员是可见的,同时如果节点是健康的,它也会在web界面显示。

下面的参数可以在/Hadoop/yarn-site.xml中使用,用来控制节点的健康监测脚本。

ParameterValueNotes
yarn.nodemanager.health-checker.script.pathNode health scriptScript to check for node’s health status.
yarn.nodemanager.health-checker.script.optsNode health script optionsOptions for script to check for node’s health status.
yarn.nodemanager.health-checker.script.interval-msNode health script intervalTime interval for running health script.
yarn.nodemanager.health-checker.script.timeout-msNode health script timeout intervalTimeout for health script execution.

健康检查脚本不应该给错误,如果只有一些本地磁盘坏了。nodemanager拥有定期检查本地磁盘健康的能力(具体检查nodemanager-local-dirs和nodemanager-log-dirs),坏的目录数达到在yarn.nodemanager.disk-health-checker.min-healthy-disks配置属性设置的阈值后,整个节点被标记为不健康并且也会发信息给resource manager。启动磁盘或是在启动磁盘中的一个故障是由健康检查脚本确定的。

Slaves文件

在conf/slaves文件中列出所有slave的主机名或者IP地址,一行一个。辅助脚本(如下所述)将使用Hadoop/slaves文件同时在多台主机上运行命令。它不用于任何基于java的Hadoop的配置。为了使用这一功能,必须为运行Hadoop的账号建立SSH信任(通过免密码SSH或其他手段,如Kerberos)。

Hadoop机架感知

许多Hadoop的组件是具有机架感知的,它有利于网络拓扑结构的高性能和安全。Hadoop守护进程通过调用一个管理员配置模块获取集群中Slaves的机架信息。
HDFS和Map/Reduce的组件是能够感知机架的。查看Rack Awareness获取更多特定信息。

非常推荐你在启动HDFS前配置机架感知。

日志

Hadoop使用Apache log4j来记录日志,它由Apache Commons Logging框架来实现。编辑conf/log4j.properties文件可以改变Hadoop守护进程的日志配置(日志格式等)。

操作Hadoop集群

一旦所有必要的配置齐全,分发文件到所有机器的HADOOP_CONF_DIR目录上。所有机器上的目录应该是相同的。

一般情况下,推荐HDFS和YARN的运行用户是不同的。在大多数安装中,HDFS进程由‘hdfs’运行,YARN通常使用‘YARN’用户。

Hadoop的开启

开启一个Hadoop集群,你需要启动HDFS集群和YARN集群。

第一次启动HDFS,它必须被格式化。格式化成一种新的分布式文件系统,使用hdfs用户:

[hdfs]$ $HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>

在指定的节点,使用下面的指令开启HDFS NameNode,使用hdfs用户:

[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start namenode

在每个指定的节点,使用下面的指令启动一个HDFS DataNode,使用hdfs用户:

[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemons.sh --config $HADOOP_CONF_DIR --script hdfs start datanode

如果etc/hadoop/slaves和ssh信任访问被配置(查看Single Node Setup),所有的HDFS进程可以使用一个功能脚本启动,使用hdfs用户:

[hdfs]$ $HADOOP_PREFIX/sbin/start-dfs.sh

在指定的ResourceManager上,使用如下命令启动YARN,使用yarn用户:

[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager

在每个指定的主机上,执行脚本来启动NodeManager,使用yarn用户:

[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemons.sh --config $HADOOP_CONF_DIR start nodemanager

开启一个独立的WebAppProxy服务器。使用yarn用户跑WebAppProxy服务。如果使用多台负载均衡的服务器,应该在每台机器上执行:

[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start proxyserver

如果etc/hadoop/slaves和ssh信任访问被配置(查看Single Node Setup),所有的YARN进程可以使用一个功能脚本启动,使用yarn用户:

[yarn]$ $HADOOP_PREFIX/sbin/start-yarn.sh

在指定的服务器上用mapred用户执行下面命令,开启MapReduce JobHistory Server:

[mapred]$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh --config $HADOOP_CONF_DIR start historyserver

Hadoop的关闭

在指定的NameNode使用hdfs用户执行如下命令关闭NameNode:

[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop namenode

使用hdfs用户执行脚本关闭DataNode:

[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemons.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode

如果etc/hadoop/slaves和ssh信任访问被配置(查看Single Node Setup),所有的HDFS进程可以使用一个功能脚本关闭,使用hdfs用户:

[hdfs]$ $HADOOP_PREFIX/sbin/stop-dfs.sh

在指定的ResourceManager使用yarn用户执行如下命令关闭ResourceManager:

[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop resourcemanager

使用yarn用户执行脚本关闭NodeManager:

[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemons.sh --config $HADOOP_CONF_DIR stop nodemanager

如果etc/hadoop/slaves和ssh信任访问被配置(查看Single Node Setup),所有的YARN进程可以使用一个功能脚本关闭,使用yarn用户:

[yarn]$ $HADOOP_PREFIX/sbin/stop-yarn.sh

关闭WebAppProxy服务器。使用yarn用户跑WebAppProxy服务。如果使用多台负载均衡的服务器,应该在每台机器上执行:

[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop proxyserver

在指定的服务器上用mapred用户执行下面命令,关闭MapReduce JobHistory Server:

[mapred]$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh --config $HADOOP_CONF_DIR stop historyserver

Web接口

一旦Hadoop启动并运行起来检查如下描述的web-ui组件:

DaemonWeb InterfaceNotes
NameNodehttp://nn_host:port/Default HTTP port is 50070.
ResourceManagerhttp://rm_host:port/Default HTTP port is 8088.
MapReduce JobHistory Serverhttp://jhs_host:port/Default HTTP port is 19888.

转载请注明出处:http://blog.csdn.net/m1213642578

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值