Hadoop 下一代 MapReduce - 集群参数设置与启动

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


一. 目的

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



二. 先决条件

从 Apache 镜像中下载一个稳定的 Hadoop 版本



三. 安装

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

通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为 ResourceManager。这些机器是 masters。余下的机器即作为 DataNode 也作为 NodeManager。这些机器是 slaves。

我们用 HADOOP_HOME 指代安装的根路径。通常,集群里的所有机器的 HADOOP_HOME 路径相同。



四. 运行 Hadoop Non-Secure 模式

接下来的几节描述了如何配置Hadoop集群。


1. 配置文件

对 Hadoop 的配置通过 conf/ 目录下的两个重要配置文件完成:

  • 只读的默认配置: 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

要了解更多关于这些配置文件如何影响 Hadoop 框架的细节,请看这里。

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

2. 集群配置

要配置 Hadoop 集群,你需要设置 Hadoop 守护进程的运行环境和 Hadoop 守护进程的运行参数。Hadoop 守护进程指 NameNode/DataNode 和ResourceManager/NodeManager。


4.1 配置 Hadoop 守护进程的运行环境

管理员可在 conf/hadoop-env.shconf/yarn-env.sh 脚本内对 Hadoop 守护进程的运行环境做特别指定。

至少,你得设定 JAVA_HOME 使之在每一远端节点上都被正确设置。

Administrators can configure individual daemons using the configuration options shown below in the table:

在大部分情况下,你可以应该指定 HADOOP_PID_DIRHADOOP_SECURE_DN_PID_DIR 来指出仅可以被用户进行写操作的目录。否则会潜在的 symlink 攻击。

管理员可以通过配置选项来分别配置各个守护进程。 下表是可以配置的选项。

进程环境变量
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 ${HADOOP_NAMENODE_OPTS}"

其它可定制的常用参数还包括:

  • HADOOP_LOG_DIR / YARN_LOG_DIR : 守护进程日志文件的存放目录。如果不存在会被自动创建。
  • HADOOP_HEAPSIZE / YARN_HEAPSIZE : 最大可用的堆大小,单位为MB。比如,1000MB。 这个参数用于设置 hadoop 守护进程的堆大小。缺省大小是 1000MB。
进程环境变量
ResourceManagerYARN_RESOURCEMANAGER_HEAPSIZE
NodeManagerYARN_NODEMANAGER_HEAPSIZE
WebAppProxyYARN_PROXYSERVER_HEAPSIZE
Map Reduce Job History ServerHADOOP_JOB_HISTORYSERVER_HEAPSIZE

4.2 配置非安全模式下的 Hadoop 进程

这部分涉及 Hadoop 集群的重要参数,这些参数在给定的配置文件中指定。

1. conf/core-site.xml

参数注意事项
fs.defaultFSNameNode URIhdfs://host:port/
io.file.buffer.size131072SequenceFiles 文件中.读写缓存 size 设定


2. conf/hdfs-site.xml

  • 配置 NameNode
参数注意事项
dfs.namenode.name.dir在本地文件系统所在的 NameNode 的存储空间和持续化处理日志如果这是一个以逗号分隔的目录列表,然后将名称表被复制的所有目录,以备不时之需
dfs.namenode.hosts /
dfs.namenode.hosts.exclude
DataNodes permitted/excluded列表如有必要,可以使用这些文件来控制允许数据节点的列表
dfs.blocksize268435456大型的文件系统HDFS块大小为 256MB
dfs.namenode.handler.count100设置更多的 NameNode线程,处理从 DataNode 发出的大量 RPC 请求


  • 配置 DataNode
参数注意事项
dfs.datanode.data.dir逗号分隔的一个 DataNode 上,它应该保存它的块的本地文件系统的路径列表如果这是一个以逗号分隔的目录列表,那么数据将被存储在所有命名的目录,通常在不同的设备


3. conf/yarn-site.xml

  • 配置 ResourceManager 和 NodeManager
参数注意事项
arn.acl.enabletrue / false启用ACL的?默认为false
yarn.admin.aclAdmin
ACL
访问控制列表,在群集上设置管理员。 ACL 是为逗号分隔usersspacecomma 分隔组。默认为 * 特殊值这意味着任何人。只是空间的特殊值意味着没有人进入
yarn.log-aggregation-enablefalse配置来启用或禁用日志聚合


  • 配置 ResourceManager
参数注意事项
yarn.resourcemanager.address客户端对 ResourceManager 主机通过 host:port 提交作业host:port
If set, overrides the hostname set in yarn.resourcemanager.hostname
yarn.resourcemanager.scheduler.addressApplicationMasters 通过 ResourceManager 主机访问host:port 跟踪调度程序获资源host:port
If set, overrides the hostname set in yarn.resourcemanager.hostname
yarn.resourcemanager.resource-tracker.addressNodeManagers 通过 ResourceManager 主机访问 host:porthost:port
If set, overrides the hostname set in yarn.resourcemanager.hostname
yarn.resourcemanager.admin.address管理命令通过ResourceManager 主机访问host:porthost:port
If set, overrides the hostname set in yarn.resourcemanager.hostname
yarn.resourcemanager.webapp.addressRResourceManager web 页面 host:porthost:port
If set, overrides the hostname set in yarn.resourcemanager.hostname
yarn.resourcemanager.hostnameResourceManager 主机名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(推荐),FairScheduler(也推荐),orFifoScheduler
yarn.scheduler.minimum-allocation-mb每个容器内存最低限额分配到的资源管理器要求以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-mb给定 NodeManager 资源的可用物理内存,以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-servicesShuffle service 需要加以设置的 Map Reduce 的应用程序服务


  • 配置给 History Server (需要移动到其他地方)
参数注意事项
yarn.log-aggregation.retain-seconds-1如何长期保持聚集日志删除之前。 -1禁用。请注意,设置这个太小了,你将向 namenode 节点发送垃圾邮件
yarn.log-aggregation.retain-check-interval-seconds-1检查汇总的日志保留的时间。如果设置为0或负值,则该值被计算为十分之一的聚合日志保留时间。请注意,设置这个太小了,你将向 namenode 节点发送垃圾邮件


4. conf/mapred-site.xml

  • Configurations for MapReduce Applications
参数注意事项
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 中读取较多的平行副本


  • Configurations for MapReduce JobHistory Server
参数注意事项
mapreduce.jobhistory.addressMapReduce JobHistory Server host:port默认端口号 10020
mapreduce.jobhistory.webapp.addressMapReduce JobHistory Server Web UI host:port默认端口号 19888
mapreduce.jobhistory.intermediate-done-dir/mr-history/tmpDirectory where history files are written by MapReduce jobs. 由 MapReduce 作业所写入历史文件的目录
mapreduce.jobhistory.done-dir/mr-history/doneDirectory where history files are managed by the MR JobHistory Server. 由 MR JobHistory Server 管理历史文件所在的目录



五. Hadoop 的机架感知

HDFS 和 Map/Reduce 的组件是能够感知机架的。

NameNode 和 ResourceManager 通过调用管理员配置模块中的 API resolve 来获取集群里每个 slave 的机架 id。

该 API 将 slave 的 DNS 名称(或者IP地址)转换成机架 id。

使用哪个模块是通过配置项 topology.node.switch.mapping.impl 来指定的。模块的默认实现会调用 topology.script.file.name 配置项指定的一个的脚本/命令。 如果 topology.script.file.name 未被设置,对于所有传入的 IP 地址,模块会返回 /default-rack 作为机架 id。



六. 监控 NodeManagers 健康情况

Hadoop 提供了哪些管理员可以配置节点管理器来定期运行管理员提供的脚本,以确定如果一个节点是正常运行与否的机制。

管理员可以执行他们所选择的检查脚本判断该节点是否处于正常运行状态通过。如果脚本检测该节点是在一个不能正常运行的状态,它必须打印一行到标准输出的字符串错误。该节点管理器周期性地产卵的脚本,并检查其输出。如果脚本的输出包含字符串错误,如上文所述,节点的状态报告为节点错误和节点加入 ResourceManager 黑名单中。没有进一步的任务将被分配到该节点。然而,节点管理器继续运行脚本。如果该节点再次变得可以正常运行,它将被从上 ResourceManager 中的黑名单中的节点自动删除。随着该脚本的输出节点的正常,如果是不正常的节点的,是提供给管理员位于 ResourceManager web 界面。因为节点是正常的时间也显示在 Web 界面上。

下面的参数可以用来控制 conf /yarn-site.xml 节点正常运行监测脚本。

参数注意事项
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健康脚本的执行超时时间


如果只在本地磁盘的一些变差,健康检查脚本不支持发送错误的。节点管理器必须定期检查本地磁盘(特别检查节点管理器 - 本地显示目录和节点管理器日志 - 显示目录)的健康的能力和深远的基础上对配置属性 yarn.nodemanager 设置的值坏目录数的阈值,磁盘健康 checker.min - 健康 - 磁盘,整个节点被标记为不健康的,这个信息被发送到资源管理器也。将启动盘或者搜查或引导磁盘故障是由健康检查脚本识别。



七. Slaves 文件

通常情况下你选择一台机器的集群中充当的 NameNode 和一体机作为充当 ResourceManager 中,专门。机器的其余部分作为既是一个的 DataNode 和节点管理器和被称为 slave。

列出你的 conf /slave 文件,每行一个所有从主机名或 IP 地址。



八. 日志

Hadoop 的使用 Apache log4j 的通过 Apache 共享日志框架记录。编辑 conf/log4j.properties 文件自定义的 Hadoop 守护进程的日志记录配置(日志格式等)。



九. 操作 Hadoop 集群

一旦所有的必须配置文件都完成了,就分发文件到所有机器上的 HADOOP_CONF_DIR 路径的目录下


9.1 Hadoop 启动

为了启动 Hadoop 集群,你需要启动 HDFS 和 YARN 集群。

1. 格式化一个新的分布式文件系统

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

2. 用以下命令启动 HDFS ,运行在指定的 NameNode

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

3. 在所有的 slave 上运行以下脚本来启动 DataNode

$HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start datanode

4. 使用以下命名来启动 YARN ,运行在指定的 ResourceManager

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

5. 在所有的 slave 上运行以下脚本来启动 NodeManagers

$HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start nodemanager

6. 启动 standalone WebAppProxy 服务器
如果多个服务器被用于负载均衡,那么它应该都运行在这些服务器上

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

7. 使用以下命令来启动 MapReduce JobHistory,运行在指定的服务器上

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

9.2 Hadoop 关闭

Stop the NameNode with the following command, run on the designated NameNode:

1. 使用以下命令来停止 NameNode,运行在指定的 NameNode 上

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

2. 在所有的 slave 上运行脚本来停止 DataNode

$HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode

3. 使用以下命名来停止 ResourceManager ,运行在指定的 ResourceManager

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

4. 在所有的 slave 上运行脚本停止 NodeManagers

$HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop nodemanager

5. 关闭 standalone WebAppProxy 服务器
如果多个服务器被用于负载均衡,那么它应该都运行在这些服务器上

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

6. 使用以下命令来关闭 MapReduce JobHistory,运行在指定的服务器上

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



十. 操作 Hadoop 集群

一旦所有的必须配置文件都完成了,就分发文件到所有机器上的 HADOOP_CONF_DIR 路径的目录下

本章节同样也描述了不同 Unix 用户启动不同组件和之前使用相同的 Unix 账号和用户组:


10.1 Hadoop 启动

To start a Hadoop cluster you will need to start both the HDFS and YARN cluster.

Format a new distributed filesystem as hdfs:

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

Start the HDFS with the following command, run on the designated NameNode as hdfs:

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

Run a script to start DataNodes on all slaves as root with a special environment variable HADOOP_SECURE_DN_USER set to hdfs:

[root]$ HADOOP_SECURE_DN_USER=hdfs $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs start datanode

Start the YARN with the following command, run on the designated ResourceManager as yarn:

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

Run a script to start NodeManagers on all slaves as yarn:

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

Start a standalone WebAppProxy server. Run on the WebAppProxy server as yarn. If multiple servers are used with load balancing it should be run on each of them:

[yarn]$ $HADOOP_YARN_HOME/bin/yarn start proxyserver --config $HADOOP_CONF_DIR

Start the MapReduce JobHistory Server with the following command, run on the designated server as mapred:

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

10.2 Hadoop 关闭

Stop the NameNode with the following command, run on the designated NameNode as hdfs:

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

Run a script to stop DataNodes on all slaves as root:

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

Stop the ResourceManager with the following command, run on the designated ResourceManager as yarn:

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

Run a script to stop NodeManagers on all slaves as yarn:

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

Stop the WebAppProxy server. Run on the WebAppProxy server as yarn. If multiple servers are used with load balancing it should be run on each of them:

[yarn]$ $HADOOP_YARN_HOME/bin/yarn stop proxyserver --config $HADOOP_CONF_DIR

Stop the MapReduce JobHistory Server with the following command, run on the designated server as mapred:

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



十一. 网页接口

一旦 Hadoop 集群已经启动并运行检查以下描述组件的网页界面:

进程网页接口注意事项
NameNodehttp://nn_host:port/默认http端口号 50070
ResourceManagerhttp://rm_host:port/默认http端口号 8088
MapReduce JobHistory Serverhttp://jhs_host:port/默认http端口号19888
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值