Hadoop3.0集群配置

前言

本文主要是讲述如何在上千节点下的大规模集群的安装和配置。如果你只是想尝hadoop。你可以在单台机器上进行安装。(查看单例安装)

本文不涉及安全或高可用等方面的主题。

先决条件

  • 安装Java。想获java取匹配的hadoop版本详情查看Hadoop Wiki
  • 从Apache的hadoop镜像上下载稳定的版本。

安装

Hadoop集群典型安装方式包括在所有的集群机器上解压软件或者从你的操作系统中通过安装包来安装它。这是一个硬件到功能的很重要的划分。

通常,集群中的一台机器被指定为NameNode,而另一台机器则被指定为ResourceManager。这些都是主。根据负载的情况,其他服务(如WebApp Proxy服务和MapReduceJobHistory 服务)通常在专有硬件或共享设备上运行。

集群中的其余机器同时充当DataNode和no需求者。这些都是工作者。

Hadoop的非安全模式下配置

Hadoop的Java配置的驱动来源于两种重要的配置文件:

l只读的默认配置 -core-default.xml,hdfs-default.xml,yarn-default.xml和mapred-default.xml。

l特定站点配置 -etc/hadoop/core-site.xml,etc/hadoop/hdfs-site.xml,etc/hadoop/yarn-site.xml和etc/hadoop/mapred-site.xml。

此外,您还可以在bin/目录中找到的Hadoop控制分发的脚本,它主要是通过设置etc/hadoop/hadoop-env.sh 和etc/hadoop/yarn-env.sh特定值来控制的。

要配置Hadoop集群,您需要配置Hadoop守护进程执行的环境,以及Hadoop守护进程的配置参数。

HDFS守护进程包括NameNode、SecondaryNameNode和DataNode。YARN守护进程包括ResourceManager、NodeManager和WebAppProxy。如果要使用MapReduce,那么MapReduce Job History Server也将会运行。相对于大规模的使用,它们通常运行在单独的主机上。

配置Hadoop守护进程的环境

后台管理员通过etc/hadoop/hadoop-env.sh和etc/hadoop/mapred-env.sh、etc/hadoop/yarn-env.sh脚本对Hadoop守护进程的运行环境进行针对性的配置。

最起码的一点,您必须指定JAVA_HOME,以便在每个远程节点上准确的定义它。

管理员可以使用表中的配置选项来对单个守护进程进行配置:

守护进程

环境变量

NameNode

HDFS_NAMENODE_OPTS

DataNode

HDFS_DATANODE_OPTS

Secondary NameNode

HDFS_SECONDARYNAMENODE_OPTS

ResourceManager

YARN_RESOURCEMANAGER_OPTS

NodeManager

YARN_NODEMANAGER_OPTS

WebAppProxy

YARN_PROXYSERVER_OPTS

Map Reduce Job History Server

MAPRED_HISTORYSERVER_OPTS

例如,要配置Namenode以使用parallelGC和4GB 的Java堆,应该在hadoop-env.sh中添加以下语句:

export HDFS_NAMENODE_OPTS=“-XX:+UseParallelGC -Xmx4g”

Seeetc/hadoop/hadoop-env.shfor other examples.

etc/hadoop/hadoop-env.sh的其他例子查看。

其他常用的配置参数包括:

lHADOOP_PID_DIR–守护进程id文件的存储目录。

lHADOOP_LOG_DIR-守护进程日志文件的存储目录。如果日志文件不存在,则自动创建。

lHADOOP_HEAPSIZE_MAX- 用于Java heapsize的最大内存使用量. 此还支持由JVM支持的单位设置。如果没有任何单位,则假定该数字的单位为M。默认情况下,Hadoop将让JVM决定使用多少内存。这个值可以被每个守护进程的_OPTS变量覆写。例: 设置HADOOP_HEAPSIZE_MAX=1g和HADOOP_NAMENODE_OPTS=“-Xmx5g”, 此NameNode将配置具有5GB堆。

在大多数情况下,您应该指定HADOOP_PID_DIR和HADOOP_LOG_DIR目录,这些目录只能由将要运行hadoop守护进程的用户有写的功能,否则的话可能会出现symlink攻击的情况。

在系统范围的shell环境配置中配置HADOOP_HOME也是一种传统。例如,一个简单的

/etc/profile.d脚本:

HADOOP_HOME=/path/to/hadoop

export HADOOP_HOME

配置Hadoop守护进程

本节主要说明在常用的配置文件中的重要参数。

letc/hadoop/core-site.xml

参数

说明

fs.defaultFS

NameNode URI

hdfs://host:port/

io.file.buffer.size

131072

队列文件中的读/写缓冲区的大小。

letc/hadoop/hdfs-site.xml

lNameNode配置:

参数

说明

dfs.namenode.name.dir

NameNode持久存储名称空间和事务日志的本地文件系统上路径

如果这是一个逗号分隔的目录列表,那么将在所有目录中复制名称的表,以进行冗余。

dfs.hosts/dfs.hosts.exclude

包含/摒弃的数据存储节点清单

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

dfs.blocksize

268435456

HDFS 块大小为256MB 的大文件系统.

dfs.namenode.handler.count

100

多个NameNode服务器线程处理来自大量数据节点的rpc。

lDataNode配置:

参数

说明

dfs.datanode.data.dir

DataNode的本地文件系统上存储块的逗号分隔的路径列表。

如果这是一个逗号分隔的目录列表,那么数据将存储在所有命名的目录中,通常在不同的设备上。

letc/hadoop/yarn-site.xml

lResourceManager 和NodeManager配置:

参数

说明

yarn.acl.enable

true/false

允许ACLs 默认false.

yarn.admin.acl

Admin ACL

在集群上设置adminis。 ACLs are of for comma-separated-usersspacecomma-separated-groups.默认是指定值为*表示任何人。特别的是空格表示皆无权限。

yarn.log-aggregation-enable

false

Configuration to enable or disable log aggregation

配置是否允许日志聚合。

lResourceManager配置:

参数

说明

yarn.resourcemanager.address

ResourceManagerhost:port 用于客户端任务提交.

如果设置host:port,将覆盖yarn.resourcemanager.hostname.

host:port主机名。

yarn.resourcemanager.scheduler.address

ResourceManagerhost:port 用于应用管理者向调度程序获取资源。

如果设置host:port,将覆盖yarn.resourcemanager.hostname主机名

yarn.resourcemanager.resource-tracker.address

ResourceManagerhost:port 用于NodeManagers.

如果设置_host:port_,将覆盖yarn.resourcemanager.hostname的主机名设置。

yarn.resourcemanager.admin.address

ResourceManagerhost:port 用于管理命令。

如果设置_host:port_,将覆盖yarn.resourcemanager.hostname主机名的设置

yarn.resourcemanager.webapp.address

ResourceManagerweb-ui host:port.

如果设置_host:port_,将覆盖yarn.resourcemanager.hostname主机名的设置

yarn.resourcemanager.hostname

ResourceManagerhost.

可设置为代替所有yarn.resourcemanager* address资源的主机单一主机名。其结果默认端口为ResourceManager组件。

yarn.resourcemanager.scheduler.class

ResourceManager调度类.

Capacity调度(推荐),Fair调度(也推荐), 或Fifo调度. 使用完全限定类名,如org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.

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列表

如果必要,可使用这些文件来控制允许的NodeManagers列表

lNodeManager配置:

参数

说明

yarn.nodemanager.resource.memory-mb

用于给定的NodeManager的资源,即可用的物理内存、内存容量。

用于运行容器的NodeManager上的全部可用资源定义。

yarn.nodemanager.vmem-pmem-ratio

任务可使用的虚拟内存的最大比率,可能超过物理内存限制。

每个任务的虚拟内存使用可能超过其物理内存限制。NodeManager上的任务所使用的虚拟内存总量可能会超过其物理内存使用量。

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

/logs

在应用程序完成时移动应用程序日志的HDFS目录。需要设置相应的权限。仅适用于启用日志聚合的情况

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

logs

后缀附加到远程日志目录。日志将聚合到 y a r n . n o d e m a n a g e r . r e m o t e − a p p − l o g − d i r / {yarn.nodemanager.remote-app-log-dir}/ yarn.nodemanager.remoteapplogdir/{user}/${thisParam}仅适用于启用日志聚合的情况

yarn.nodemanager.aux-services

mapreduce_shuffle

Shuffle service that needs to be set for Map Reduce applications.

需要被设置Shuffle服务的MapReduce应用程序

yarn.nodemanager.env-whitelist

环境变量通过

从NodeManagers的容器继承的环境属性

对于mapreduce应用程序,除了默认值hadoop op_mapred_home应该被添加外。属性值还有JAVA_HOME HADOOP_COMMON_HOME、HADOOP_HDFS_HOME HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME HADOOP_MAPRED_HOME

lHistory Server (需要转移到其他地方)配置:

参数

说明

yarn.log-aggregation.retain-seconds

-1

保存多长时间之后删除聚合日志。-1禁用。要小心,设置值这个太小,这个节点将成为垃圾箱。

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

-1

检查聚合日志保留的间隔时间。如果将值设置为0或负值,则将值计算为聚合日志保留时间的十分之一。要小心,设置这个太小,这个节点将成为垃圾箱。

letc/hadoop/mapred-site.xml

lMapReduce 应用程序配置:

参数

说明

mapreduce.framework.name

yarn

设置执行的框架为Hadoop YARN.

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通过运行更多的并行副本来取得大量的maps的输出结果

lMapReduce JobHistory Server配置:

参数

说明

mapreduce.jobhistory.address

MapReduce JobHistory 服务主机:端口

默认端口为10020.

mapreduce.jobhistory.webapp.address

MapReduce JobHistory Server Web UI主机:端口

默认端口为19888.

mapreduce.jobhistory.intermediate-done-dir

/mr-history/tmp

MapReduce jobs写历史文件的目录

mapreduce.jobhistory.done-dir

/mr-history/done

MR JobHistory Server管理的历史文件目录

NodeManagers健康监控

Hadoop提供了一种管理员可以通过配置NodeManager以便定期运行管理员提供的脚本,确定节点是否健康的机制。管理员可以通过他们选择的脚本中的任一检查来确定节点是否处于健康状态。如果脚本检测到节点处于不健康状态,它必须打印一行以ERRO开始的字符串并进行标准输出。NodeManager会周期性地生成脚本并检查它的输出。如果脚本的输出包含字符串ERROR错误,如上所述,该节点的状态是不健康的,并且该节点将由ResourceManager在黑名单上列出来。并且将不会有新的任务分配给此节点无论如何,NodeManager还将继续运行此脚本,这样如果此节点恢复正常,它就会自动从ResourceManager上的黑名单节点中删除。该节点的健康信息将伴随脚本进行输出,(如果是不健康的),并通过ResourceManager web界面提供给管理员。该节点健康的时间也会显示在web界面上。

可以使用以下参数来控制etc/hadoop/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

节点健康脚本超时间隔。

用于健康脚本执行的超时。.

如果只有一些本地磁盘变得糟糕,那么health checker脚本不会出现ERROR错误信息。

NodeManager有能力定期检查本地磁盘的健康状况(特别是检查NodeManager -local-dirs和NodeManager -log-dirs),并且在达到了基于配置属性yarn.nodemanager.disk-health-checker的值设置的坏目录的阈值之后。如果整个节点都是不健康的,这个信息将被发送到资源管理器。由健康检查脚本来标识引导磁盘被检查还是引导磁盘上出现故障。

从文件

etc/hadoop/workers文件中列出所有工作主机名或IP地址,每行一个。Helper脚本(如下所述)将使用etc/hadoop/workers文件同时在许多主机上运行命令。它不基于java的任何Hadoop配置。使用这个功能,必须为运行Hadoop的帐户建立ssh信任(通过无密码ssh或其他一些方法,例如Kerberos)。

Hadoop机架感知

许多Hadoop组件都是机架感知的,并利用网络拓扑来实现性能和安全性。Hadoop守护进程通过调用管理员配置的模块获取集群中工作人员的机架信息。有关更详细的信息,请参阅“机架感知”文档。

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

日志

Hadoop使用Apache Commons日志框架的Apache log4j进行日志记录。

编辑theetc/hadoop/log4j.properties文件来实现Hadoop守护进程日志配置(日志格式等)的定制化。

Hadoop集群操作

一旦完成所有必要的配置之后,将文件分发到所有机器上的HADOOP_CONF_DIR目录。这在所有机器上的目录是相同的。

正常情况下,建议将HDFS和YARN使用单独的用户运行。在大多数的安装情况中,HDFS 进程使用‘hdfs’账号,YARN 通常使用‘yarn’ 账号。

Hadoop启动

启动Hadoop集群,您需要启动HDFS和YARN集群。

The first time you bring up HDFS, it must be formatted. Format a new distributed filesystem as_hdfs_:

第一次打开HDFS时,必须对其进行格式化。将新的分布式文件系统格式化为_hdfs_:

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

Start the HDFS NameNode with the following command on the designated node as_hdfs_:

在指定的节点上使用以下命令启动HDFS NameNode作为_hdfs_:

[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start namenode

Start a HDFS DataNode with the following command on each designated node as_hdfs_:

在每个指定节点上使用以下命令启动一个HDFS DataNode,作为_hdfs_:

[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon start datanode

Ifetc/hadoop/workersand ssh trusted access is configured (seeSingle Node Setup), all of the HDFS processes can be started with a utility script. As_hdfs_:

如果etc/hadoop/workers和ssh可信访问已配置(参见单节点设置),那么所有的HDFS进程都可以使用一个通用脚本启动_hdfs_:

[hdfs]$ $HADOOP_HOME/sbin/start-dfs.sh

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

用下面的命令启动YARN,在指定的ResourceManager上运行YARN:

[yarn]$ $HADOOP_HOME/bin/yarn --daemon start resourcemanager

Run a script to start a NodeManager on each designated host as_yarn_:

运行一个脚本,在每个指定的主机上启动一个NodeManager作为_yarn_:

[yarn]$ $HADOOP_HOME/bin/yarn --daemon 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:

启动一个独立的WebAppProxy服务器。作为运行在WebAppProxy服务器上的_yarn_。如果在负载均衡中使用多个服务器,则应该在每个服务器上运行:

[yarn]$ $HADOOP_HOME/bin/yarn --daemon start proxyserver

Ifetc/hadoop/workersand ssh trusted access is configured (seeSingle Node Setup), all of the YARN processes can be started with a utility script. As_yarn_:

如果etc/hadoop/workers和ssh可信访问被配置(参见单节点设置),那么所有的线程进程都可以从一个通用脚本开始_yarn_。

[yarn]$ $HADOOP_HOME/sbin/start-yarn.sh

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

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

[mapred]$ $HADOOP_HOME/bin/mapred --daemon start historyserver

Hadoop关闭

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

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

[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon stop namenode

Run a script to stop a DataNode as_hdfs_:

运行一个脚本来停止hdfs的DataNode。

[hdfs]$ $HADOOP_HOME/bin/hdfs --daemon stop datanode

Ifetc/hadoop/workersand ssh trusted access is configured (seeSingle Node Setup), all of the HDFS processes may be stopped with a utility script. As_hdfs_:

如果etc/hadoop/workers和ssh可信访问被配置(参见单节点设置),那么所有的HDFS进程都可以用一个通用脚本停hdfs:

[hdfs]$ $HADOOP_HOME/sbin/stop-dfs.sh

Stop the ResourceManager with the following command, run on the designated ResourceManager as_yarn_:

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

[yarn]$ $HADOOP_HOME/bin/yarn --daemon stop resourcemanager

Run a script to stop a NodeManager on a worker as_yarn_:

运行一个脚本,以停止_yarn_的NodeManager工作:

[yarn]$ $HADOOP_HOME/bin/yarn --daemon stop nodemanager

Ifetc/hadoop/workersand ssh trusted access is configured (seeSingle Node Setup), all of the YARN processes can be stopped with a utility script. As_yarn_:

如果etc/hadoop/workers和ssh可信访问被配置(参见单节点设置),那么所有的_yarn_进程都可以用一个通用脚本停止:

[yarn]$ $HADOOP_HOME/sbin/stop-yarn.sh

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:

停止WebAppProxy服务。运行在WebAppProxy服务上的_yarn_。如果在负载均衡中使用多个服务,则应该在每个服务器上运行停止WebAppProxy服务:

[yarn]$ $HADOOP_HOME/bin/yarn stop proxyserver

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

使用以下命令停止在指定的服务上运行mapred的MapReduce JobHistory服务:

[mapred]$ $HADOOP_HOME/bin/mapred --daemon stop historyserver

Web界面

Once the Hadoop cluster is up and running check the web-ui of the components as described below:

如果Hadoop集群启动并运行web ui组件进行检查,其如下所述:

守护进程

Web 界面

说明

NameNode

http://nn_host:port/

默认HTTP端口为9870

ResourceManager

http://rm_host:port/

默认HTTP端口为 8088

MapReduce JobHistory Server

http://jhs_host:port/

默认HTTP端口为 19888

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值