Apache Hadoop 2.4.1完全分布式集群安装

目的

这篇文档描述了从少量到数以千计节点有价值的Hadoop集群的安装,配置和管理。如果你想玩Hadoop,你也许想知道在一个单机上的安装方法。(请参考:Single Node Setup

安装前准备

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

安装

Hadoop集群典型的安装是在集群上的所有机器解压这个软件或者安装RPMS。典型的集群是一个机器被设计为NameNode,另外一个机器被设计为ResourceManager,这些都是Masters节点。集群中剩下的机子都扮演着DataNode和NodeManager,这写都是slaves节点。

非安全模式下运行Hadoop

下面这段描述了怎么去配置一个Hadoop集群。

文件配置

Hadoop配置是被两种重要的配置文件所驱动:

只读默认配置-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安装文件中的bin/目录来控制Hadoop脚本,设置节点具体的值通过conf/hadoop-env.sh 和 yarn-env.sh文件。

节点配置

配置HADOOP集群,你将需要配置环境变量,HADOOP守护进程很好执行需要这些配置的参数。

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

Hadoop守护进程环境变量配置

管理员应该使用conf/hadoop-env.sh和conf/yarn-env.sh脚本去具体指定自定义Hadoop守护进程环境。至少您应该在各个远程节点上正确的指定JAVA_HOME。

在大多数情况下,你也应该指定HADOOP_PID_DIR和HADOOP_SECURE_DN_PID_DIR的目录,这些目录只能由将要运行Hadoop守护进程的用户所写。否则有一个symlink攻击的可能性。

管理员可以使用下面表格显示的配置选项来配置自定义的守护进程:

 Daemon  Environment  Variable
 NameNode  HADOOP_NAMENODE_OPTS   
 DataNode  HADOOP_DATANODE_OPTS
 Secondary NameNode  HADOOP_SECONDARYNAMENODE_POTS
 ResourceNanager  YARN_RESOURCEMANAGER_OPTS
 NodeManager  YARN_NODEMANAGER_OPTS
 WebProxy      YARN_PROXYSERVER_OPTS
 Map Reduce Job History Server   HADOOP_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- heap的最大使用数量,是以MB为单位,如果变量设置为1000,则head的大小被设为1000MD。 这个用来给HADOOP坚守进程配置堆大小,默认值为1000MB 。如果你想分别为每个守护进程想配置值,便可以使用这个配置参数。
     Daemon  Environment Variable
     ResourceManager  YARN_RESOURCEMANAGER_HEAPSIZE
     NodeManager  YARN_NODEMANAGER_HEAPSIZE
     WebProxy  YARN_PROXYSERVER_HEAPSIZE
     Map Reduce Job History Server  HADOOP_JOB_HISTORYSERVER_HEAPSIZE

非安全模式下Hadoop守护线程的配置

这段为指定的配置文件给出重要的参数:

conf/core-site.xml
 Parameter  Value  Notes
 fs.defaultFS  NameNode URI  hdfs://host:port/
 io.file.buffer.size  131072  Size of write/read buffer used in SequenceFile

 

conf/hdfs-site.xml

Configurations for NameNode:

 Parameter  Value  Notes
 dfs.namenode.name.dir  NameNode 存储namespace 和 事务日志的本地目录  如果这个参数设置为多个目录,那么这些目录下都保存着元信息的多个备份,多个目录以逗号分隔

 dfs.namenode.hosts

 dfs.namenode.hosts.exclude

 允许/排除数据节点列表

如果必要,使用这些文件来控制允许的数据节点列表。

 dfs.block.size  268435456  HDFS文件系统最大的块时256MB
dfs.namenode.handler.count 100 使用更多的NameNode服务线程去处理大量来自DataNode的远程程序调用

 

Configurations for DataNode:

 Parameter  Value  Notes
 dfs.datanode.data.dir  

DataNode块存储在本地文件系统的位置,多个位置以逗号分隔

 如果这是一个以逗号分隔的目录,这些数据将会存放在所有被命名的目录,典型的是存放在不同的设备。

 

conf/yarn-site.xml

ResourceManager和NodeManager的配置:

 Parametr  Value  Notes
 yarn.acl.enable  true/false  是否允许ACL,默认为false
 yarn.admin.acl  Admin ACL  ACL设置集群上的管理员。使用逗号分隔用户空间和用户组。默认是指定值为*,表示任何人。特别的是空格表示皆无权限。
 yarn.log-aggregation-enable  false  配置允许日志聚合与否

 

ResourceManager的配置:

 Parameter  Value  Notes
 yarn.resourcemanager.address  ResourceManager host:port ,,用于用户提交作业.  host:port
 yarn.resourcemanager.scheduler.address  ResourceManagerhost:port,用于应用管理者向Scheduler获取资料  host:port
 yarn.resourcemaneger.resource-tracker.address  ResourceManagerhost:port , 用于节点管理  host:port
 yarn.resourcemanager.admin.address  ResourceManagerhost:port, 用于管理命令  host:port
 yarn.resourcemanager.webapp.address  ResourceManager host:port, WEB URL host:port 
 yarn.resourcemanager.scheduler.class  ResourceManagerScheduler class  CapacityScheduler(推荐),FairScheduler(也推荐), or FifoScheduler
 yarn.scheduler.minimum-allocation-mb  在ResourceManger上每个请求容器的最大分配内存  In MBs
 yarn.scheduler.maxmum-allocation-mb  在ResourceManager上每个请求容器的最小限度内存  In MBs

yarn.resourcemanager.nodes.include-path

yarn.resouremanager.nodes.exclude-path

列出允许/排除的NodeManager 如果有必要,使用这些节点去控制允许NodeManager的列表

 

NodeManager的配置:

 Paramter  Value  Notes
 yarn.nodemanager.resource.memory-mb  为NodeManager分配可用的物理内存资源,单位为M  在NodeManager上定义总共可用的资源,并让这些可用的资源运行在容器中
 yarn.nodemanager.vmem-pmem-ratio  虚拟内存的使用的比率可能会超过物理内存  The 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-dirs     当中间数据被写入的时候,以逗号分隔本地文件系统的路径  

多路径帮助传播磁盘I/O

 yarn.nodemanager.log-dirs  当日志被写入的时候,以逗号列表分隔本地文件系统的路径   多路径帮助传播磁盘I/O
 yarn.nodemanager.log.retain-seconds  10080 如果日志聚合被禁用, 默认的时间(秒)适当的将日志文件保存在NodeManager
 yarn.nodemanager.remote-app-log-dir  /logs  当应用完成的时候HDFS目录中的应用日志被移动,需要设置适当的权限,仅仅适用于启用了日志聚集。
 yarn.nodemanager.remote-app-log-dir-suffix  logs  追加远程日志目录,当日志聚集被允许的时候,日志将会聚集到${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}目录
 yarn.nodemanager.aux-services  mapreduce_shuffle  为Map Reduce程序设置洗牌服务

 

History Server的配置:

 Parameter  Value  Notes
 yarn.log-aggregation.retain-seconds  -1  在删除日志之前,多长时间聚集一次日志。-1表示不允许。注意,设置的太小你将会手动name node的垃圾邮件
 yarn.log-aggregation.retain-check-interval-seconds  -1  多长时间检查一次保留的聚集日志。如果设置0或者一个负数, 聚集日志保留时间的十分之一将会作为它的值。

 

conf/mapred-site.xml

Mapreduce Applictions的配置:

 Parameter  Valu Notes 
 mapreduce.framework.name  yarn  Hadoop Yarn执行框架
 mapreduce.map.memory.mb  1536  map的最大资源限制
 mapreduce.map.java.opts  -Xmx1024M  map子jvm最大的堆大小
 mapreduce.reduce.memory.mb  3072  reduce的最大资源限制
 mapreduce.reduce.java.opts  -Xmx2560M  reduce子jvm堆最大限制
 mapreduce.task.io.sort.mb  512  为高效的排序设置更高的内存限制
 mapreduce.task.io.sort.factor  100   当文件排序的时候更多的流在同一时刻被合并
 mapreduce.reduce.shuffle.parallelcopies  50  从非常大的map中拉取输出,高数量的并行副本被reduce执行

 

MapReduce JobHistory Server的配置: 

 Paramter  Value  Notes
 mapreduce.jobhistory.address   MapReduce JobHistory Server host:port  默认10020
 mapreduce.jobhistory.webapp.address MapReduce JobHistory Server Web UI host:port  默认19888
 mapreduce.jobhistory.intermediate-done-dir  /mp-history/tmp  历史文件通过mapreduce被写到这个文件
 mapreduce.jobhistory.done-dir  /mp-history/done  MR JobHistory Server通过这个目录去管理历史文件

 

Hadoop机架感知

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

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

该API汇报DNS(IP也是如此)的名称给一个机架id。 

site-specific模块可以使用配置项topology.node.switch.mapping.impl来配置。同样的,默认实现使用topology.script.file.name来运行一个script命令。如果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中用来控制节点健康检测脚 本。

 Paramter  Value  Notes
 yarn.nodemanager.health-checker.script.path  node health script  检查节点健康状态的脚本
 yarn.nodemanager.health-checker.script.opts  node health script options  检查节点健康状态脚本的选项
 yarn.nodemanager.health-checker.script.interval-ms  node health script interval  定时的运行health脚本
 yarn.nodemanager.health-checker.script.tomeout-ms  node health script timeout interval  执行health脚本超时

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

从属文件

一般在集群中你唯一地选择一台机器作为 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

运行一个脚本启动,启动所有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节点的NodeManager:

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

启动一个单独的WebAppProxy服务,如果多个服务器被用于负载均衡,它(WebAppProxy)应该运行在每个负载均衡的节点上:
$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver --config $HADOOP_CONF_DIR

 

使用下面的命令启动MapReduce JobHistory服务,运行在指定的服务器上:

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

关闭Hadoop

使用下面的命令停止NameNode,运行在指定的NameNode上:

$ $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

使用下面的命令停止ResourceManager,运行在指定的ResourceManager上:

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

运行一个脚本停止所有slave节点上的NodeManager:
$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop nodemanager

停止WebAppProxy服务,若多个服务器被使用负载均衡,它应该运行在每一个负载均衡节点上:

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

使用下面的命令停止MapReduce JobHistory 服务, 运行在指定的server上:
$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh stop historyserver --config $HADOOP_CONF_DIR

Hadoop 集群操作

一旦所有的必要配置完成了,发布文件到所有机器的  HADOOP_CONF_DIR  目录上。  

本节还介绍了各种UNIX用户应该启动的各部件及使用相同的UNIX帐户和组。

启动Hadoop 

启动Hadoop集群你将必须启动HDFS和YARN。

格式化一个新的文件系统作为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

作为一个root用户并设置特殊的环境变量HADOOP_SECURE_DN_USER运行一个基本启动所有slave节点的DataNode:

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

 
使用下面的命令开启YARN  , 作为yarn运行在指定的ResourceManager:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager

 
运行一个脚本启动所有slave节点的NodeManager作为yarn:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start nodemanager

启动一个单独的WebAppProxy server,  运行WebAppProxy服务作为一个yarn,如果多个如果多个服务器被用于负载均衡,它(WebAppProxy)应该运行在每个负载均衡的节点上:

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

使用下面的命令启动MapReduce JobHistory服务,运行在指定的服务器上作为mapred:

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

 
关闭Hadoop
使用下面的命令停止NameNode, 运行指定的NameNode作为hdfs:
[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop namenode

 
作为root运行一个脚本停止所有slave上的DataNode:
[root]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR --script hdfs stop datanode

 

使用下面的命令停止ResourceManager, 作为yarn运行指定的ResourceManger:

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

 
作为yarn运行一个脚本停止所有slave节点的NodeManagers:
[yarn]$ $HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR stop nodemanager

停止WebProxy服务,作为yarn运行WebAppProxy server。若多个服务器被使用负载均衡,它应该运行在每一个负载均衡节点上:

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

 
使用下面的命令停止MapReduce JobHistory Server,作为mapred运行执行的sever:
[mapred]$ $HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh stop historyserver --config $HADOOP_CONF_DIR

 

网页接口

一旦Hadoop启动并运行,可通过如下的描述检查其组件:

 Daemon  Web Interface  Notes
 NameNode  http://nn_host:port/  默认HTTP端口是50070
 ResourceManager  http://rm_host:port/  默认HTTP端口是8088
MapReduce JobHistory Server   http://jhs_host:port/  默认HTTP端口是19888


 

转载于:https://my.oschina.net/997155658/blog/314447

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值