Hadoop的配置详解
大家经过搭建单节点、伪分布、完全分布模式的集群环境,基本上会用到以下几个配置,core-site.xm/hdfs-site.xml/mapred-site.xml.
相信大家已经使用了其中的一些参数,下面我们来详细介绍一下各个配置中的参数,介绍的参数是大家可能用到的,当然还有很多没介绍到(学习hadoop不久,如果哪里错了,请提出来,谢谢拉)
1.core-site.xml
常用的设置
fs.default.name hdfs://mastername:9000
hadoop.tmp.dir /tmp/hadoop-${user.name}
优化设置
hadoop.logfile.size
hadoop.logfile.count
fs.checkpoint.dir ${hadoop.tmp.dir}/dfs/namesecondary
fs.checkpoint.size
fs.checkpoint.period
(1)hadoop.tmp.dir 参数 /tmp/hadoop-${user.name} 临时目录设定
hadoop.tmp.dir是hadoop文件系统依赖的基础设置,很多路径都依赖它,如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中,所以最好设置,而且设置到持久目录中。
使用默认的路径会根据不同的用户名生成不同的临时目录
(2)hadoop.native.lib true 使用本地hadoop库标识。
(3)hadoop.http.filter.initializers http服务器过滤链设置
(4)hadoop.security.group.mapping org.apache.hadoop.security.ShellBasedUnixGroupsMapping 组内用户的列表的类设定
(5)hadoop.security.authorization false 服务端认证开启
如果开启在做任何事情之前,会现验证该帐号是否有权限。如果不开启,则不经过任何验证,所有用户拥有任何权限
(6)hadoop.logfile.size 10000000 日志文件最大为10M
hadoop跑了很多任务之后,可以通过设置hadoop.logfile.size和hadoop.logfile.count来设定最大的日志大小和数量来自动清楚日志
(7)hadoop.logfile.count 10 日志文件数量为10个
(8)io.file.buffer.size 4096 流文件的缓冲区为4K
这是读写sequence file的buffer size,可以减少I/O次数,在大型的Hadoop cluster,建议使用更大的值
(9)fs.default.name 默认值是 file:/// The name of default file system
默认的文件系统的名称
默认的是设置单机配置,如果是伪分布式则设置成hdfs://localhost:9000,如果是完全分布式则设置成hdfs://mastername:9000
(10)fs.checkpoint.dir
默认值是${hadoop.tmp.dir}/dfs/namesecondary
Secondary NameNode的镜像存储目录
fs.checkpoint.period 默认是3600秒
控制secondary namenode的checkpoint的时间间隔,如果距离上次checkpoint的时间大于这个参数,就会触发checkpoint.secondary namenode会把namenode的fsimage和editlog做snapshot.如果存取hadoop的次数频繁或为了减少重启namenode的时间,可以设置的小一点。
fs.checkpoint.size
默认值:67109964b
如果hadoop非常忙碌,则editlog可能会在短时间内变的很大,fs.checkpoint.period的设定不一定会触发checkpoint。设置这个数,保证editlog超过改数也会checkpoint
(11)io.skip.checksum.errors false 校验出错后是抛出异常还是略过标识。True则略过。
(12)io.compression.codecs org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec
压缩和解压的方式设置
(13)io.serializations org.apache.hadoop.io.serializer.WritableSerialization 序例化和反序列化的类设定
(14)fs.trash.interval 0 文件废弃标识设定,0为禁止此功能
清掉垃圾的时间,默认0是不清除。所以在删除文件时要自己执行。
(15)fs.file.impl org.apache.hadoop.fs.LocalFileSystem 本地文件操作类设置
(16)fs.hdfs.impl org.apache.hadoop.hdfs.DistributedFileSystem HDFS文件操作类设置
2.hdfs-site.xml
常用设置
dfs.name.dir ${hadoop.tmp.dir}/dfs/name
dfs.data.dir ${hadoop.tmp.dir}/dfs/data
dfs.permissions true
dfs.replication 3
dfs.block.size 67108864
dfs.namenode.logging.level info
优化设置
dfs.df.interval 60000
dfs.client.block.write.retries 3
dfs.heartbeat.interval 3
dfs.balance.bandwidthPerSec 1048576
dfs.datanode.failed.volumes.tolerated 0
(1)dfs.namenode.logging.level info 输出日志类型
(2)dfs.secondary.http.address 0.0.0.0:50090 备份名称节点的http协议访问地址与端口
(3)dfs.datanode.address 0.0.0.0:50010 数据节点的TCP管理服务地址和端口
(4)dfs.datanode.http.address 0.0.0.0:50075 数据节点的HTTP协议访问地址和端口
(5)dfs.datanode.ipc.address 0.0.0.0:50020 数据节点的IPC服务访问地址和端口
(6)dfs.datanode.handler.count 3 数据节点的服务连接处理线程数
(7)dfs.http.address 0.0.0.0:50070 名称节点的http协议访问地址与端口
(8)dfs.https.enable false 支持https访问方式标识
(9)dfs.https.need.client.auth false 客户端指定https访问标识
(10)dfs.default.chunk.view.size 32768 浏览时的文件块大小设置为32K
(11)dfs.datanode.du.reserved 0 每个卷预留的空闲空间数量
(12)dfs.name.dir ${hadoop.tmp.dir}/dfs/name
存贮在本地的名字节点数据镜象的目录,作为名字节点的冗余备份
(13)dfs.web.ugi webuser,webgroup Web接口访问的用户名和组的帐户设定
(14)dfs.permissions true 文件操作时的权限检查标识。
控制读写权限,false不控制读写权限
(15)dfs.data.dir ${hadoop.tmp.dir}/dfs/data 数据节点的块本地存放目录
(16)dfs.datanode.data.dir.perm 755 数据节点的存贮块的目录访问权限设置
(17)dfs.replication 3 缺省的块复制数量
(18)dfs.block.size 67108864 缺省的文件块大小为64M
(19)dfs.df.interval 60000 磁盘空间统计间隔为6秒
(20)dfs.client.block.write.retries 3 块写入出错时的重试次数
(21)dfs.heartbeat.interval 3 数据节点的心跳检测间隔时间
(22)dfs.balance.bandwidthPerSec 1048576 启动负载均衡的数据节点可利用带宽最大值为1M
(23)dfs.datanode.failed.volumes.tolerated 0
决定停止数据节点提供服务充许卷的出错次数。0次则任何卷出错都要停止数据节点
3.mapred-site.xml
常用设置
mapred.job.tracker mastername:9001
优化设置
mapred.tasktracker.map.tasks.maximum
mapred.tasktracker.reduce.tasks.maximum
(1)io.sort.mb 100 排序文件的内存缓存大小为100M
(2)io.sort.record.percent 0.05 排序线程阻塞的内存缓存剩余比率
(3)io.sort.spill.percent 0.80 当缓冲占用量为该值时,线程需要将内容先备份到磁盘中。
(4)mapred.job.tracker mastername:9001 作业跟踪管理器是否和MR任务在一个进程中
The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.
默认值是local,单节点。Job 运行的host和端口号
(5)mapred.job.tracker.http.address 0.0.0.0:50030 作业跟踪管理器的HTTP服务器访问端口和地址
(6)mapred.local.dir ${hadoop.tmp.dir}/mapred/local MR的中介数据文件存放目录
(7)mapred.system.dir ${hadoop.tmp.dir}/mapred/system MR的控制文件存放目录
(8)mapred.temp.dir ${hadoop.tmp.dir}/mapred/temp MR临时共享文件存放区
(9)mapred.tasktracker.expiry.interval 600000 任务管理跟踪器不发送心跳的累计时间间隔超过600秒,则任务管理跟踪器失效
(10)mapred.map.tasks 2 每个作业缺省的map任务数为2
(11)mapred.reduce.tasks 1 每个作业缺省的reduce任务数为1
(12)mapred.jobtracker.taskScheduler.maxRunningTasksPerJob 作业同时运行的任务数的最大值 32
(13)mapreduce.reduce.shuffle.read.timeout 180000 REDUCE任务等待map输出数据的总耗时是3分钟
(14)mapred.tasktracker.map.tasks.maximum 2 任管管理器可同时运行map任务数为2
(15)mapred.tasktracker.reduce.tasks.maximum 2 任管管理器可同时运行reduce任务数为2
(16)mapred.task.tracker.http.address 0.0.0.0:50060 任务管理跟踪器的http服务器的地址和端口
(17)mapred.output.compress false 作业的输出是否压缩
(18)mapred.compress.map.output false Map的输出是否压缩
(19)mapred.user.jobconf.limit 5242880 Jobconf的大小为5M
(20)mapred.heartbeats.in.second 100 作业管理跟踪器的每秒中到达的心跳数量为100