hadoop入门手册1:hadoop【2.7.1】【多节点】集群配置【必知配置知识1】
问题导读
1.说说你对集群配置的认识?
2.集群配置的配置项你了解多少?
3.下面内容让你对集群的配置有了什么新的认识?
目的
目的1:
这个文档描述了如何安装配置hadoop集群,从几个节点到上千节点。为了学习hadoop,你可能先从单节点入手 (查看 Single Node Setup).这里有中文版hadoop2.7【单节点】单机、伪分布、分布式安装指导
http://www.aboutyun.com/thread-12798-1-1.html
这个文档不包括:hadoop在安全模式下配置和HA【高可用配置】,后面在更新
目的2:
我们看了很多集群配置文档,你是否静下心来,想集群配置到底是怎么一回事。
准备
1.安装Java
2.下载hadoop包
##################################
包集合:
hadoop家族、strom、spark、Linux、flume等jar包、安装包汇总下载(持续更新)
http://www.aboutyun.com/thread-8178-1-1.html
##################################
安装
安装hadoop集群包括:解压包,配置hadoop,划分主节点和子节点。
集群中可以将namenode和ResourceManager分布在不同的机器上,这些称之为master。其它服务例如:Web App Proxy Server 和 MapReduce Job History server,根据负载可以共享设施或则使用专用的机器。
集群其它机器作为 DataNode 和 NodeManager.这些是slaves
配置hadoop【非安全模式】
hadoop配置文件被分为两类:
1.只读默认配置,有下列配置文件
core-default.xml, hdfs-default.xml, yarn-default.xml and 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.
另外你可以配置hadoop脚本,在hadoop的bin目录下,通过 etc/hadoop/hadoop-env.sh 和 etc/hadoop/yarn-env.sh来指定值。
配置hadoop集群需要配置环境变量,Hadoop守护进程执行以及Hadoop守护进程的配置参数。如果没有配置过集群,可能对这个了解不多,具体参考
hadoop(2.x)以hadoop2.2为例完全分布式最新高可靠安装文档
http://www.aboutyun.com/thread-7684-1-1.html
hdfs守护进程:
NameNode, SecondaryNameNode, 和 DataNode
YARN 守护进程:
ResourceManager, NodeManager, 和 WebAppProxy
如果运行MapReduce , MapReduce Job History Server也会运行。前提需要配置并开启。对于比较大的集群安装,他们分别运行在不同的客户端。
配置守护进程环境变量
管理员使用 etc/hadoop/hadoop-env.sh , etc/hadoop/mapred-env.sh 和 etc/hadoop/yarn-env.sh 脚本来定制hadoop守护进程变量。
至少需要需要指定JAVA_HOME ,每个节点都必须指定。
管理员可以配置单独的守护进程,使用下面的选项。
Daemon
|
Environment Variable
|
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 声明如下:
1
|
export HADOOP_NAMENODE_OPTS= "-XX:+UseParallelGC" |
查看 etc/hadoop/hadoop-env.sh 其它例子
其它可定义的有用参数包括
- HADOOP_PID_DIR - 存储守护进程id的文件目录.
- HADOOP_LOG_DIR - 存储守护进程日志文件目录. 日志文件自动创建如果不存在。
- HADOOP_HEAPSIZE / YARN_HEAPSIZE -heapsize内存最大配置.如果变量为1000, heap 是1000MB. 这是为守护进程配置heap. 默认值1000M.
在大多数情况下,应该指定HADOOP_PID_DIR 和 HADOOP_LOG_DIR,他们由用户运行hadoop守护进程所写,否则可能是潜在攻击。
传统配置HADOOP_PREFIX 在系统级环境变量配置,例如一个简单的脚本 /etc/profile.d:
1
2
|
HADOOP_PREFIX= /path/to/hadoop export HADOOP_PREFIX |
Daemon
|
Environment Variable
|
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
Parameter
|
Value
|
Notes
|
fs.defaultFS
|
NameNode URI
|
|
io.file.buffer.size
|
131072
|
读写序列文件缓存大小
|
- etc/hadoop/hdfs-site.xml
- 配置NameNode:
Parameter
|
Value
|
Notes
|
dfs.namenode.name.dir
|
本地文件系统存储着命令空间和操作日志
|
如果含有多个目录,是冗余的【多个目录以逗号隔开】
|
dfs.hosts / dfs.hosts.exclude
|
列出排除DataNodes.
|
如何需要使用这一功能来控制datanode的访问
|
dfs.blocksize
|
268435456
|
大文件系统HDFS blocksize 256MB
|
dfs.namenode.handler.count
|
100
|
更多 NameNode server 线程来处理来自datanode的 RPCs请求
|
- 配置 DataNode:
Parameter
|
Value
|
Notes
|
dfs.datanode.data.dir
|
存储blocks的本地路径列表,用逗号隔开
|
这是一个逗号分隔的目录列表, 数据将被存储在所有被命名的目录中,通常在不同的设备上。
|
- etc/hadoop/yarn-site.xml
- 配置ResourceManager 和 NodeManager:
Parameter
|
Value
|
Notes
|
yarn.acl.enable
|
true / false
|
是否启用ACLs,默认为false不启用
|
yarn.admin.acl
|
Admin ACL
|
admin.acl设置YARN的集群管理员,. 值为*表示任何人都可以. 仅指定的可以访问
|
yarn.log-aggregation-enable
|
false
|
配置启用或则禁用日志
|
- 配置ResourceManager:
Parameter
|
Value
|
Notes
|
yarn.resourcemanager.address
|
ResourceManager host:port 为客户端提交job.
|
如果配置host:port , 会覆盖在yarn.resourcemanager.hostname 设置的 hostname
|
yarn.resourcemanager.scheduler.address
|
ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。
|
如果配置host:port , 会覆盖在yarn.resourcemanager.hostname 设置的 hostname
|
yarn.resourcemanager.resource-tracker.address
|
ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。
|
如果配置host:port , 会覆盖在yarn.resourcemanager.hostname 设置的 hostname
|
yarn.resourcemanager.admin.address
|
ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等
|
如果配置host:port , 会覆盖在yarn.resourcemanager.hostname 设置的 hostname
|
yarn.resourcemanager.webapp.address
|
ResourceManager web-ui host:port(ResourceManager访问端口)
|
如果配置host:port , 会覆盖在yarn.resourcemanager.hostname 设置的 hostname
|
yarn.resourcemanager.hostname
|
ResourceManager 客户端.
|
host Single hostname that can be set in place of setting all yarn.resourcemanager*address resources. Results in default ports for ResourceManager components.
|
yarn.resourcemanager.scheduler.class
|
ResourceManager 调度类 .
|
CapacityScheduler (recommended), FairScheduler (also recommended), or FifoScheduler
|
yarn.scheduler.minimum-allocation-mb
|
单个container可申请的最小内存资源量。比如设置为1024,则运行MapRedce作业时,每个Task最少可申请1024MB内存
|
In MBs
|
yarn.scheduler.maximum-allocation-mb
|
单个container可申请的最大内存资源量。比如设置为3072,则运行MapRedce作业时,每个Task最多可申请3072MB内存。
|
In MBs
|
yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-path
|
NodeManager黑白名单。
|
NodeManager黑白名单。如果发现若干个NodeManager存在问题,比如故障率很高,任务运行失败率高,则可以将之加入黑名单中。注意,这两个配置参数可以动态生效。(调用一个refresh命令即可)
默认值:“”
|
- 配置 NodeManager:
Parameter
|
Value
|
Notes
|
yarn.nodemanager.resource.memory-mb
|
NodeManager总的可用物理内存。
|
定义了资源总量的nodemanager可用运行containers
|
yarn.nodemanager.vmem-pmem-ratio
|
每使用1MB物理内存,最多可用的虚拟内存数。
|
每个任务的虚拟内存的使用可能会超过其物理内存的限制,这个比例。通过对nodemanager任务使用的虚拟内存总量可能超过物理内存使用的比率。
|
yarn.nodemanager.local-dirs
|
中间结果存放位置
|
这个参数通常会配置多个目录,分摊磁盘IO负载。
|
yarn.nodemanager.log-dirs
|
日志存放路径
|
这个参数通常会配置多个目录,分摊磁盘IO负载。
|
yarn.nodemanager.log.retain-seconds
|
10800
|
NodeManager上日志最多存放时间(不启用日志聚集功能时有效)。
|
yarn.nodemanager.remote-app-log-dir
|
/logs
|
当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)。
|
yarn.nodemanager.remote-app-log-dir-suffix
|
logs
|
远程日志目录子目录名称(启用日志聚集功能时有效)。
|
yarn.nodemanager.aux-services
|
mapreduce_shuffle
|
NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序.
|
- 配置 History Server (Needs to be moved elsewhere):
Parameter
|
Value
|
Notes
|
yarn.log-aggregation.retain-seconds
|
-1
|
参数解释:在HDFS上聚集的日志最多保存多长时间。
默认值:-1
|
yarn.log-aggregation.retain-check-interval-seconds
|
-1
|
参数解释:多长时间检查一次日志,并将满足条件的删除,如果是0或者负数,则为上一个值的1/10。
默认值:-1
|
- etc/hadoop/mapred-site.xml
- 配置MapReduce Applications:
mapreduce.map.memory.mb
mapreduce.reduce.memory.mb
说明:这两个参数指定用于MapReduce的两个任务(Map and Reduce task)的内存大小,其值应该在RM中的最大最小container之间。如果没有配置则通过如下简单公式获得:
max(MIN_CONTAINER_SIZE, (Total Available RAM) / containers))
一般的reduce应该是map的2倍。注:这两个值可以在应用启动时通过参数改变;
mapreduce.map.java.opts
mapreduce.reduce.java.opts
说明:这两个参主要是为需要运行JVM程序(java、scala等)准备的,通过这两个设置可以向JVM中传递参数的,与内存有关的是,-Xmx,-Xms等选项。此数值大小,应该在AM中的map.mb和reduce.mb之间。
Parameter
|
Value
|
Notes
|
mapreduce.framework.name
|
yarn
|
执行框架设置为Hadoop YARN.
|
mapreduce.map.memory.mb
|
1536
|
maps资源限制
|
mapreduce.map.java.opts
|
-Xmx1024M
|
maps的child jvms heap-size
|
mapreduce.reduce.memory.mb
|
3072
|
reduces资源限制
|
mapreduce.reduce.java.opts
|
-Xmx2560M
|
reduces的child jvms heap-size
|
mapreduce.task.io.sort.mb
|
512
|
任务内部排序缓冲区大小
|
mapreduce.task.io.sort.factor
|
100
|
排序文件的时候一次同时最多可并流的个数,这里设置100。
|
mapreduce.reduce.shuffle.parallelcopies
|
50
|
reuduce shuffle阶段并行传输数据的数量。
|
- 配置MapReduce JobHistory Server:
Parameter
|
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
|
/mr-history/tmp
|
MapReduce作业产生的日志存放位置。
|
mapreduce.jobhistory.done-dir
|
/mr-history/done
|
MR JobHistory Server管理的日志的存放位置。
|
相关内容
hadoop入门手册1:hadoop【2.7.1】【多节点】集群配置【必知配置知识1】
hadoop入门手册2:hadoop【2.7.1】【多节点】集群配置【必知配置知识2】
hadoop入门手册3:Hadoop【2.7.1】初级入门之命令指南
hadoop入门手册4:Hadoop【2.7.1】初级入门之命令:文件系统shell1
hadoop入门手册5:Hadoop【2.7.1】初级入门之命令:文件系统shell2
hadoop2.X使用手册1:通过web端口查看主节点、slave1节点及集群运行状态
http://www.aboutyun.com/thread-7712-1-1.html
hadoop入门手册1:hadoop【2.7.1】【多节点】集群配置【必知配置知识1】的更多相关文章
- hadoop入门手册5:Hadoop【2.7.1】初级入门之命令:文件系统shell2
问题导读 1.改变hdfs文件的权限,需要修改哪个配置文件?2.获取一个文件的或则目录的权限,哪个命令可以实现?3.哪个命令可以实现设置访问控制列表(ACL)的文件和目录? 接上篇:Hadoop[2. ...
- hadoop入门手册4:Hadoop【2.7.1】初级入门之命令:文件系统shell1
问题导读1.Hadoop文件系统shell与Linux shell有哪些相似之处?2.如何改变文件所属组?3.如何改变hdfs的文件权限?4.如何查找hdfs文件,并且不区分大小写? 概述文件系统 ( ...
- hadoop入门手册3:Hadoop【2.7.1】初级入门之命令指南
问题导读1.hadoop daemonlog管理员命令的作用是什么?2.hadoop如何运行一个类,如何运行一个jar包?3.hadoop archive的作用是什么? 概述 hadoop命令被bin ...
- hadoop入门手册2:hadoop【2.7.1】【多节点】集群配置【必知配置知识2】
问题导读 1.如何实现检测NodeManagers健康?2.配置ssh互信的作用是什么?3.启动.停止hdfs有哪些方式? 上篇: hadoop[2.7.1][多节点]集群配置[必知配置知识1]htt ...
- Hadoop多节点集群安装配置
目录: 1.集群部署介绍 1.1 Hadoop简介 1.2 环境说明 1.3 环境配置 1.4 所需软件 2.SSH无密码验证配置 2.1 SSH基本原理和用法 2.2 配置Master无密码登录所有 ...
- 一步步教你Hadoop多节点集群安装配置
1.集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统HDFS(Hadoop Distributed Filesys ...
- Hadoop 2.6.4单节点集群配置
1.安装配置步骤 # wget http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.rpm # rpm -i ...
- Linux下Hadoop集群环境的安装配置
1)安装Ubuntu或其他Linux系统: a)为减少错误,集群中的主机最好安装同一版本的Linux系统,我的是Ubuntu12.04. b)每个主机的登陆用户名也最好都一样,比如都是hadoop,不 ...
- 学习Hadoop+Spark大数据巨量分析与机器学习整合开发-windows利用虚拟机实现模拟多节点集群构建
记录学习<Hadoop+Spark大数据巨量分析与机器学习整合开发>这本书. 第五章 Hadoop Multi Node Cluster windows利用虚拟机实现模拟多节点集群构建 5 ...
随机推荐
- poj 2255 Tree Recovery 分治
Tree Recovery Description Little Valentine liked playing with binary trees very much. Her favorite g ...
- 关于 Token,你应该知道的十件事
转自:http://ju.outofmemory.cn/entry/134189 原文是一篇很好的讲述 Token 在 Web 应用中使用的文章,而这是我和 Special 合作翻译的译文. 1. T ...
- [Vue]使用axios实现ajax请求
1.定义myAjax export const myAjax=function createHttpClient(ajaxConfig) { let httpClient = null; if ...
- Django 2.0 的路由如何实现正则表达式
在django2.0的路由系统中,摒弃了1.x中的url,而改用path.需要导入path. from django.urls import path,re_path 在1.x中,使用url()即可实 ...
- Python 使用sys模块
你已经学习了如何在你的程序中定义一次函数而重用代码.如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块.模块基本上就是一个包含了所有你定义的函数和变量的文 ...
- 修改linux系统用户最大线程数限制
linux系统对线程数量有个最大限制,当达到系统限制的最大线程数时使用账号密码ssh到系统时是无法登陆的,会报Write failed: Broken pipe,或者是shell request fa ...
- 十五 web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础
在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块,然后将网页数据通过lxml下的etree转化为treedata的形式 urllib库中使用xpath表 ...
- js鼠标键禁用功能
页面完全禁用右键 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- bzoj3600
题解: 好像是什么替罪羊树 然后看了几个题解 然后就抄了一边 代码: #include<bits/stdc++.h> using namespace std; ; int n,m,rt,R ...
- HDU 5831 Rikka with Parenthesis II (贪心)
Rikka with Parenthesis II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...