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