hadoop主要包含三个配置文件:core-site.xml,hdfs-site.xml,mapred-site.xml/yarn-site.xml
1 core-site.xml
hadoop.tmp.dir 默认值为/tmp/。尽量手动配置该选项,否则默认都存放在/tmp目录下了,如果系统使多磁盘的,则可以为每个磁盘都设置一个临时目录。这样有利于提高hdfs和mapreduce的IO效率 fs.default.name 默认值为http:///。默认文件系统的名称,不设置则使用本地文件昔日,一般设置为hdfs://namenode:port fs.trash.interval 默认值0。这是hdfs开启垃圾箱功能的选项。值为垃圾箱删除文件的时间。默认单位为分钟。一般建议开启。设置为0,表示关闭垃圾箱 fs.checkpoint.dir 默认值为${hadoop.tmp.dir}/dfs/namesecondary fs.checkpoint.edits.dir secondary namenode检查点存放编辑日志的目录 fs.checkpoint.period 检查点执行周期。默认为3600秒 fs.checkpoint.size 编辑日志的大小。单位:字节。默认为67108864,64M fs.inmemory.size.mb reduce阶段用户合并map输出的内存限制。这里设置200,可根据自身硬件设备进行更改测试。 io.file.buffer.size 默认值4096 SequenceFiles在读写中可以使用的缓存大小,这里设置为131072。它决定了在一次读写操作时有多少数据被缓冲。貌似这个参数在新版本里变为了:file.stream-buffer-size,单位bytes 。 io.bytes.per.checksum 默认值512 默认每512存入Kb的值后就对存入的数据进行CRC32校验。该值必须比io.file.buffer.size小 io.skip.checksum.errors 默认值为false,如果为true,则在checksum时遇到错误,会跳过错误,而不是抛出异常 local.cache.size 保存缓存最大大小。默认为10737418240个字节,即10G hadoop.logfile.size 默认值10000000 hadoop每个日志文件大小的最大值 hadoop.logfile.count 默认值10 日志文件的最大个数2 hdfs-site.xml
dfs.namenode.logging.level 默认值info 输出日志类型 dfs.datanode.address 默认值hostname:50010 datanode节点的TCP服务端口和地址 dfs.datanode.http.address 默认值hostname:50075 datanode节点的HTTP协议访问地址和端口 dfs.datanode.ipc.address 默认值hostname:50020 datanode节点的IPC服务地址和端口 dfs.datanode.handler.count 默认值3 datanode节点的服务连接线程处理数 dfs.http.address 默认值hostname:50070 datanode节点HTTP协议访问地址和端口 dfs.name.dir 默认值${hadoop.tmp.dir}/dfs/name 存储本地namenode节点数据的目录 dfs.blocksize 这个就是hdfs里一个文件块的大小了,默认64M,这里设置134217728,即128M,太大的话会有较少map同时计算,太小的话也浪费可用map个数资源,而且文件太小namenode就浪费内存多。根据需要进行设置。 dfs.permissions.supergroup 默认值hadoop hdfs文件系统的超级用户组 dfs.data.dir 默认值${hadoop.tmp.dir}/dfs/data datanode节点存放数据的目录 dfs.replication 默认值3 默认的块复制数量 dfs.replication.interval 默认值3 namenode节点计算datanode节点复制工作的时间 dfs.block.size 默认值67108864 默认文件块大小为64M dfs.df.interval 默认值60000 磁盘空间统计间隔为6秒 dfs.client.block.write.retries 默认值3 块写入出错时的重试次数 dfs.heartbeat.interval 默认值3 datanode节点的心跳检测时间间隔 dfs.namenode.handler.count hadoop系统里启动的任务线程数,这里改为40,同样可以尝试该值大小对效率的影响变化进行最合适的值的设定。 dfs.datanode.failed.volumes.tolerated 能够导致DN挂掉的坏硬盘最大数,默认0就是只要有1个硬盘坏了,DN就会shutdown。3 mapred-site.xml
hadoop.job.history.location job历史文件保存路径,无可配置参数,也不用写在配置文件里,默认在logs的history文件夹下。 hadoop.job.history.user.location 用户历史文件存放位置 io.sort.factor 排序文件的时候一次同时最多可并流的个数,这里设置100。新版本为mapreduce.task.io.sort.factor。 io.sort.mb 排序内存使用限制,这里设置200m。单位为M,新版本看说明貌似改成了这个mapreduce.task.io.sort.mb。 mapred.job.tracker 链接jobtracker服务的配置项,默认使hostname:port mapred.job.tracker.http.address 默认值hostname:50030 jobtracker的页面服务监听地址 mapred.job.tracker.handler.count 默认15 jobtracker服务的线程数 mapred.local.dir mapred做本地计算数据存储使用的目录,可以配置多个目录,这些目录分布在多个硬盘上 mapred.system.dir mapred存放控制文件所使用的文件夹,可配置多块硬盘,逗号分隔。 mapred.temp.dir mapred共享的临时文件夹路径,解释同上 mapred.local.dir.minspacestart 默认值0G 本地运算文件夹剩余空间低于该值则不在本地做计算。字节配置,默认0 mapred.local.dir.minspacekill 本地计算文件夹剩余空间低于该值则不再申请新的任务,字节数,默认0 mapred.map.tasks 默认值2 默认每个job所使用的map数,意思是假设设置dfs块大小为64M,需要排序一个60M的文件,也会开启2个map线程,当jobtracker设置为本地是不起作用。 mapred.reduce.tasks 默认值1 解释同上 mapred.jobtracker.restart.recover 重启时开启任务恢复,默认false mapred.child.java.opts jvms启动的子线程可以使用的最大内存。改为-Xmx1024m,内存再大也可以继续增加。但是如果一般任务文件小,逻辑不复杂用不了那么多的话太大也浪费。 mapreduce.jobtracker.handler.count JobTracker可以启动的线程数,一般为tasktracker节点的4% mapreduce.reduce.shuffle.parallelcopies reuduce shuffle阶段并行传输数据的并行线程数。这里改为10。集群大可以增大。默认值5 mapreduce.tasktracker.http.threads map和reduce是通过http进行数据传输的,这个是设置传输的并行线程数 mapreduce.map.output.compress map输出是否进行压缩,如果压缩就会多耗cpu,但是减少传输时间,如果不压缩,就需要较多的传输带宽。配合mapreduce.map.output.compress.codec使用,默认是org.apache.hadoop.io.compress.DefaultCodec,可以根据需要设定数据压缩方式。 mapreduce.map.output.compress.codec 输出结果所使用的编解码器,也可以用gz或者bzip2或者lzo或者snappy等 map.sort.class map 输出排序所使用的算法,默认快排 mapreduce.jobtracker.hosts.filename 允许连接JT的TT服务器列表,空值全部允许 mapreduce.tasktracker.map.tasks.maximum 每服务器允许启动的最大map槽位数。 mapreduce.tasktracker.reduce.tasks.maximum 每服务器允许启动的最大reduce槽位数 mapreduce.jobtracker.hosts.exclude.filename 禁止连接JT的TT列表,节点摘除是很有作用。 mapreduce.reduce.shuffle.merge.percent reduce归并接收map的输出数据可占用的内存配置百分比。类似mapreduce.reduce.shuffle.input.buffer.percen属性。 mapreduce.reduce.shuffle.memory.limit.percent 一个单一的shuffle的最大内存使用限制。4 yarn-site.xml
resourcemanager: yarn.resourcemanager.address ResourceManager监听TCP服务的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等 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地址。用户可通过该地址在浏览器中查看集群各类信息。 yarn.resourcemanager.scheduler.class 启用的资源调度器主类。目前可用的有FIFO、Capacity Scheduler和Fair Scheduler。 yarn.resourcemanager.resource-tracker.client.thread-count 处理来自NodeManager的RPC请求的Handler数目。默认值50 yarn.resourcemanager.scheduler.client.thread-count 处理来自ApplicationMaster的RPC请求的Handler数目。默认值50 yarn.scheduler.minimum-allocation-mb 单个可申请的最小内存资源量。比如设置为1024,则运行MapRedce作业时,每个Task最少可申请1024MB内存。默认值1024 yarn.scheduler.maximum-allocation-mb 单个可申请的最大内存资源量。比如设置为3072,则运行MapRedce作业时,每个Task最多可申请3072MB内存。默认值8192 yarn.scheduler.minimum-allocation-vcores 单个可申请的最小虚拟CPU个数。比如设置为1,则运行MapRedce作业时,每个Task最少可申请1个虚拟CPU,默认值1 yarn.scheduler.maximum-allocation-vcores 单个可申请的最大虚拟CPU个数。比如设置为4,则运行MapRedce作业时,每个Task最多可申请4个虚拟CPU,默认值32 yarn.resourcemanager.nodemanagers.heartbeat-interval-ms NodeManager心跳间隔。默认值1000毫秒 nodemanager: yarn.nodemanager.resource.memory-mb NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不 可动态修改。另外,该参数的默认值是8192MB,即使你的机器内存不够8192MB,YARN也会按照这些内存来使用。 yarn.nodemanager.vmem-pmem-ratio 每使用1MB物理内存,最多可用的虚拟内存数。默认值2.1 yarn.nodemanager.resource.cpu-vcores NodeManager总的可用虚拟CPU个数。默认值8 yarn.nodemanager.local-dirs 中间结果存放位置,类似于1.0中的mapred.local.dir。注意,这个参数通常会配置多个目录,已分摊磁盘IO负载,默认${hadoop.tmp.dir}/nm-local-dir yarn.nodemanager.log-dirs 日志存放地址。默认值${yarn.log.dir}/userlogs yarn.nodemanager.log.retain-seconds NodeManager上日志最多存放时间(不启用日志聚集功能时有效)。默认值10800 yarn.nodemanager.aux-services NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 yarn.log-aggregation-enable 是否启用日志聚集功能。默认值使false yarn.log-aggregation.retain-seconds 在HDFS上聚集的日志最多保存多长时间。默认值-1 yarn.log-aggregation.retain-check-interval-seconds 多长时间检查一次日志,并将满足条件的删除,如果是0或者负数,则为上一个值的1/10。默认值-1 yarn.nodemanager.remote-app-log-dir 当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)。默认值/tmp/logs yarn.log-aggregation.retain-seconds 远程日志目录子目录名称(启用日志聚集功能时有效)。
附加
MapReduce相关配置参数分为两部分,分别是JobHistory Server和应用程序参数,Job History可运行在一个独立节点上,而应用程序参数则可存放在mapred-site.xml中作为默认参数,也可以在提交应用程序时单独指定,注 意,如果用户指定了参数,将覆盖掉默认参数。 MapReduce JobHistory相关配置参数: mapreduce.jobhistory.address MapReduce JobHistory Server地址。 mapreduce.jobhistory.webapp.address MapReduce JobHistory Server Web UI地址。 mapreduce.jobhistory.intermediate-done-dir MapReduce作业产生的日志存放位置。 mapreduce.jobhistory.done-dir MR JobHistory Server管理的日志的存放位置。 MapReduce作业配置参数: 参数名称 缺省值 说明 mapreduce.job.name 作业名称 mapreduce.job.priority NORMAL 作业优先级 yarn.app.mapreduce.am.resource.mb 1536 MR ApplicationMaster占用的内存量 yarn.app.mapreduce.am.resource.cpu-vcores 1 MR ApplicationMaster占用的虚拟CPU个数 mapreduce.am.max-attempts 2 MR ApplicationMaster最大失败尝试次数 mapreduce.map.memory.mb 1024 每个Map Task需要的内存量 mapreduce.map.cpu.vcores 1 每个Map Task需要的虚拟CPU个数 mapreduce.map.maxattempts 4 Map Task最大失败尝试次数 mapreduce.reduce.memory.mb 1024 每个Reduce Task需要的内存量 mapreduce.reduce.cpu.vcores 1 每个Reduce Task需要的虚拟CPU个数 mapreduce.reduce.maxattempts 4 Reduce Task最大失败尝试次数 mapreduce.map.speculative false 是否对Map Task启用推测执行机制 mapreduce.reduce.speculative false 是否对Reduce Task启用推测执行机制 mapreduce.job.queuename default 作业提交到的队列 mapreduce.task.io.sort.mb 100 任务内部排序缓冲区大小 mapreduce.map.sort.spill.percent 0.8 Map阶段溢写文件的阈值(排序缓冲区大小的百分比) mapreduce.reduce.shuffle.parallelcopies 5 Reduce Task启动的并发拷贝数据的线程数目