官方文档:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml
core-default.xml与core-site.xml的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值
| 属性 | 值 | 说明 |
|---|---|---|
| fs.default.name | hdfs://??? | 定义master的URI和端口 |
| hadoop.tmp.dir | /??? | 临时文件夹,指定后需将使用到的所有子级文件夹都要手动创建出来,否则无法正常启动服务。 |
hdfs-site.xml参数配置详情
| 属性 | 值 | 说明 |
|---|---|---|
| dfs.replication | ??? | hdfs数据块的复制份数,默认3,理论上份数越多跑数速度越快,但是需要的存储空间也更多。 |
| dfs.namenode.name.dir | file:/usr/hadoop/hadoop-2.7.3/hdfs/??? | NN所使用的元数据保存 |
| dfs.datanode.data.dir | file:/usr/hadoop/hadoop-2.7.3/hdfs/??? | 真正的datanode数据保存路径,可以写多块硬盘,逗号分隔 |
yarn-site.xml参数配置详情
| 属性 | 值 | 说明 |
|---|---|---|
| yarn.resourcemanager.admin.address | ${yarn.resourcemanager.hostname}:18141 | ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。 |
| yarn.nodemanager.aux-services | mapreduce_shuffle | NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 |
mapred-site.xml参数配置详情
| 属性 | 值 | 说明 |
|---|---|---|
| mapreduce.framework.name | yarn | 指定MR运行框架,默认为local |
Hadoop是由Java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。
- HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
- MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
| 配置文件 | 配置对象 | 主要内容 |
|---|---|---|
| hadoop-env.sh | hadoop运行环境 | 用来定义Hadoop运行环境相关的配置信息; |
| core-site.xml | 集群全局参数 | 定义系统级别的参数,包括HDFS URL、Hadoop临时目录等; |
| hdfs-site.xml | HDFS参数 | 定义名称节点、数据节点的存放位置、文本副本的个数、文件读取权限等; |
| mapred-site.xml | MapReduce参数 | 包括JobHistory Server 和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等; |
| yarn-site.xml | 集群资源管理系统参数 | 配置ResourceManager ,nodeManager的通信端口,web监控端口等; |
Hadoop的配置类是由资源指定的,资源可以由一个String或Path来指定,资源以XML形式的数据表示,由一系列的键值对组成。资源可以用String或path命名(示例如下),
- String:指示hadoop在classpath中查找该资源;
- Path:指示hadoop在本地文件系统中查找该资源。
fs.default.name ????
2. 常用属性解析@Author:懒羊羊
1.core-site.xml参数
| 配置参数 | 说明 |
|---|---|
| fs.default.name | 用于指定NameNode的地址 |
| hadoop.tmp.dir | Hadoop运行时产生文件的临时存储目录 |
2.hdfs-site.xml
| 配置参数 | 说明 |
|---|---|
| dfs.replication | 用于指定NameNode的地址 |
| dfs.namenode.name.dir | NameNode在本地文件系统中持久存储命名空间和事务日志的路径 |
| dfs.datanode.data.dir | DataNode在本地文件系统中存放块的路径 |
| dfs.permissions | 集群权限系统校验 |
| dfs.datanode.use.datanode.hostname | datanode之间通过域名方式通信 |
注意:外域机器通信需要用外网IP,未配置hostname访问会访问异常。可以在Java api客户端使用conf.set("fs.client.use.datanode.hostname","true");。
3.mapreduce-site.xml
| 配置参数 | 说明 |
|---|---|
| mapreduce.framework.name | 指定执行MapReduce作业的运行时框架。属性值可以是local,classic或yarn。 |
4.yarn-site.xml
| 配置参数 | 说明 |
|---|---|
| yarn.resourcemanager.admin.address | 用于指定RM管理界面的地址(主机:端口) |
| yarn.nodemanager.aux-services | mapreduce 获取数据的方式,指定在进行mapreduce作业时,yarn使用mapreduce_shuffle混洗技术。这个混洗技术是hadoop的一个核心技术,非常重要。 |
| yarn.nodemanager.auxservices.mapreduce.shuffle.class | 用于指定混洗技术对应的字节码文件,值为org.apache.hadoop.mapred.ShuffleHandler |
3. 配置文件编写 3.1 hadoop-env.sh@Author:懒羊羊
用于定义hadoop运行环境相关的配置信息,比如配置JAVA_HOME环境变量、为hadoop的JVM指定特定的选项、指定日志文件所在的目录路径以及master和slave文件的位置等
一般存放于二级/etc/hadoop下
# JAVA_HOME环境变量 echo export JAVA_HOME=JAVA文件存放目录 >> hadoop-env.sh3.2 core-site.xml
完全分布式用于定义系统级别的参数,指定HDFS上NN地址为master,端口9000,如HDFS URL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等,此中的参数定义会覆盖core-default.xml文件中的默认配置;
HA高可用fs.default.name hdfs://master:9000 hadoop.tmp.dir /usr/hadoop/hadoop-2.7.3/hdfs/tmp A base for other tempory directories io.file.buffer.size 131072 4096 流文件的缓冲区为4K fs.checkpoint.period 60 fs.checkpoint.size 67108864
3.3 hdfs-site.xmlfs.defaultFS hdfs://hacluster hadoop.tmp.dir /root/hadoopData/tmp io.file.buffer.size 4096 ha.zookeeper.quorum master:2181,slave1:2181,slave2:2181
完全分布式HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等,此中的参数定义会覆盖hdfs-default.xml文件中的默认配置;
HA高可用dfs.replication 2 dfs.namenode.name.dir file:/usr/hadoop/hadoop-2.7.3/hdfs/name true dfs.datanode.data.dir file:/usr/hadoop/hadoop-2.7.3/hdfs/data true dfs.namenode.secondary.http-address master:50090 dfs.webhdfs.enabled true dfs.permissions false dfs.datanode.use.datanode.hostname true
3.4 yarn-site.xml 完全分布式dfs.nameservices hacluster dfs.block.size 134217728 dfs.replication 3 dfs.namenode.name.dir file:/root/hadoopData/name dfs.datanode.data.dir file:/root/hadoopData/data dfs.webhdfs.enabled true dfs.datanode.max.transfer.threads 4096 dfs.ha.namenodes.hacluster nn1,nn2 dfs.namenode.rpc-address.hacluster.nn1 master:9000 dfs.namenode.servicepc-address.hacluster.nn1 master:53310 dfs.namenode.http-address.hacluster.nn1 master:50070 dfs.namenode.rpc-address.hacluster.nn2 slave1:9000 dfs.namenode.servicepc-address.hacluster.nn2 slave1:53310 dfs.namenode.http-address.hacluster.nn2 slave1:50070 dfs.namenode.shared.edits.dir qjournal://master:8485;slave1:8485;slave1:8485/hacluster dfs.journalnode.edits.dir /opt/software/hadoop-2.7.7/dfs/journalnode_data dfs.namenode.edits.dir /opt/software/hadoop-2.7.7/dfs/edits dfs.ha.automatic-failover.enabled true dfs.client.failover.proxy.provider.hacluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence shell(true) dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.permissions false dfs.datanode.use.datanode.hostname true
HA高可用yarn.resourcemanager.address master:18040 yarn.resourcemanager.scheduler.address master:18030 yarn.resourcemanager.webapp.address master:18088 yarn.resourcemanager.resource-tracker.address master:18025 yarn.resourcemanager.admin.address master:18141 yarn.nodemanager:aux-services mapreduce_shuffle yarn.nodemanager.auxservices.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler
3.5 mapred-site.xmlyarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id hayarn yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 slave1 yarn.resourcemanager.hostname.rm2 slave2 yarn.resourcemanager.zk-address master:2181,slave1:2181,slave2:2181 yarn.resourcemanager.recovery.enabled true yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore yarn.resourcemanager.hostname slave2 yarn.nodemanager.aux-services mapreduce_shuffle yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 604800
完全分布式HDFS的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等,此中的参数定义会覆盖mapred-default.xml文件中的默认配置;
# 修改文件名 cp mapred-site.xml.template mapred-site.xml
HA高可用mapreduce.framework.name yarn
3.6 mastermapreduce.framework.name yarn mapreduce.jobhistory.address master:10020 mapreduce.jobhistory.webapp.address master:19888 mapreduce.map.cpu.vcores 2 每个MapTask容器申请的核心数;默认1 mapreduce.map.memory.mb 4096 每个Maptask容器申请的内存大小;默认1G mapreduce.map.java.opts -Xmx3072m map使用的JVM的堆大小heapsize;根据单个mapper/reducer容器内存进行调整,heapsize不能大于单个mapper/reducer容器内存值,一般设置为mapreduce.map.memory.mb的85%左右 mapreduce.job.ubertask.enable true mapreduce.reduce.cpu.vcores 2 每个ReduceTask容器申请的核心数;默认1 mapreduce.reduce.memory.mb 8192 Reduce task申请的内存大小 mapreduce.reduce.java.opts -Xmx6144m Reduce阶段的JVM的堆大小;同上
hadoop的secondary-masters主机列表,当启动Hadoop时,其会在当前主机上启动NameNode和JobTracker,然后通过SSH连接此文件中的主机以作为备用NameNode;
echo master > master3.7 slaves
Hadoop集群的slave主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和taskTracker进程;
vim slaves slave1 slave2 ......
4. 更多配置信息@Author:懒羊羊
上述对hadoop的配置,大致可以涵盖日常工作使用,但想作为一名优秀的ha集群管理员,这些事远远不够的,推荐大家熟悉和掌握以下四个文档中十分之八九的配置信息,这样才能游刃有余的解决大数据集群系统在运行过程中遇到的各类问题。如下给出了ha集群全部配置信息方法获取:
4.1 官方文档通过hadoop官方网址查询,网址如下:
core-site.xml
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml
hdfs-site.xml
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
yarn-site.xml
http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
mapred-site.xml
http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
通过上述网址,可以了解到最新的 hadoop 文件配置信息,其中也包含了一些过时的定义标识,通过阅读使用应该会更好的提高您的集群维护能力。
4.2 集群工具查询配置好集群后,可以通过http://IP地址:18088/conf,查看集群参数,其中:
- IP地址为yarn.resourcemanager.webapp.address配置项的地址,
- 18088为该配置项设置的端口。
@Author:懒羊羊



