[ 登录注册 ]

语言

Hadoop-2.2.0中文文档——MapReduce 下一代 -——集群配置

2017-07-14 09:41:12 admin 返回上一页

标签:des   style   class   code   java   http   

目的

这份文档描写叙述了怎样安装、配置和管理从几个节点到有数千个节点的Hadoop集群。

玩的话,你可能想先在单机上安装。(看单节点配置)。

准备

从Apache镜像上下载一个Hadoop的稳定版本号。

安装

安装一个Hadoop集群,一般包含分发软件到全部集群中的机器上或者是安装RPMs。

一般地,集群中的一台机器被唯一地设计成NameNode还有一台机器被设置成ResourceManager。这是master(主)。

集群中剩下的机器作为DataNode 和 NodeManager。这些是slaves(从)。

在非安全环境下执行Hadoop

以下的小节描写叙述了怎样配置一个Hadoop集群。

配置文件

Hadoop配置由两种重要的配置文件驱动:

  • 仅仅读的默认配置文件 —— core-default.xml hdfs-default.xml yarn-default.xml and mapred-default.xml.
  • Site-specific配置—— 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 设置site-specific值。

Site 配置

配置Hadoop 集群,你须要配置环境,以让Hadoop守护进程通过配置參数运行。

Hadoop 守护进程是 NameNode/DataNode 和 ResourceManager/NodeManager。

配置Hadoop守护进程的环境

administrator应该使用 conf/hadoop-env.sh 和 conf/yarn-env.sh 脚 本来做site-specific 定制Hadoop守护进程的环境。

至少要你应该指定JAVA_HOME,这样才干在每个远程节点上正确定义。

大多数情况下你应该指定 HADOOP_PID_DIR 和 HADOOP_SECURE_DN_PID_DIR 指向在仅仅能被执行Hadoop守护进程的用户可写的文件夹。否则非常有可能有symlink攻 击。

administrator能够用下表所看到的的配置选项配置个人守护进程。

守护进程环境变量
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表示。假设变量被设置成1000,堆就会被设置成1000MB。这个被用来给守护进程设置堆大小。默认值是1000,假设你想为每一个进程单独配置你能够使用。
守护进程环境变量
ResourceManagerYARN_RESOURCEMANAGER_HEAPSIZE
NodeManagerYARN_NODEMANAGER_HEAPSIZE
WebAppProxyYARN_PROXYSERVER_HEAPSIZE
Map Reduce Job History ServerHADOOP_JOB_HISTORYSERVER_HEAPSIZE

 

配置Hadoop守护进程于非安全模式

本节处理在例如以下配置文件里要指定的重要的參数:

  • conf/core-site.xml
參数说明
fs.defaultFSNameNode URIhdfs://host:port/
io.file.buffer.size131072在序列文件里使用的读/写缓冲大小。

conf/hdfs-site.xml

  •  NameNode 配置:
  • 參数说明
    dfs.namenode.name.dirNameNode在本地文件系统上的路径,永久地存储了命名空间和传输日志。
    假设这是一个逗号分隔的词典,为了冗余,名字表将被拷贝到全部的词典中。
    dfs.namenode.hosts /dfs.namenode.hosts.exclude同意/非同意 DataNodes列表.若有必要,用这个文件控制同意的datanode列表。
    dfs.blocksize268435456在大型文件系统中HDFS 块大小为256MB 。
    dfs.namenode.handler.count100很多其它的 NameNode server线程处理来自DataNode大量的RPCs。
  • DataNode配置:
參数说明
dfs.datanode.data.dir用于一个DataNode存放块的本地文件系统上逗号分隔的路径列表假设这是一个逗号分隔的词典,那么数据就被存在全部的命名的词典中,通常在不同设备上。

conf/yarn-site.xml

  •  ResourceManager 和 NodeManager 的配置:
    參数说明
    yarn.acl.enabletrue /false同意 ACLs默认是 false.
    yarn.admin.aclAdmin ACL在集群上设置administrator。 ACLs are of for comma-separated-usersspacecomma-separated-groups.默认是指定值为*表示不论什么人。特别的是空格表示皆无权限。
    yarn.log-aggregation-enablefalse配置同意日志聚合与否。
  • ResourceManager 的配置:
參数说明
yarn.resourcemanager.addressResourceManager host:port 用于client提交任务。host:port
yarn.resourcemanager.scheduler.addressResourceManager host:port 用于应用管理者向Scheduler获取资源host:port
yarn.resourcemanager.resource-tracker.addressResourceManager host:port 用于 NodeManagers.host:port
yarn.resourcemanager.admin.addressResourceManager host:port用于管理命令host:port
yarn.resourcemanager.webapp.addressResourceManager 浏览器界面 host:port.host:port
yarn.resourcemanager.scheduler.classResourceManager Scheduler class.CapacityScheduler (推荐) FairScheduler(亦推荐) 或FifoScheduler
yarn.scheduler.minimum-allocation-mb在Resource Manager上为每一个容器分配的最小内存。

In MBs
yarn.scheduler.maximum-allocation-mb在Resource Manager上为每一个容器分配的最大内存。
In MBs
yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-path同意/非同意 NodeManagers列表.如有必要,用这些文件控制同意的NodeManager列表。

 

  •  NodeManager 配置:

 

參数说明
yarn.nodemanager.resource.memory-mbResource i.e. available physical memory in MB for givenNodeManagerDefines 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.remote-app-log-dir}/${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 的配置 (须要移到其它地方):

 

參数说明
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.

 

conf/mapred-site.xml

  • Configurations for 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.

Configurations for MapReduce JobHistory Server:

ParameterValueNotes
mapreduce.jobhistory.addressMapReduce JobHistory Server host:portDefault port is 10020.
mapreduce.jobhistory.webapp.addressMapReduce JobHistory Server Web UIhost: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.

Hadoop 机架感知

 HDFS 和 the YARN 组件是 机架感知的。

 NameNode 和 ResourceManager 通过请求一个在administrator配置模块中的API获取集群中的slaves的机架信息 。

这个API汇报DNS名字(IP地址也是)给一个机架id.

site-specific模块能够用配置项topology.node.switch.mapping.impl配置。相同的默认实现用topology.script.file.name执行一个脚本/命令。假设 topology.script.file.name 未被设置 机架 id /default-rack会被返回不论什么传过去的ip地址.

管理 NodeManagers的健康

Hadoop 提供了一个administrator能通过配置NodeManager去周期性地执行一个脚 本去检測一个节点健康有否的机制。

administrator能通过在脚 本中执行他们的随意选择来检測一个节点是否处在健康状态。假设脚 本检測到节点处在非健康状态,它必然会以ERROR开头在标准输出上打印一行。NodeManager 周期性地大量生产脚 本并检查它的输出。假设输出包括字符串ERROR,如上所述,节点的状态就会报告为非健康,节点就会被ResourceManager列入黑 名单。不会再有任务分发给这个节点。然而,NodeManager持续执行这个脚 本,所以假设节点又变得健康了,它就会自己主动从ResourceManager 的黑名单中移除。节点的健康伴随着脚 本的输出,假设是不健康的,administrator就会在ResourceManager 的浏览器界面中看到。节点变得健康后也会从web见面中消失。

以下的參数是在conf/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.

假设一些本地磁盘坏了的话,健康检測脚 本就不能给出ERROR了。NodeManager 有能力周期性地检查本地磁盘的健康状态(特别是检查nodemanager-local-dirs and nodemanager-log-dirs)和在达到基于配置的属性yarn.nodemanager.disk-health-checker.min-healthy-disks坏文件夹阀值后,整个节点被标记为不健康,同一时候这个信息也会发送给resource manager。引导盘要么突然坏了要么引导盘中的一个失效被健康检測脚本识别。 

Slaves 文件

一般在集群中你唯一地选择一台机器作为 NameNode ,一台机器作为 ResourceManager. 剩下的机器既作为 DataNode 也作为 NodeManager 并被叫做 slaves.

在你的conf/slaves文件上列出全部slave机器名或IP地址,一个一行。

日志

Hadoop 通过  Apache Commons Logging 框架 用 Apache log4j 记录日志。编辑 conf/log4j.properties 文件定制 Hadoop 守护进程的日志配置(日志标准等等).

 

操作 Hadoop 集群

一旦全部的必要配置完毕了,公布文件到全部机器的 HADOOP_CONF_DIR 文件夹上。

Hadoop 启动

要启动一个Hadoop集群你须要启动 HDFS 和 YARN .

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

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

用以下的命令启动 HDFS,执行在指定的 NameNode 上:

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

用以下的命令启动 HDFS,执行在指定的 NameNode 上:

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

执行一个脚本以启动全部 slave 上的 DataNode :

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

用以下的命令启动 YARN 执行在指定的 ResourceManager 上:

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

执行一个脚本以启动全部 slave 上的 NodeManagers :

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

用以下的命令启动 MapReduce JobHistory server执行在指定的server上:

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

Hadoop 关闭

Start a standalone WebAppProxy server. If multipleservers are used with load balancing it should be run on each of them:

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

用以下的命令启动 MapReduce JobHistory server执行在指定的server上:

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

Hadoop 关闭

用以下的命令关闭 NameNode  执行在指定的 ResourceManager 上:

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

执行一个脚本以关闭全部 slave 上的 DataNode :

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

用以下的命令关闭 YARN 执行在指定的 ResourceManager 上:

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

执行一个脚本以关闭全部 slave 上的 NodeManagers :

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

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

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

用以下的命令关闭 MapReduce JobHistory server执行在指定的server上:

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

在安全模式下执行 Hadoop 

本节处理一些重要的參数,以指定在健壮的、基于身份验证的安全模式下执行Hadoop。

  • Hadoop 守护进程的用户帐号

    确保 HDFS 和 YARN 以不同的Unix用户执行 如 hdfs 和 yarn. 还有,确保 MapReduce JobHistory server 以 user mapred执行.

    推荐让他们共享一个Unix组,如hadoop. 

    User:GroupDaemons
    hdfs:hadoopNameNode Secondary NameNode Checkpoint Node Backup Node DataNode
    yarn:hadoopResourceManager NodeManager
    mapred:hadoopMapReduce JobHistory Server
  •  HDFS 和 本地文件系统路径的权限

下表列出了多种 HDFS 和 本地文件系统路径(全部节点上)和推荐的权限。

FilesystemPathUser:GroupPermissions
localdfs.namenode.name.dirhdfs:hadoopdrwx------
localdfs.datanode.data.dirhdfs:hadoopdrwx------
local$HADOOP_LOG_DIRhdfs:hadoopdrwxrwxr-x
local$YARN_LOG_DIRyarn:hadoopdrwxrwxr-x
localyarn.nodemanager.local-dirsyarn:hadoopdrwxr-xr-x
localyarn.nodemanager.log-dirsyarn:hadoopdrwxr-xr-x
localcontainer-executorroot:hadoop--Sr-s---
localconf/container-executor.cfgroot:hadoopr--------
hdfs/hdfs:hadoopdrwxr-xr-x
hdfs/tmphdfs:hadoopdrwxrwxrwxt
hdfs/userhdfs:hadoopdrwxr-xr-x
hdfsyarn.nodemanager.remote-app-log-diryarn:hadoopdrwxrwxrwxt
hdfsmapreduce.jobhistory.intermediate-done-dirmapred:hadoopdrwxrwxrwxt
hdfsmapreduce.jobhistory.done-dirmapred:hadoopdrwxr-x---

安全认证 keytab 文件

  • HDFS

    NameNode keytab file 在 NameNode 主机上 看起来应该像这样:

    $ /usr/kerberos/bin/klist -e -k -t /etc/security/keytab/nn.service.keytabKeytab name: FILE:/etc/security/keytab/nn.service.keytabKVNO Timestamp         Principal4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)

    The Secondary NameNode keytab file on that host should look like the following:

    $ /usr/kerberos/bin/klist -e -k -t /etc/security/keytab/sn.service.keytabKeytab name: FILE:/etc/security/keytab/sn.service.keytabKVNO Timestamp         Principal4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)

    The DataNode keytab file on each host should look like the following:

    $ /usr/kerberos/bin/klist -e -k -t /etc/security/keytab/dn.service.keytabKeytab name: FILE:/etc/security/keytab/dn.service.keytabKVNO Timestamp         Principal4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)
  • YARN

    The ResourceManager keytab file on the ResourceManager host should look like the following:

    $ /usr/kerberos/bin/klist -e -k -t /etc/security/keytab/rm.service.keytabKeytab name: FILE:/etc/security/keytab/rm.service.keytabKVNO Timestamp         Principal4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)

    The NodeManager keytab file on each host should look like the following:

    $ /usr/kerberos/bin/klist -e -k -t /etc/security/keytab/nm.service.keytabKeytab name: FILE:/etc/security/keytab/nm.service.keytabKVNO Timestamp         Principal4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)
  • MapReduce JobHistory Server

    The MapReduce JobHistory Server keytab file on that host should look like the following:

    $ /usr/kerberos/bin/klist -e -k -t /etc/security/keytab/jhs.service.keytabKeytab name: FILE:/etc/security/keytab/jhs.service.keytabKVNO Timestamp         Principal4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)4 07/18/11 21:08:09 [email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (AES-128 CTS mode with 96-bit SHA-1 HMAC)4 07/18/11 21:08:09 [email protected] (ArcFour with HMAC/md5)

 

配置安全模式(暂不翻译)

  • WEB界面

    一旦Hadoop启动并执行,可通过例如以下的描写叙述检查其组件:

    守护进程Web 界面说明
    NameNodehttp://nn_host:port/默认 HTTP port是 50070.
    ResourceManagerhttp://rm_host:port/默认 HTTP port是 8088.
    MapReduce JobHistory Serverhttp://jhs_host:port/默认HTTP port是 19888.

Hadoop-2.2.0中文文档——MapReduce 下一代 -——集群配置布布扣bubuko.com

Hadoop-2.2.0中文文档——MapReduce 下一代 -——集群配置

标签:des   style   class   code   java   http   


文章来源:http://www.bozhiyue.com/yuyan/2017/0714/1484239.html
返回上一页    返回分类 上一篇:   下一篇:
相关