`
qianshangding
  • 浏览: 124673 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hadoop之集群设置

 
阅读更多

一,目的

如何配置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 ResourceManagerweb-ui host:port. host:portIf set, overrides the hostname set inyarn.resourcemanager.hostname.
yarn.resourcemanager.hostname ResourceManager的host. ResourceManager地址
yarn.resourcemanager.scheduler.class ResourceManagerScheduler 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集群pdf文档

    Hadoop_Hadoop集群(第7期)_Eclipse开发环境设置 Hadoop_Hadoop集群(第8期)_HDFS初探之旅 Hadoop_Hadoop集群(第9期)_MapReduce初级案例 Hadoop_Hadoop集群(第10期)_MySQL关系数据库 Web(Json-Lib类库使用...

    HadoopHA集群部署、规划HadoopHA集群教学课件.pptx

    规划Hadoop HA 集群 Hadoop HA 集群部署模式 什么是 HA ? HA是High Availability的简写,即高可用,指当前工作中的机器宕机后,会自动处理这个异常,并将工作无缝地转移到其他备用机器上去,以来保证服务的高可用。...

    01 hadoop 3.2.4集群搭建.html

    hadoop 3.2.4集群搭建

    hadoop搭建集群笔记

    hadoop搭建集群笔记.虚拟机搭建hadoop集群

    脚本搭建hadoop集群

    自动化安装hadoop集群 脚本搭建hadoop集群 可以自定义主机名和IP地址 可以自定义安装jdk和hadoop(格式为*tar.gz) 注意事项 1、安装完jdk和hadoop请手动source /etc/profile 刷新环境变量 2测试脚本环境为centOS6,...

    Hadoop集群与安全

    手把手教你配置高效的Hadoop集群,充分利用Hadoop平台的优势。2. 为Hadoop生态系统实现强健的端到端的安全保障。

    hadoop2.6集群配置

    hadoop2.6集群配置,各种HA,可以按照文档,直接上手!

    HadoopHA集群 批量启动脚本

    HadoopHA集群 批量启动脚本HadoopHA集群 批量启动脚本HadoopHA集群 批量启动脚本HadoopHA集群 批量启动脚本

    部署全分布模式Hadoop集群 实验报告

    部署全分布模式Hadoop集群 实验报告一、实验目的 1. 熟练掌握 Linux 基本命令。 2. 掌握静态 IP 地址的配置、主机名和域名映射的修改。 3. 掌握 Linux 环境下 Java 的安装、环境变量的配置、Java 基本命令的使用。 ...

    单机搭建hadoop伪集群

    详细介绍了单机搭建hadoop伪集群的全部步骤,希望对大家有帮助

    hadoop2.7.0集群搭建

    本文根据实际的操作,详细的讲解了hadoop2.7.0集群的搭建过程

    【74】2017最新大数据10个小时快速入门hadoop3集群实战视频教程 .txt

    【74】2017最新大数据10个小时快速入门hadoop3集群实战视频教程 .txt【74】2017最新大数据10个小时快速入门hadoop3集群实战视频教程 .txt【74】2017最新大数据10个小时快速入门hadoop3集群实战视频教程 .txt【74】...

    Ubantu-hadoop2.6.0集群搭建

    Ubantu-hadoop2.6.0集群搭建,详细介绍ubuntu下的hadoop搭建过程

    hadoop2.9 伪集群搭建部署

    hadoop2.9 伪集群安装部署 分析 打通免密登录 Zookeeper 集群搭建 Hadoop 伪集群搭建

    Hadoop集群(1-11期)

    Hadoop集群·Eclipse开发环境设置(第7期) Hadoop集群·HDFS初探之旅(第8期) Hadoop集群·MapReduce初级案例(第9期) Hadoop集群·MySQL关系数据库(第10期) Hadoop集群·常用MySQL数据库命令(第10期副刊) ...

    hadoop集群信息

    搭建高可用的Hadoop集群,基于NFS共享磁盘的namenode配置,使用zookeeper进行主节点推举

    Hadoop集群程序设计与开发

    《Hadoop集群程序设计与开发(数据科学与大数据技术专业系列规划教材)》系统地介绍了基于Hadoop的大数据处理和系统开发相关技术,包括初识Hadoop、Hadoop基础知识、Hadoop开发环境配置与搭建、Hadoop分布式文件系统、...

    Hadoop 分布式集群搭建_部分1.docx

    用户可以轻松地在Hadoop集群上开发和运行处理海量数据的应用程序。Hadoop有高可靠,高扩展,高效性,高容错等优点。Hadoop 框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的...

    Hadoop分布式集群搭建所需安装包资源

    Hadoop分布式集群搭建所需安装包资源 jdk-8u171-linux-x64.tar.gz hadoop-2.7.5.tar.gz

    Hadoop2.2.0集群安装

    本手册主要整理了Hadoop2.2.0的安装,包括QJM实现HA的详细配置,以及Hdfs-site的配置详解。 不包括Hbase、Hive安装

Global site tag (gtag.js) - Google Analytics