一,目的
如何配置Hadoop集群,如果只是简单的玩玩hadoop(看
Single Node Setup)。该篇不包含Hadoop的一些高级特别,如安全和高可用等。
二,安装
参考:Hadoop之集群安装
三,非安全模式配置Hadoop
hadoop的配置是由下列两种类型的配置文件驱动的:
1,只读默认配置core-default.xml,hdfs-default.xml,yarn-default.xml和mapred-default.xml
2,用户配置:etc/hadoop/core-site.xml, etc/hadoop/hdfs-site.xml, etc/hadoop/yarn-site.xml and etc/hadoop/mapred-site.xml.
此外,还可以通过设置etc/hadoop/hadoop-env.sh 和 etc/hadoop/yarn-env.sh的文件,来设置启动参数,启动的时候将在这两个文件读取启动配置。
HDFS的守护进程有NameNode, SecondaryNameNode, and DataNode,YARN的守护进程有ResourceManager, NodeManager, and 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 |
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 |
例如,让NameNode使用parallelGC,可以在hadoop-env.sh增加下列一行:
export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC"
etc/hadoop/hadoop-env.sh文件中,其他的配置参数,可以自定义的有:
HADOOP_PID_DIR - 守护进程ID文件的存放路径
HADOOP_LOG_DIR - 守护进程LOG文件的存放路径,如果文件不存在,则自动创建。
HADOOP_HEAPSIZE / YARN_HEAPSIZE - 堆可以使用最大值,单位是MB,这是 用来配置堆守护进程的大小的,默认是1000,如果你想要配置的值不一样,可以在每台机器上都配置。
大多数情况下,你应该指定HADOOP_PID_DIR 和 HADOOP_LOG_DIR 目录,默认是在/tmp目录,/tmp目录通常来说是任何人都可以访问的,最好只能由启动Hadoop守护进程的用户写,否则会存在被攻击的可能。
守护进程
环境变量
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 URI |
hdfs://host:port/ |
io.file.buffer.size |
131072 |
在SequenceFiles读写文件的缓冲区大小。 |
etc/hadoop/hdfs-site.xml :
配置NameNode:
参数
值
描述
dfs.namenode.name.dir
|
NameNode在本地文件系统什么路径存放namespace和事务日志信息。 |
如果这是一个逗号分隔的目录列表,那么会把namespace和事务日志的信息复制到所有的目录中去,以进行冗余。 |
dfs.hosts /dfs.hosts.exclude
|
被允许和被排除的DataNode列表 |
如果有必要,通过设置哪些是可用的DataNode,哪些是排除在外的DataNode。 |
dfs.blocksize
|
268435456 |
HDFS文件系统中,块的大小 |
dfs.namenode.handler.count
|
100 |
创建多少NameNode服务线程去处理众多的DataNode的RPC请求 |
配置DataNode:
参数
值
描述
dfs.datanode.data.dir
|
用逗号分隔的本地系统文件路径,DataNode块就存放于此。 |
如果是一个用逗号分隔的目录,那么数据将存放在所有的目录中,通常是不同的硬件。比如多块硬盘。 |
etc/hadoop/yarn-site.xml:
配置 ResourceManager and NodeManager:
参数
值
描述
yarn.acl.enable
|
true /false
|
是否启用ACLs? 默认为FALSE. |
yarn.admin.acl
|
Admin ACL |
|
yarn.log-aggregation-enable
|
false
|
启动或停止日志聚合 |
配置ResourceManager:
Parameter
Value
Notes
yarn.resourcemanager.address
|
客户端提交JOB到ResourceManager 的host:port |
如果没有设置,默认使用yarn.resourcemanager.hostname 的hostname |
yarn.resourcemanager.scheduler.address
|
|
ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。 |
yarn.resourcemanager.resource-tracker.address
|
|
ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。 |
yarn.resourcemanager.admin.address
|
|
ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。 |
yarn.resourcemanager.webapp.address
|
ResourceManager web-ui host:port. |
host:portIf set, overrides the hostname set inyarn.resourcemanager.hostname . |
yarn.resourcemanager.hostname
|
ResourceManager的 host. |
ResourceManager地址 |
yarn.resourcemanager.scheduler.class
|
ResourceManager Scheduler class. |
CapacityScheduler (推荐),FairScheduler (推荐),
orFifoScheduler
|
yarn.scheduler.minimum-allocation-mb
|
ResourceManager分配给每个Container内存的最小限制 |
In MBs |
yarn.scheduler.maximum-allocation-mb
|
ResourceManager分配给每个Container内存的最大限制 |
In MBs |
yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-path
|
包含和排除的NodeManagers列表 |
如果有必要,使用这些文件来控制允许nodemanagers列表。 |
- Configurations for NodeManager:
Parameter
Value
Notes
yarn.nodemanager.resource.memory-mb
|
给NodeManager可用的物理内存。 |
定义在NodeManager总共有多少资源(内存)用来运行Containers |
yarn.nodemanager.vmem-pmem-ratio
|
每个任务使用的虚拟内存最大可以超过物理内存的比率。 |
每个任务使用的虚拟内存最大可以超过物理内存的比率。通过对单个nodemanager任务使用的虚拟内存总量可能超过物理内存使用的比率。 |
yarn.nodemanager.local-dirs
|
写入中间数据的本地文件路径列表,用逗号分隔。 |
多目录增加硬盘IO性能 |
yarn.nodemanager.log-dirs
|
写入日志的本地文件路径列表,用逗号分隔。 |
多目录增加硬盘IO性能 |
yarn.nodemanager.log.retain-seconds
|
10800
|
如果日志聚合没有启动的话,在NameManager上保留日志文件的时间。 |
yarn.nodemanager.remote-app-log-dir
|
/logs
|
应用程序运行完成之后,应用程序的日志将移动到HDFS的目录,这里需要设置适当的权限,仅仅在log-aggregation设置成启用。 |
yarn.nodemanager.remote-app-log-dir-suffix
|
logs
|
追加到远程日志目录的后缀,日志将聚合到${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam} ,如果log-aggregation设置成启用的话. |
yarn.nodemanager.aux-services
|
mapreduce_shuffle |
Shuffle service 需要加以设置的Map Reduce的应用程序服务。 |
History Server配置 (Needs to be moved elsewhere):
Parameter
Value
Notes
yarn.log-aggregation.retain-seconds
|
-1
|
聚合日志在删除前保存多长时间,-1为禁用,不过这个值不能设置的太小。 |
yarn.log-aggregation.retain-check-interval-seconds
|
-1
|
检查聚合日志的保存时间,如果设置为0或者负数,那么这个值将被设置为聚合日志保留时间的1/10,不过这个值不能设置的太小。 |
etc/hadoop/mapred-site.xml:
配置MapReduce应用程序:
Parameter
Value
Notes
mapreduce.framework.name
|
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 |
在reduce拷贝(shffle)阶段,启动多少个并行传输线程 |
配置MapReduce JobHistory:
Parameter
Value
Notes
mapreduce.jobhistory.address
|
MapReduce JobHistory服务的host:port
|
默认端口是10020. |
mapreduce.jobhistory.webapp.address
|
MapReduce JobHistory 服务 Web UIhost:port
|
默认端口是19888. |
mapreduce.jobhistory.intermediate-done-dir
|
/mr-history/tmp |
MapReduce JOB写的历史文件路径 |
mapreduce.jobhistory.done-dir
|
/mr-history/done |
MR JobHistory服务管理的历史文件路径 |
六,监控NodeManager的健康状况
Hadoop提供了一种机制,管理员可以配置nodemanager运行提供脚本定期确定一个节点是否健康。
管理员可以通过在脚本中执行检查来判断该节点是否处于健康状态。如果脚本检查到节点不健康,可以打印一个标准的错误输出。NodeManager通过一些脚本定期检查他的输出,如果脚本输出有错误信息,如上所述,该节点将报告为不健康,就将节点加入到ResourceManager的黑名单列表中,则任务不会分配到该节点中。然后NodeManager继续跑这个脚本,所以如果Node节点变为健康了,将自动的从ResourceManager的黑名单列表删除,节点的健康状况随着脚本的输出,如果变为不健康,在ResourceManager
web 接口上对管理员来说是可用的。这个时候节点的健康状况不会显示在web接口上。
在etc/hadoop/yarn-site.xml下,可以控制节点的健康检查脚本
Parameter
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 |
运行健康脚本的时间间隔 |
yarn.nodemanager.health-checker.script.timeout-ms
|
Node health script timeout interval |
健康脚本的执行超时时间 |
如果只是本地硬盘坏了,健康检查脚本将不会设置该节点不健康。但是NodeManager有能力来定期检查本地磁盘的健康(检查nodemanager-local-dirs 和 nodemanager-log-dirs两个目录),当达到yarn.nodemanager.disk-health-checker.min-healthy-disks设置的阀值,则整个节点将标记为不健康。
七,Slaves File
所有Slave的hostname或者IP都保存在etc/hadoop/slaves文件中,每行一个。脚本可以通过etc/hadoop/slaves文件去运行多台机器的命令。他不使用任何基于java的hadoop配置。为了使用这个功能,ssh必须建立好使用账户才能运行hadoop。所以在安装hadoop的时候,需要配置SSH登陆。
八,Hadoop机架感知
很多hadoop组件得益于机架感知,给性能和安全性带来了很大的提升,Hadoop的守护进程调用管理配置的模块,获取到集群Slave的机架信息,更多的机架感知信息,查看这里
使用HDFS,高度推荐使用机架感知。
九,日志
Hadoop使用Log4j作为日志框架,编辑etc/hadoop/log4j.properties文件来自定义日志的配置。
十,运行hadoop集群
所有配置都完成了,就可以启动hadoop集群了,分发配置文件到所有机器,所有机器安装Hadoop目录的路径应该是一样的。
分享到:
相关推荐
Hadoop_Hadoop集群(第7期)_Eclipse开发环境设置 Hadoop_Hadoop集群(第8期)_HDFS初探之旅 Hadoop_Hadoop集群(第9期)_MapReduce初级案例 Hadoop_Hadoop集群(第10期)_MySQL关系数据库 Web(Json-Lib类库使用...
最后,需要关闭防火墙和SELinux,以确保Hadoop集群的正常运行。 二、 安装准备工作 在安装Hadoop之前,需要进行一些准备工作。首先,需要关闭防火墙,以免防火墙干扰Hadoop集群的通信。其次,需要修改SELinux的配置...
- 此外,Hadoop集群搭建还涉及到了其他组件的安装,例如Hive、HBase、Spark、MongoDB等,它们各自有不同的安装步骤和配置需求。 2. Hadoop集群配置文件修改: - 核心配置文件core-site.xml:涉及到Hadoop临时文件...
部署全分布模式Hadoop集群 实验报告一、实验目的 1. 熟练掌握 Linux 基本命令。 2. 掌握静态 IP 地址的配置、主机名和域名映射的修改。 3. 掌握 Linux 环境下 Java 的安装、环境变量的配置、Java 基本命令的使用。 ...
hadoop 3.2.4集群搭建
在搭建Hadoop集群前,你需要在所有节点上安装这个JDK,并配置好`JAVA_HOME`环境变量,确保Hadoop能够找到Java环境。 接下来,我们来看`hadoop-2.7.5.tar.gz`,这是Apache Hadoop 2.7.5的源代码压缩包。Hadoop是一个...
Hadoop分布式集群配置是大数据处理的关键步骤之一,本指南将指导读者成功配置一个由5台计算机构成的Hadoop集群,并成功运行wordcount处理大型数据(大于50G)。 一、Hadoop集群架构简介 Hadoop集群由一个Master...
hadoop搭建集群笔记.虚拟机搭建hadoop集群
测试Hadoop集群的功能,包括HDFS、MapReduce任务执行等。 #### 三、HA配置 在基础集群配置的基础上,增加HA(High Availability)支持,确保集群的高可用性。 ##### 3.1 上传、解压 同集群配置部分。 ##### 3.2...
Hadoop 集群部署操作 Hadoop 集群部署操作是指规划、安装和配置 Hadoop 集群的整个过程,以便在生产环境中运行 Hadoop 应用程序。下面是 Hadoop 集群部署操作的详细知识点: 规划 Hadoop 集群 * 规划主机名:...
除此之外,还需要配置SSH免密登录,以便Hadoop集群节点之间无密码通信。 2. 配置Hadoop的配置文件:这是搭建Hadoop伪集群的关键步骤。主要包括以下配置文件的编辑: - `hadoop-env.sh`:指定Java的安装路径,例如...
本文根据实际的操作,详细的讲解了hadoop2.7.0集群的搭建过程
"Hadoop集群安装笔记" Hadoop集群安装笔记是一篇详细的安装指南,旨在帮助新手快速搭建Hadoop学习环境。以下是该笔记中的重要知识点: Hadoop集群安装目录 在安装Hadoop集群之前,需要准备好安装环境。安装环境...
HadoopHA集群 批量启动脚本HadoopHA集群 批量启动脚本HadoopHA集群 批量启动脚本HadoopHA集群 批量启动脚本
本篇将详细讲解如何利用Ansible自动安装Hadoop集群。 首先,理解Ansible的工作原理至关重要。Ansible基于SSH(Secure Shell)协议,无需在目标节点上安装任何代理,通过控制节点即可实现远程管理。它使用YAML格式的...
详细介绍了单机搭建hadoop伪集群的全部步骤,希望对大家有帮助
对于初次接触Hadoop集群搭建的学习者来说,本指南将提供一个全面且易于理解的过程。 ### 一、准备工作 #### 1. 修改主机名 在部署Hadoop集群之前,首先需要确保每台服务器都具有唯一的主机名。这可以通过编辑 `/...
最近要在公司里搭建一个hadoop测试集群,于是采用docker来快速部署hadoop集群。 0. 写在前面 网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程。 目标:使用docker搭建一个一主两从三台机器...