Apache Hadoop 2.7.1文档翻译(2)集群安装

Apache Hadoop 2.7.1 集群安装

目的

此文档描述怎样安装和配置Hadoop集群,包括少数的节点到成千上万个节点的庞大集群。要使用Hadoop,您首先要学会安装单机模式(单机模式安装请查看单机模式设置文档)。

此文档内容不包括安全性或高可用性等高级教程。

先决条件

·安装并配置好jdk1.7环境变量。

·从Apache官网下载一个稳定的Hadoop版本。

安装

安装Hadoop集群通常需要通过操作系统上的解压缩工具解压Hadoop软件安装包到所有集群的计算机上。需要注意的是分配好您计算机硬件的存储空间和性能。

在集群中,通常有一台计算机被配置安装为NameNode(主节点),另外一台计算机作为专门的ResourceManager。这就是Master。其他服务(例如web应用程序代理服务器和MapReduce作业日志记录服务器)通常要么在专用的硬件设施上运行,要么在共享负载设施上运行。

其他计算机主要作为DataNode(从节点)和NodeManager。这就是slave。

Hadoop在非安全模式中的配置

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。

此外,您也可以找到分布在bin目录下自定义修改etc/hadoop/hadoop-env.sh和etc/hadoop/yarn-env.sh两个脚本通过它们来控制Hadoop。

配置Hadoop集群环境您将需要配置Hadoop程序执行环境,还要配置Hadoop程序的各个参数。

HDFS程序是由NameNode,SecondaryNameNode和DataNode进程组成。YARN程序则是由ResourceManager,NodeManager和WebAppProxy进程组成。如果MapReduce被使用,那么MapReduce作业历史记录服务将也会跟着运行。对于大型设施上安装的Hadoop来说,这些都是被分隔在不同的计算机上运行的。

Hadoop环境配置

管理员应该通过设置etc/hadoop/hadoop-env.sh、etc/hadoop/mapred-env.sh以及etc/hadoop/yarn-env.sh脚本信息来制定自己的Hadoop运行环境。

最起码,您必须在各个远程节点上正确的指定JAVA_HOME。

管理员可以通过以下表格中显示的参数配置自己需要的Hadoop程序:

进程

环境变量

NameNode

HADOOP_NAMENODE_OPTS

DataNode

HADOOP_DATANODE_OPTS

Secondary NameNode

HADOOP_SECONDARYNAMENODE_OPTS

ResourceManager

YARN_RESOURCEMANAGER_OPTS

NodeManager

YARN_NODEMANAGER_OPTS

WebAppProxy

YARN_PROXYSERVER_OPTS

Map Reduce Job History Server

HADOOP_JOB_HISTORYSERVER_OPTS

如下所示,在hadoop-env.sh中添加声明配置 NameNode使用parallelGC:

export HADOOP_NAMENODE_OPTS=”-XX:+UseParallelGC”

参考etc/hadoop/hadoop-env.sh其他例子。

您也可以自定义引用其他参数进行配置:

·HADOOP_PID_DIR – 程序的进程ID文件存储路径。

·HADOOP_LOG_DIR – 程序日志文件存储路径。如果日志文件不存在那么它将会自动创建。

·HADOOP_HEAPSIZE / YARN_HEAPSIZE –堆的最大使用量(单位MB)。如果设置的变量为1000,那么堆的大小为1000MB。这是程序对堆的大小使用配置。默认情况下它的值为1000。如果您想要为各个程序配置堆的大小,那么您可以使用这个参数配置。

大多数情况,您应该指定HADOOP_PID_DIR和HADOOP_LOG_DIR的输出位置,这将会使它们只能以到运行hadoop程序的用户权限输出到指定的位置。否则将可能会受到符号链接试的攻击。

HADOOP_PREFIX这个参数是Hadoop在系统中默认的配置也是使用传统的配置方式。例如,将以下简单的两行代码配置到/etc/profile文件中:

HADOOP_PREFIX=/path/to/hadoop

export HADOOP_PREFIX

 

进程

环境变量

ResourceManager

YARN_RESOURCEMANAGER_HEAPSIZE

NodeManager

YARN_NODEMANAGER_HEAPSIZE

WebAppProxy

YARN_PROXYSERVER_HEAPSIZE

Map Reduce Job History Server

HADOOP_JOB_HISTORYSERVER_HEAPSIZE

配置Hadoop进程

以下是列出在给出的配置文件指定重要的参数:

·etc/hadoop/core-site.xml

参数

描述

fs.defaultFS

NameNode URL

hdfs://host:port

Io.file.buffer.size

131072

IO的缓冲区大小单位kb

·etc/hadoop/hdfs-site.xml

·NameNode配置:

参数

描述

dfs.namenode.name.dir

操作日志和名称控件存储路径

多个路径可以使用逗号分隔

dfs.hosts/dfs.hosts.exclude

DataNode白名单或黑名单信息

如果有必要,使用这些文件来控制允许连接的DataNode

dfs.blocksize

268435456

这个数字代表大规模的HDFS文件系统中block大小为256MB

dfs.namenode.handler.count

100

NameNode处理DataNodeRPC请求的线程数量

·DataNode配置:

参数

描述

dfs.datanode.data.dir

逗号分隔的每一个绝对路径分别对应一个DataNode存储block的位置。

如果这里是一个逗号分隔的目录,那么数据将被存储到所有指定的目录下,通常设置在不同的设备上。

·etc/hadoop/yarn-site.xml

·ResourceManager和NodeManager的配置:

参数

描述

yarn.acl.enable

true/false

是否启用ACLs,默认false

yarn.admin.acl

Admin ACL

ACL在集群中设置管理员,ACL的格式为逗号分隔用户空格逗号分隔组的形式。默认 *”这个符号是一个表示所有人的特殊值。如果是一个空格那么表示没有任何人可以访问。

yarn.log.aggregation-enable

false

配置启用或者禁用日志聚集。

·配置ResourceManager:

参数

描述

yarn.resourcemanager.address

ResourceManager host:port 这个地址提供客户端提交作业使用。

如果设置了host:port 那么它将会覆盖yarn.resourcenamager.hostname的值

yarn.resourcemanager.scheduler.address

ResourceManager host:port 这个地址提供资源给ApplicationMasters调度。

如果设置了host:port 那么它将会覆盖yarn.resourcenamager.hostname的值

yarn.resourcemanager.resource-tracker.address

ResourceManager host:port 提供给NodeManager

如果设置了host:port 那么它将会覆盖yarn.resourcenamager.hostname的值

yarn.resourcemanager.admin.address

ResourceManager host:port 提供管理命令

如果设置了host:port 那么它将会覆盖yarn.resourcenamager.hostname的值

yarn.resourcemanager.webapp.address

ResourceManager web-ui host:port

如果设置了host:port 那么它将会覆盖yarn.resourcenamager.hostname的值

yarn.resourcenamager.hostname

ResourceManager服务地址

只设置这个hostname的地址,就可以设置到所有yarn.resourcemanager*address所有值。默认的端口自然就作为ResourceManagerger各个组件的通道。

yarn.resourcemanager.scheduler.class

ResourceManager Scheduler class

CapacityScheduler(推荐)FairScheduler(推荐)FifoScheduler

yarn.scheduler. minimum-allocation-mb

ResourceManager分配给每个请求容器的最小内存

单位MB

yarn.scheduler.maximum-allocation-mb

ResourceManager分配给每个请求容器的最大内存

单位MB

yarn.resourcemanager.nodes.include-path/yarn.resourcemanager.nodes.exclude-path

NodeManager白名单或黑名单

如果有必要,使用这个文件去控制NodeManager访问权限

配置NodeManager:

参数

描述

yarn.nodemanager.resource.memory-mb

即:分配给NodeManager的实际物理内存,单位MB

定义NodeManager运行容器实际可用的资源总量。

yarn.nodemanager.vmem-pmem-ratio

这个数值代表的是虚拟内存使用率,即:任务所使用内存的百分比,默认值为2.1倍。

根据任务在NodeManager中所使用的虚拟内存可能会超过物理内存使用的比例,通过这个比例来限制虚拟内存可能会超过每个任务所使用的物理内存。

yarn.nodemanager.local-dirs

此处填写本地文件系统路径,多个路径之间使用逗号进行分隔。

多个路径有助于分散磁盘的IO

yarn.nodemanager.log-dirs

此处填写本地文件系统路径,多个路径之间使用逗号进行分隔。

多个路径有助于分散磁盘的IO

yarn.nodemanager.log.retain-seconds

10800

日志文件在NodeManager保留的默认时间,它仅在log-aggregation被禁用的时候有效。

yarn.nodemanager.remote-app-log-dir

/logs

运用程序执行完成的日志被移动到的HDFS的目录。

yarn.nodemanager.remote-app-log-dir-suffix

/logs

被追加到远程的日志路径。日志将被汇聚到${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam} ,仅在log-aggregation被启用时有效。

yarn.nodemanager.aux-services

mapreduce_shuffle

需要给Map Reduce应用程序设置的Shuffle服务。

·日志记录服务器配置(例如需要转移日志到别处去):

参数

描述

yarn.log-aggregation.retain-seconds

-1

这些汇聚的日志在删除之前需要保留多长时间。-1表示禁用,注意:此处设置太小将会给NameNode发送垃圾信息。

yarn.log-aggregation.retain-check-interval-seconds

-1

检查汇总日志保留时间的时间,如果设置为0或者是负数,那么将被计算为汇聚日志保留时间的十分之一。注意:此处设置太小将会给NameNode发送垃圾信息。

·etc/hadoop/mapred-site.xml

·MapReduce应用程序配置:

参数

描述

mapreduce.framework.name

yarn

Hadoop Yarn设置一个可执行的framework

mapreduce.map.memory.mb

1536

maps资源的大小

mapreduce.map.java.opts

-Xmx1024M

Maps jvm堆的大小

mapreduce.reduce.memory.mb

3072

Reduces资源大小

mapreduce.reduce.java.opts

-Xmx2560M

Reduces  jvm 堆的小大

mapreduce.task.io.sort.mb

512

排序数据使用的内存分配。

mapreduce.task.io.sort.factor

100

对文件排序时,合拼流的数量。

mapreduce.reduce.shuffle.parallelcopies

50

通过reduce从非常大的map输出中读取并行副本传输的数量。

·配置MapReduce JobHistory服务:

参数

描述

mapreduce.jobhistory.address

Host:port

默认端口号为10020

mapreduce.jobhistory.webapp.address

Web 服务 Host:port

默认端口号为19888

mapreduce.jobhistory.intermediate-done-dir

/mr-history/tmp

此目录为MapReduce作业运行日志的存储路径。

mapreduce.jobhistory.done-dir

/mr-history/done

此目录为通过MapReduce JobHistory 服务管理日志的存储路径。

NodeManager运行状态监控

Hadoop提供了一个机制,管理员可以配置NodeManager定期去运行管理员自己提供的脚本确定一个节点是否正常运行。

管理员可以通过执行检查脚本中选择任意一种方式确定某些节点运行良好。如果脚本检测到节点运行状态不好,它必须打印一行以ERROR开头的字符串。NodeManager有自己的脚本定期检测这些输出信息。如果脚本输出的字符串中包含ERROR,那么通过NodeManager将被当做以上描述的处理,对应的节点被通知为运行状态不良好同时这些节点被列入ResourceManager黑名单中。未做相关设置的任务也会做同样的处理。不过NodeManager会继续运行脚本检查运行不良的节点是否恢复正常,恢复正常的节点将会自动从ResourceManger的黑名单中移除。节点的良好状态与脚本输出是紧密联系的,如果它是不良好的就会在ResourceManager的web接口上提供给管理员信息,与此同时运行良好的节点也会显示在web接口上。

在etc/hadoop/yarn-site.xml中使用一下参数可以控制节点的健康监测脚本。

参数

描述

yarn.nodemanager.health-checker.script.path

脚本路径

运行状态监测脚本

yarn.nodemanager.health-checker.script.opts

脚本参数

根据这些参数监测运行状态

yarn.nodemanager.health-checker.script.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 ,整个节点不良好这个信息会发送给资源管理器。磁盘或启动盘是否发生故障由监测脚本来识别。

保存文件

所有的slave服务器名或IP地址列表在您的etc/hadoop/slaves文件中,每一行是一个。帮助脚本(下面描述)将使用etc/hadoop/slaves文件在许多主机上执行命令。它不使用任何基于java的Hadoop配置。为了使用此功能,必须使用建立ssh信任的账号运行hadoop。

Hadoop 机架感知(Rack Awareness)

许多Hadoop组件都是机架感知和对网络拓扑的性能和安全的利用。Hadoop系统服务在集群中通过调用管理员配置的模型获取机架的slaves信息。请参考机架感知文档了解更多信息。

启动HDFS(分布式文件系统)之前极力推荐您配置机架感知(rack awareness)。

日志记录

Hadoop通过Apache Commons Loggin 框架使用Apache log4j记录日志。编辑etc/log4j.properties文件自定义配置Hadoop系统服务的日志记录(例如日志格式等等)。

运行Hadoop集群

配置好所有必须的配置后,分发这些配置文件到所有Hadoop集群计算机的HADOOP_CONF_DIR (Hadoop配置文件目录)下。在所有的集群计算机上这个目录应该是相同的。

通常HDFS和YARN推荐使用不同的用户运行,大多数情况下,HDFS进程运行使用‘hdfs’,YARN使用‘yarn’这个账号。

启动Hadoop

启动一个Hadoop集群您将意味着需要启动HDFS和YARN这两个集群。

启动HDFS之前您必须格式化它。使用hdfs用户格式化一个新的分布式文件系统(HDFS):

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

使用hdfs用户在指定的节点上使用以下命令启动HDFS NameNode:

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

使用hdfs用户在每个指定的节点上通过以下命令一个HDFS  DataNode:

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

如果etc/hadoop/slaves和ssh信任(参考单机模式安装)已经配置好,那么HDFS的所有进程可以通过脚步启动,使用hdfs用户执行命令如下:

$HADOOP_PREFIX/sbin/start-dfs.sh

使用yarn用户通过以下命令启动YARN运行在指定的ResourceManager如下:

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

在每个指定的主机上使用yarn用户运行脚本启动一个NodeManager

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

运行一个独立的WebAppProxy服务是使用yarn用户在WebAppProxy服务(WebAPPProxy设备)上运行的。如果是使用负载均衡的多个服务,那么它应该运行在每个服务器上,启动命令如下:

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

如果etc/hadoop/slaves和ssh信任(参考单机模式安装)已经配置好,那么YARN的所有进程可以通过脚步启动,使用yarn用户执行命令如下:

$HADOOP_PREFIX/sbin/start-yarn.sh

使用mapred用户通过以下命令启动MapReduce JobHistory Server 运行在指定的服务器上:

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

关闭Hadoop

使用hdfs用户通过以下命令在指定的NameNode上的停止NameNode:

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

使用hdfs用户运行一个脚本停止一个DataNode:

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

如果etc/hadoop/slaves和ssh信任(参考单机模式安装)已经配置好,那么HDFS的所有进程可以通过脚步停止,使用hdfs用户执行命令如下:

$HADOOP_PREFIX/sbin/stop-dfs.sh

使用yarn用户在指定的ResourceManager上通过以下命令停止ResourceManager:

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

使用yarn用户在一个slave上运行一个脚本停止一个NodeManager,如下:

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

如果etc/hadoop/slaves和ssh信任(参考单机模式安装)已经配置好,那么YARN的所有进程可以通过脚步停止,使用yarn用户执行命令如下:

$HADOOP_PREFIX/sbin/stop-yarn.sh

停止一个独立的WebAppProxy服务是使用yarn用户在WebAppProxy服务(WebAPPProxy设备)上运行的。如果是使用负载均衡的多个服务,那么它应该运行在每个服务器上,停止命令如下:

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

使用mapred用户在指定的服务器上通过以下命令停止MapReduce JobHistory Server:

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

 

Web 接口

进程

Web接口

描述

NameNode

http://nn_host:port

默认端口为50070

ResourceManager

http://rm_host:port

默认端口为8088

MapReduce JobHistory Server

http://jhs_host:port

默认端口为19888

 


转载于:https://my.oschina.net/zhangzhigong/blog/648244

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值