hadoop-2.7.4-翻译文档-分布式集群搭建

安装简介

安装Hadoop集群通常需要在集群中的所有机器上进行统一安装,或者通过适合目标操作系统的打包系统进行安装。
安装的要点是对不同的节点分配不同的功能。
其他服务(例如Web App Proxy Server和MapReduce作业历史记录服务器)通常根据负载在专用硬件或共享设备上运行。
集群中的其余机器充当DataNode和NodeManager。这些是仆从(slaves)。

在非安全模式下配置Hadoop
Hadoop的Java配置由两种重要的配置文件驱动:

    1.默认配置:core-default.xml,hdfs-default.xml,yarn-default.xml和mapred-default.xml。
    2.具体配置:core-site.xml, hdfs-site.xml, yarm-site.xml和mapred-site.xml。

另外,可以通过设定etc/hadoop/hadoop-env.sh和etc/hadoop/yarn-env.sh的值来控制的bin目录下的Hadoop脚本。
要配置Hadoop集群,您需要配置Hadoop的环境变量以及配置参数。
HDFS守护进程是NameNode,SecondaryNameNode和DataNode。YARN守护进程是ResourceManager,NodeManager和WebAppProxy。
如果要使用MapReduce作业,则MapReduce作业历史记录服务器也将运行。
对于大型集群,这些节点通常安装在不同的主机上运行。

配置hadoop守护进程的环境

管理员应该使用[etc/hadoop/hadoop-env.sh]和可选的[etc/hadoop/mapred-env.sh]和[etc/hadoop/yarn-env.sh]脚本来对Hadoop守护进程环境进行定制。
管理员可以使用下表中显示的配置选项来配置各个后台驻留程序:

守护进程                       环境变量
NameNode                      HADOOP_NAMENODE_OPTS
DataNode                      HADOOP_DATANODE_OPTS
SecondaryNameNode             HADOOP_SECONDARYNAMENODE_OPTS
ResourceManager               YARN_RESOURCEMANAGER_OPTS
NodeManager                   YARN_NODEMANAGER_OPTS
WebAppProxy                   YARN_PROXYSERVER_OPTS
MapReduceJobHistoryServer     HADOOP_JOB_HISTORYSERVER_OPTS

例如,要将Namenode配置为使用parallelGC,应在hadoop-env.sh中添加以下语句:

导出HADOOP_NAMENODE_OPTS =“ -  XX:+ UseParallelGC”

您可以自定义的其他有用的配置参数包括:

HADOOP_PID_DIR  //存储进程标识文件的目录。
HADOOP_LOG_DIR  //守护进程的日志文件的存储目录。如果日志文件不存在,将自动创建日志文件。
HADOOP_HEAPSIZE/YARN_HEAPSIZE  //最大堆大小,以MB为单位,默认值为1000。

在大多数情况下,应该指定HADOOP_PID_DIR和HADOOP_LOG_DIR目录,以便只能由要运行hadoop守护程序的用户写入。否则有可能发生符号链接攻击。

在系统范围的shell环境配置中配置HADOOP_PREFIX也是惯例。例如,/ etc/profile.d中的一个简单脚本:

HADOOP_PREFIX=/path/to/hadoop
export HADOOP_PREFIX

守护进程                            环境变量
ResourceManager             YARN_RESOURCEMANAGER_HEAPSIZE
NodeManager                 YARN_NODEMANAGER_HEAPSIZE
WebAppProxy                 YARN_PROXYSERVER_HEAPSIZE
MapReduceJobHistoryServer   HADOOP_JOB_HISTORYSERVER_HEAPSIZE

配置Hadoop守护进程参数

一般来说,成功启动一个简单的分布式集群,必须的基本参数配置如下,进行优化则需要添加更多参数。
[core-site.xml]
—-fs.defaultFS, hadoop.tmp.dir
—-//hadoop.tmp.dir为持久化存储,默认为系统临时目录,需修改为指定的持久化目录。
[hdfs-site.xml]
—-dfs.namenode.secondary.http-address
—-//默认为启动脚本的机器,建议修改配置,指定为namenode之外的机器。
[mapred-site.xml]
—-mapreduce.framework.name
[yarn-site.xml]
—-yarn.resourcemanager.hostname,yarn.nodemanager.aux-services

注:hadoop-2.7.4存在一个nodemanager无法启动的小问题,请参照:
[http://blog.csdn.net/anyuzun/article/details/78045601 ]

[core-site.xml]

fs.defaultFS=NameNode URI  //默认的文件系统。
io.fill.buffer.size=131072  //对序列文件进行读写操作时缓冲区的大小

[hdfs.site.xml]

NameNode的配置:
    dfs.namenode.name.dir=NameNode持久化存储在本地系统中用于持久化名字空间和事务日志的路径。  
        //如果该值为用逗号分隔的目录列表,则在所有目录中产生副本,存在冗余。
    dfs.hosts/dfs.hosts.exclude=允许/拒绝连接的NameNode列表。  
        //如果有必要,可以使用文件来进行该参数设置。
    dfs.blocksize=268435456  
        //对于大型集群,块大小一般为256M。默认为128M。
    dfs.namenode.handler.count=100  
        //对于大量的DataNode,采用多个NameNode服务编程来处理远程过程调用。  

DataNode的配置:
    dfs.datanode.data.dir=DataNode在本地系统持久化存储文件块的目录。  
        //如果该值为逗号分割的目录列表,则数据会分开存放在不同的目录中。
          通常这些目录在不同的设备上。

[yarn-site.xml]

ResourceManager与NodeManager的共有参数:
    yarn.acl.enable=true/false  
        //是否启用访问控制列表。
    yarn.admin.acl=Admin ACL  
        //在集群上设置管理员的ACL。在集群上设置管理员的访问控制列表。
          ACL可以是用逗号分隔的用户空间分隔组。
          默认为*,表示所有人都可以访问。使用特殊值,可以阻止任何人进行访问。
    yarn.log-aggregation-enable=false  
        //禁用日志聚合。

ResourceManager的配置:
    yarn.resourcemanager.address  
        //客户端提交作业的端口。
    yarn.resourcemanager.scheduler.address  
        //ApplicationMasters的主机端口,用于与调度器交互以获取资源。
    yarn.resourcemanager.resource-tracker.address
        //NodeManager的主机端口. 
    yarn.resourcemanager.admin.address
        //ResourceManager host:port for administrative commands.命令管理主机端口。
    yarn.resourcemanager.webapp.address
        //web-ui主机端口。
    yarn.resourcemanager.hostname  
        //如果该值设置,则可以省略所有yarn.resourcemanager.*的地址资源.
          如果后者有配置,该单项设置会覆盖hostname的设定值。
    yarn.resourcemanager.scheduler.class
        //调度器类,容量调度器(推荐),公平调度器(也推荐)或先入先出调度器。
    yarn.scheduler.minimum-allocation-mb
        //资源管理器分配给每个容器请求的最小内存限制。
    yarn.scheduler.maximum-allocation-mb
        //资源管理器分配给每个容器请求的最大内存限制。
    yarn.resourcemanager.nodes.include-path/
    yarn.resourcemanager.nodes.exclude-path
        //允许/拒绝连接的NodeManager.如果有必要,使用文件来进行参数控制。

NodeManager的配置:
    yarn.nodemanager.resource.memory-MB
        //资源即时可用的物理内存,以MB为单位。
          NodeManager上可用于运行容器的总可用资源
    yarn.nodemanager.vmem-pmem-ratio
        //每个任务的虚拟内存可能超过物理内存的比例限制。
    yarn.nodemanager.local-dirs
        //用于在本地系统写入中间数据的路径列表,用逗号分割。
          多路径有助于扩展磁盘i/o。
    yarn.nodemanager.log-dirs
        //用于在本地系统写入日志的路径列表,用逗号分割。
          多路径有助于扩展磁盘i/o。
    yarn.nodemanager.log.retain-seconds=10800
        //在NodeManager上保留日志文件的默认时间(秒),仅在日志聚合禁用时适用该属性。
    yarn.nodemanager.remote-app-log-dir
        //在一能用程序完成时,日志移动到的hdfs目录。需要设置的权限。仅在启用日志聚合时适用。
    yarn.nodemanager.remote-app-log-dir-suffix
        //附加到远程日志目录的后缀。日志将被汇总到
            ${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}目录下。
          仅在日志聚合启用时适用。
    yarn.nodemanager.aux-services=mapreduce_shuffle
        //为MapReduce应用程序设置的混洗服务。

历史服务器的配置(需要移动到别处时):
    yarn.log-aggregation.retain-seconds=-1
        //聚合日志的保留时间。-1禁用。如果设置过小,NameNode会收到垃圾信息。
    yarn.log-aggregation.retain-check-interval-seconds=-1
        //检查聚合日志保留的时间间隔。如果设置为0或负值,则该值计算为聚合日志保留时间的十分之一。
          如果设置过小,NameNode会收到垃圾信息。

[mapred.site.xml]

MapReduce应用程序的配置:
    mapreduce.framework.name=yarn
        //执行框架设置为Hadoop YARN。
    mapreduce.map.memory.mb=1536
        //map任务的资源限制大小。
    mapreduce.map.java.opts=-Xmx1024M
        //map任务中子虚拟机的堆大小。
    mapreduce.reduce.memory.mb=3072
        //reduce任务的资源限制大小。
    mapreduce.reduce.java.opts=-Xmx2560M
        //reduce任务中子虚拟机的堆大小。
    mapreduce.task.io.sort.mb=512
        //进行排序时的内存大小。
    mapreduce.task.io.sort.factor=100
        //文件排序时,一次合并的流数量。
    mapreduce.reduce.shuffle.parallelcopies=50
        //从大量map任务中获取输入时,reducer运行的并行副本的数量。

MapReduce JobHistory服务器的配置:
    mapreduce.jobhistory.address
        //MapReduce JobHistory服务器主机端口,默认端口为10020。
    mapreduce.jobhistory.webapp.address 
        //MapReduce JobHistory服务器Web-UI主机:端口,默认端口是19888。
    mapreduce.jobhistory.intermediate-done-dir=/mr-history/tmp
        //MapReduce任务保存日志文件的目录。
    mapreduce.jobhistory.done-dir=/mr-history/done
        //由JobHistory服务器管理的日志文件目录。

监控节点管理器的运行状况

Hadoop提供了一种机制,管理员可以通过该机制使NodeManager定期运行管理员提供的脚本,来确定节点是否健康运行。

    管理员可以在脚本中执行他们选择的任何检查来确定节点是否处于健康状态。
如果脚本检测到节点处于不正常状态,则它必须在标准输出内输出一行以error开头的字符串。
    NodeManager定期生成脚本并检查其输出。
如果脚本的输出包含字符串ERROR,如上所述,节点的状态被报告为非正常状态,
并且该节点将被ResourceManager列为黑名单,并且不会为此节点分配任何其他任务。
但是,NodeManager会继续运行脚本,以便如果节点再次变得健康,
则会自动从ResourceManager上的黑名单节点中删除。
    管理员可以在ResourceManager Web-UI中检查节点的健康状况以及脚本的输出。
节点健康的时间也显示在Web界面上。

在[yarn-site.xml]中的以下参数可用于控制节点运行状况和监视脚本。

yarn.nodemanager.health-checker.script.path
    //节点健康脚本。
yarn.nodemanager.health-checker.script.opts
    //节点健康脚本选项。
yarn.nodemanager.health-checker.interval-ms
    //节点健康脚本的运行间隔。
yarn.nodemanager.health-checker.script.timeout-ms
    //节点健康脚本的执行超时时间。

如果只有一些本地磁盘损坏,健康检查脚本不会给出ERROR。NodeManager能够定期检查本地磁盘的运行状况(具体检查nodemanager-local-dirs和nodemanager-log-dirs目录),如果磁盘损坏达到阈值阈值(由yarn.nodemanager .disk-health-checker.min-healthy-disks设置),整个节点被标记为不健康状态,此信息也发送到资源管理器。引导磁盘故障由健康检查脚本识别。

从属文件

列出您的[etc/hadoop/slaves]文件中的所有从属主机名或IP地址,每行一个。辅助脚本(如下所述)将使用该文件在列表主机上运行命令。它不用于任何基于Java的Hadoop配置。为了使用此功能,必须为用于运行Hadoop的帐户建立ssh无秘登录(通过passphraseless ssh或某些其他方式,如Kerberos)。

Hadoop机架感知

许多Hadoop组件具有机架感知功能鞥,并可以利用网络拓扑来提升性能和安全性。Hadoop守护程序通过调用管理员配置的模块获取集群中从属的机架信息。有关更多具体信息,请参阅机架意识文档。

在启动HDFS之前,强烈建议配置机架感知。
参照

http://blog.csdn.net/anyuzun/article/details/78071422

日志配置

Hadoop使用Apache log4j通过Apache Commons Logging框架进行日志记录。编辑[etc/hadoop/log4j.properties]文件可以自定义Hadoop守护程序的日志记录配置(日志格式等)。

操作Hadoop集群

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

一般来说,建议HDFS和YARN以不同的用户运行。在大多数安装中,HDFS进程以“hdfs”执行。YARN通常使用“yarn”帐户。

1.Hadoop启动

要启动Hadoop集群,您将需要启动HDFS和YARN集群。
首次升级HDFS时,必须进行格式化。将新的分布式文件系统格式化为hdfs:
    $>hdfs namenode -format <cluster_name>
在指定的节点上使用以下命令启动HDFS NameNode:
    $>hadoop-daemon.sh --config ${HADOOP_CONF_DIR} --script hdfs start namenode
    //$>hadoop-daemon.sh start namenode
在每个指定的节点上使用以下命令启动HDFS DataNode:
    $>hadoop-daemon.sh --config ${HADOOP_CONF_DIR} --script hdfs start datanode
    //$>hadoop-daemon.sh start datanode
如果配置了slaves文件和ssh无秘登录,则可以使用实用程序脚本启动所有HDFS进程:
    $>start-dfs.sh
使用以下命令,在指定的ResourceManager为运行yarn:
    $>yarn-daemon.sh --config ${HADOOP_CONF_DIR} start resourcemanager
    //$>yarn-daemon.sh start resourcemanager
运行一个脚本以在每个指定的主机上启动一个NodeManager作为yarn:
    $>yarn-daemons.sh --config ${HADOOP_CONF_DIR} start nodemanager
启动独立的WebAppProxy服务器。
如果使用多个服务器进行负载平衡,则应在每个服务器上运行:
    $>yarn-daemon.sh --config ${HADOOP_CONF_DIR} start proxyserver
如果配置了[slaves]和ssh无秘登录,所有的YARN进程都可以使用实用程序脚本启动:
    $>start-yarn.sh
使用以下命令,在指定的服务器上运行的MapReduce JobHistoryServer:
    $>mr.jobhistory.daemon.sh --config ${HADOOP_CONF_DIR} start historyserver
一键启动。。。
    $>start-all.sh

2.Hadoop关机

使用以下命令停止NameNode,在指定的NameNode上运行:
    $>hadoop-daemon.sh --config ${HADOOP_CONF_DIR} --script hdfs stop namenode
    //$>hadoop-daemon.sh stop namenode
使用脚本来停止DataNode:
    $>hadoop-daemon.sh --config ${HADOOP_CONF_DIR} --script hdfs stop datanode
    //$>hadoop-daemon.sh stop datanode
如果配置了[slaves]和ssh无秘登录,所有HDFS进程都可以使用程序脚本停止:
    $>stop-dfs.sh
停止使用下面的命令,在指定的ResourceManager运行:
    $>yarn-daemon.sh --config ${HADOOP_CONF_DIR} stop resourcemanager
    //yarn-daemon.sh stop resourcemanager
运行脚本来停止从属上的NodeManager:
    $>yarn-daemon.sh --config ${HADOOP_CONF_DIR} stop nodemanager
    //yarn-daemon.sh stop nodemanager
如果配置了[slave]和ssh无秘登录,所有的YARN进程都可以使用程序脚本停止:
    $>stop-yarn.sh
停止WebAppProxy服务器。如果使用多个服务器进行负载平衡,则应在每个服务器上运行:
    $>yarn-daemon.sh --config ${HADOOP_CONF_DIR} stop proxyserver
停止MapReduce JobHistory服务器作:
    $>mr-jobhistory-daemon.sh --config ${HADOOP_CONF_DIR} stop historyserver
一键停止。。。
    $>stop-all.sh

Web界面

一旦Hadoop集群启动并运行,可以检查组件的web-ui确定集群运行情况:

备注
NameNode    HTTP:默认HTTP端口为50070。
ResourceManager HTTP:默认HTTP端口为8088。
MapReduce JobHistoryServerHTTP:默认HTTP端口为19888。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值