zoukankan      html  css  js  c++  java
  • Hadoop配置文件


    部分内容参考:http://www.linuxqq.net/archives/964.html  http://slaytanic.blog.51cto.com/2057708/1100974/

    hadoop的重要配置文件有以下几个:



        在1.2.1版本中,core-default.xml有73个属性,hdfs-default.xml有76个属性,mapred-default.xml有136个属性。


    更多内容请参考P328

    一、masters/slaves
    1、masters记录的是需要启动secondary namenode的节点, 不是namenode,它也和mapreduce没任何关系。
        slaves记录的是需要执行start-all.sh(或相关命令)时,需要远程启动tasktracker与datanode的节点。
    2、这2个文件不需要分发至各个工作节点。
    3、哪个机器执行启动脚本,那它就是jobtracke与namenode,再根据masters确定secondary namenode, 根据slaves文件确定tasktracker与datanode,并远程启动这些守护进程。
    示例:

    二、hadoop-env.sh

    1、JAVA_HOME必须设置,其余均为可选项。

    2、HADOOP_HEAPSIZE:分配给各个守护进程的内存大小,默认为1000M

    另外,可以使用HADOOP_NAMENODE_OPTS等单独设置某一守护进行的内存大小

    这个参数的分配参考P322。

    大型集群一般设置2000M或以上,开发环境中设置500M足够了。

    3、HADOOP_LOG_DIR:日志文件的存放目录,可以设置为/var/log/hadoop

    4、HADOOP_SLAVES:slaves文件的位置,一般无需修改

    5、HADOOP_SSH_OPTS:P335

    6、HADOOP_SLAVE_SLEEP:P335

    7、HADOOP_IDEN_STRING:影响日志文件的名称

    完整文件如下:

    # Set Hadoop-specific environment variables here.
    
    # The only required environment variable is JAVA_HOME.  All others are
    # optional.  When running a distributed configuration it is best to
    # set JAVA_HOME in this file, so that it is correctly defined on
    # remote nodes.
    
    # The java implementation to use.  Required.
    # export JAVA_HOME=/usr/lib/j2sdk1.5-sun
    
    # Extra Java CLASSPATH elements.  Optional.
    # export HADOOP_CLASSPATH=
    
    # The maximum amount of heap to use, in MB. Default is 1000.
    # export HADOOP_HEAPSIZE=2000
    
    # Extra Java runtime options.  Empty by default.
    # export HADOOP_OPTS=-server
    
    # Command specific options appended to HADOOP_OPTS when specified
    export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"
    export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS"
    export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS"
    export HADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS"
    export HADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS"
    # export HADOOP_TASKTRACKER_OPTS=
    # The following applies to multiple commands (fs, dfs, fsck, distcp etc)
    # export HADOOP_CLIENT_OPTS
    
    # Extra ssh options.  Empty by default.
    # export HADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR"
    
    # Where log files are stored.  $HADOOP_HOME/logs by default.
    # export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
    
    # File naming remote slave hosts.  $HADOOP_HOME/conf/slaves by default.
    # export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves
    
    # host:path where hadoop code should be rsync'd from.  Unset by default.
    # export HADOOP_MASTER=master:/home/$USER/src/hadoop
    
    # Seconds to sleep between slave commands.  Unset by default.  This
    # can be useful in large clusters, where, e.g., slave rsyncs can
    # otherwise arrive faster than the master can service them.
    # export HADOOP_SLAVE_SLEEP=0.1
    
    # The directory where pid files are stored. /tmp by default.
    # NOTE: this should be set to a directory that can only be written to by 
    #       the users that are going to run the hadoop daemons.  Otherwise there is
    #       the potential for a symlink attack.
    # export HADOOP_PID_DIR=/var/hadoop/pids
    
    # A string representing this instance of hadoop. $USER by default.
    # export HADOOP_IDENT_STRING=$USER
    
    # The scheduling priority for daemon processes.  See 'man nice'.
    # export HADOOP_NICENESS=10
    



    三、log4j.properties

    日志文件的相关配置参考http://blog.csdn.net/jediael_lu/article/details/43989689 或者权威指南P190



    四、hadoop-metrics.properties

    度量相关配置参考??或者权威指南P382



    五、core-site.xml

    1、fs.default.name:默认的文件系统,一般将其改为hdfs。如:

    <property>
    
     <name>fs.default.name</name>
    
      <value>hdfs://master:9000</value>
    
      </property>


    2、hadoop.tmp.dir:暂时保存文件的目录,默认是/tmp/hadoop-$user,此位置有可能在重启时被清空,因此必须另外配置。

    <property>
    
     <name>hadoop.tmp.dir</name>
    
      <value>/mnt/tmphadoop</value>
    
      </property> 

    这个属性会影响namenode/secondary namenode中的元数据与datanode中的数据文件存放位置。见下面hdfs-site.xml中的描述。



    六、hdfs-site.xml

    1、dfs.name.dir:

    保存namenode元数据的位置,可以指定多个目录,元数据文件会同时写入这几个目录,从而支持冗余备份。最好有一个是NFS网络硬盘。

    默认是${hadoop.tmp.dir}/dfs/name


    2、dfs.data.dir:

    保存datanode数据文件的位置,可以指定多个目录,这多个目录位于不同的磁盘可以提高IO使用率。

    默认是${hadoop.tmp.dir}/dfs/data


    3、fs.checkpoint.dir:

    保存secondary namenode元数据的位置,可以指定多个目录,元数据文件会同时写入这几个目录,从而支持冗余备份。最好有一个是NFS网络硬盘。

    默认是${hadoop.tmp.dir}/dfs/namesecondary

    注意,fs.checkpoint.dir与dfs.name.dir设置多个路径,是为了冗余备份,而dfs.data.dir设置多个路径是为了负载均衡。

    <property>
     <name>dfs.name.dir</name>
       <value>${hadoop.tmp.dir}/dfs/name,/mnt/backup/dfs/name</value>
         </property>
    
    <property>
     <name>dfs.checkpoint.dir</name>
       <value>${hadoop.tmp.dir}/dfs/namesecond,/mnt/backup/dfs/namesecond</value>
         </property>
    

     

    4、dfs.replication:

    复本数量,默认为3

    <property>
     <name>dfs.replication</name>
      <value>2</value>
      </property>
    


    七、mapred-site.xml

    1、mapred.job.tracker:运行jobtracker的主机名和端口号

    示例:
    <property>
    
     <name>mapred.job.tracker</name>
    
      <value>master:9001</value>
    
      </property>


    2、mapred.local.dir:存储作业中间数据的目录,作业终止时,目录被清空,以逗号分隔多个目录


    3、mapred.system.dir:作业运行期间存储共享文件的位置,相对于fs.default.name,默认是${hadoop.tmp.dir}/mapred/system



    4、mapred.tasktracker.map.tasks.maximum:同一时间允许运行的最大map任务数,默认为2

    mapred.tasktracker.reduce.tasks.maximum:同一时间允许运行的最大map任务数,默认为2


    5、mapred.child.java.opts:每个map/reduce任务的JVM内容容量,默认为-Xmx200m


    八、常用的端口配置


    RPC端口均用于给外部提供远程调用的端口。
    HTTP端口用于提供以页面形式查看集群内容。

    1  HDFS端口 

    参数 描述 默认 配置文件 例子值
    fs.default.name namenode RPC交互端口 9000 core-site.xml hdfs://master:9000/
    dfs.http.address NameNode web管理端口 50070 hdfs- site.xml 0.0.0.0:50070
    dfs.datanode.address datanode 控制端口 50010 hdfs -site.xml 0.0.0.0:50010
    dfs.datanode.ipc.address datanode的RPC服务器地址和端口 50020 hdfs-site.xml 0.0.0.0:50020
    dfs.datanode.http.address datanode的HTTP服务器和端口 50075 hdfs-site.xml 0.0.0.0:50075

     

    2  MR端口

    参数 描述 默认 配置文件 例子值
    mapred.job.tracker job-tracker交互端口 9001 mapred-site.xml master:9001/
    job tracker的web管理端口 50030 mapred-site.xml 0.0.0.0:50030
    mapred.task.tracker.http.address task-tracker的HTTP端口 50060 mapred-site.xml 0.0.0.0:50060

      

    3  其它端口

    参数 描述 默认 配置文件 例子值
    dfs.secondary.http.address secondary NameNode web管理端口 50090 hdfs-site.xml 0.0.0.0:50090
             


    core-site.xml

     name value  Description 
     fs.default.name hdfs://hadoopmaster:9000 定义HadoopMaster的URI和端口
     fs.checkpoint.dir /opt/data/hadoop1/hdfs/namesecondary1 定义hadoop的name备份的路径,官方文档说是读取这个,写入dfs.name.dir
     fs.checkpoint.period 1800 定义name备份的备份间隔时间,秒为单位,只对snn生效,默认一小时
     fs.checkpoint.size 33554432 以日志大小间隔做备份间隔,只对snn生效,默认64M
     io.compression.codecs

    org.apache.hadoop.io.compress.DefaultCodec,
    com.hadoop.compression.lzo.LzoCodec,
    com.hadoop.compression.lzo.LzopCodec,
    org.apache.hadoop.io.compress.GzipCodec,
    org.apache.hadoop.io.compress.BZip2Codec
    (排版调整,实际配置不要回车)

    Hadoop所使用的编解码器,gzip和bzip2为自带,lzo需安装hadoopgpl或者kevinweil,逗号分隔,snappy也需要单独安装
     io.compression.codec.lzo.class com.hadoop.compression.lzo.LzoCodec LZO所使用的压缩编码器 
     topology.script.file.name /hadoop/bin/RackAware.py 机架感知脚本位置 
     topology.script.number.args 1000 机架感知脚本管理的主机数,IP地址 
     fs.trash.interval 10800 HDFS垃圾箱设置,可以恢复误删除,分钟数,0为禁用,添加该项无需重启hadoop
     hadoop.http.filter.initializers

    org.apache.hadoop.security.
    AuthenticationFilterInitializer
    (排版调整,实际配置不要回车)

    需要jobtracker,tasktracker
    namenode,datanode等http访问端口用户验证使用,需配置所有节点

     hadoop.http.authentication.type simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME# 验证方式,默认为简单,也可自己定义class,需配置所有节点
     hadoop.http.authentication.
    token.validity
    (排版调整,实际配置不要回车)
    36000 验证令牌的有效时间,需配置所有节点
     hadoop.http.authentication.
    signature.secret
    (排版调整,实际配置不要回车)
    默认可不写参数 默认不写在hadoop启动时自动生成私密签名,需配置所有节点
     hadoop.http.authentication.cookie.domain domian.tld http验证所使用的cookie的域名,IP地址访问则该项无效,必须给所有节点都配置域名才可以。
     hadoop.http.authentication.
     simple.anonymous.allowed
    (排版调整,实际配置不要回车)
    true | false 简单验证专用,默认允许匿名访问,true

     hadoop.http.authentication.
    kerberos.principal
    (排版调整,实际配置不要回车)

    HTTP/localhost@$LOCALHOST Kerberos验证专用,参加认证的实体机必须使用HTTP作为K的Name
     hadoop.http.authentication.
    kerberos.keytab
    (排版调整,实际配置不要回车)
    /home/xianglei/hadoop.keytab Kerberos验证专用,密钥文件存放位置
     hadoop.security.authorization true|false Hadoop服务层级验证安全验证,需配合hadoop-policy.xml使用,配置好以后用dfsadmin,mradmin -refreshServiceAcl刷新生效
     io.file.buffer.size 131072 用作序列化文件处理时读写buffer的大小
     hadoop.security.authentication simple | kerberos hadoop本身的权限验证,非http访问,simple或者kerberos
     hadoop.logfile.size 1000000000 设置日志文件大小,超过则滚动新日志
     hadoop.logfile.count 20 最大日志数
     io.bytes.per.checksum 1024 每校验码所校验的字节数,不要大于io.file.buffer.size
     io.skip.checksum.errors true | false 处理序列化文件时跳过校验码错误,不抛异常。默认false
     io.serializations

    org.apache.hadoop.io.
    serializer.WritableSerialization

    (排版需要。实际配置不要回车)

    序列化的编解码器
     io.seqfile.compress.blocksize 1024000 块压缩的序列化文件的最小块大小,字节
     webinterface.private.actions true | false 设为true,则JT和NN的tracker网页会出现杀任务删文件等操作连接,默认是false

     hdfs-site.xml

     name  value Description 
    dfs.default.chunk.view.size 32768 namenode的http访问页面中针对每个文件的内容显示大小,通常无需设置。
    dfs.datanode.du.reserved 1073741824 每块磁盘所保留的空间大小,需要设置一些,主要是给非hdfs文件使用,默认是不保留,0字节
    dfs.name.dir /opt/data1/hdfs/name,
    /opt/data2/hdfs/name,
    /nfs/data/hdfs/name
    NN所使用的元数据保存,一般建议在nfs上保留一份,作为1.0的HA方案使用,也可以在一台服务器的多块硬盘上使用
    dfs.web.ugi nobody,nobody NN,JT等所使用的web tracker页面服务器所使用的用户和组
    dfs.permissions true | false dfs权限是否打开,我一般设置false,通过开发工具培训别人界面操作避免误操作,设置为true有时候会遇到数据因为权限访问不了。
    dfs.permissions.supergroup supergroup 设置hdfs超级权限的组,默认是supergroup,启动hadoop所使用的用户通常是superuser。
    dfs.data.dir /opt/data1/hdfs/data,
    /opt/data2/hdfs/data,
    /opt/data3/hdfs/data,
    ...
    真正的datanode数据保存路径,可以写多块硬盘,逗号分隔
    dfs.datanode.data.dir.perm 755 datanode所使用的本地文件夹的路径权限,默认755
    dfs.replication 3 hdfs数据块的复制份数,默认3,理论上份数越多跑数速度越快,但是需要的存储空间也更多。有钱人可以调5或者6
    dfs.replication.max 512 有时dn临时故障恢复后会导致数据超过默认备份数。复制份数的最多数,通常没什么用,不用写配置文件里。
    dfs.replication.min 1 最小份数,作用同上。
    dfs.block.size 134217728 每个文件块的大小,我们用128M,默认是64M。这个计算需要128*1024^2,我碰上过有人直接写128000000,十分浪漫。
    dfs.df.interval 60000 磁盘用量统计自动刷新时间,单位是毫秒。
    dfs.client.block.write.retries 3 数据块写入的最多重试次数,在此次数之前不会捕获失败。
    dfs.heartbeat.interval 3 DN的心跳检测时间间隔。秒
    dfs.namenode.handler.count 10 NN启动后展开的线程数。
    dfs.balance.bandwidthPerSec 1048576 做balance时所使用的每秒最大带宽,使用字节作为单位,而不是bit
    dfs.hosts /opt/hadoop/conf/hosts.allow 一个主机名列表文件,这里的主机是允许连接NN的,必须写绝对路径,文件内容为空则认为全都可以。
    dfs.hosts.exclude /opt/hadoop/conf/hosts.deny 基本原理同上,只不过这里放的是禁止访问NN的主机名称列表。这在从集群中摘除DN会比较有用。
    dfs.max.objects 0 dfs最大并发对象数,HDFS中的文件,目录块都会被认为是一个对象。0表示不限制
    dfs.replication.interval 3 NN计算复制块的内部间隔时间,通常不需写入配置文件。默认就好
    dfs.support.append true | false 新的hadoop支持了文件的APPEND操作,这个就是控制是否允许文件APPEND的,但是默认是false,理由是追加还有bug。
    dfs.datanode.failed.volumes.tolerated 0 能够导致DN挂掉的坏硬盘最大数,默认0就是只要有1个硬盘坏了,DN就会shutdown。
    dfs.secondary.http.address 0.0.0.0:50090 SNN的tracker页面监听地址和端口
    dfs.datanode.address 0.0.0.0:50010 DN的服务监听端口,端口为0的话会随机监听端口,通过心跳通知NN
    dfs.datanode.http.address 0.0.0.0:50075 DN的tracker页面监听地址和端口
    dfs.datanode.ipc.address 0.0.0.0:50020 DN的IPC监听端口,写0的话监听在随机端口通过心跳传输给NN
    dfs.datanode.handler.count 3 DN启动的服务线程数
    dfs.http.address 0.0.0.0:50070 NN的tracker页面监听地址和端口
    dfs.https.enable true | false NN的tracker是否监听在HTTPS协议,默认false
    dfs.datanode.https.address 0.0.0.0:50475 DN的HTTPS的tracker页面监听地址和端口
    dfs.https.address 0.0.0.0:50470 NN的HTTPS的tracker页面监听地址和端口
    dfs.datanode.max.xcievers 2048 相当于linux下的打开文件最大数量,文档中无此参数,当出现DataXceiver报错的时候,需要调大。默认256


    mapred-site.xml

    name value Description
    hadoop.job.history.location   job历史文件保存路径,无可配置参数,也不用写在配置文件里,默认在logs的history文件夹下。
    hadoop.job.history.user.location   用户历史文件存放位置
    io.sort.factor 30 这里处理流合并时的文件排序数,我理解为排序时打开的文件数
    io.sort.mb 600 排序所使用的内存数量,单位兆,默认1,我记得是不能超过mapred.child.java.opt设置,否则会OOM
    mapred.job.tracker hadoopmaster:9001 连接jobtrack服务器的配置项,默认不写是local,map数1,reduce数1
    mapred.job.tracker.http.address 0.0.0.0:50030 jobtracker的tracker页面服务监听地址
    mapred.job.tracker.handler.count 15 jobtracker服务的线程数
    mapred.task.tracker.report.address 127.0.0.1:0 tasktracker监听的服务器,无需配置,且官方不建议自行修改
    mapred.local.dir /data1/hdfs/mapred/local,
    /data2/hdfs/mapred/local,
    ...
    mapred做本地计算所使用的文件夹,可以配置多块硬盘,逗号分隔
    mapred.system.dir /data1/hdfs/mapred/system,
    /data2/hdfs/mapred/system,
    ...
    mapred存放控制文件所使用的文件夹,可配置多块硬盘,逗号分隔。
    mapred.temp.dir /data1/hdfs/mapred/temp,
    /data2/hdfs/mapred/temp,
    ...
    mapred共享的临时文件夹路径,解释同上。
    mapred.local.dir.minspacestart 1073741824 本地运算文件夹剩余空间低于该值则不在本地做计算。字节配置,默认0
    mapred.local.dir.minspacekill 1073741824 本地计算文件夹剩余空间低于该值则不再申请新的任务,字节数,默认0
    mapred.tasktracker.expiry.interval 60000 TT在这个时间内没有发送心跳,则认为TT已经挂了。单位毫秒
    mapred.map.tasks 2 默认每个job所使用的map数,意思是假设设置dfs块大小为64M,需要排序一个60M的文件,也会开启2个map线程,当jobtracker设置为本地是不起作用。
    mapred.reduce.tasks 1 解释同上
    mapred.jobtracker.restart.recover true | false 重启时开启任务恢复,默认false
    mapred.jobtracker.taskScheduler org.apache.hadoop.mapred.
    CapacityTaskScheduler

    org.apache.hadoop.mapred.
    JobQueueTaskScheduler

    org.apache.hadoop.mapred.
    FairScheduler
    重要的东西,开启任务管理器,不设置的话,hadoop默认是FIFO调度器,其他可以使用公平和计算能力调度器
    mapred.reduce.parallel.copies 10 reduce在shuffle阶段使用的并行复制数,默认5
    mapred.child.java.opts

    -Xmx2048m

    -Djava.library.path=
    /opt/hadoopgpl/native/
    Linux-amd64-64

    每个TT子进程所使用的虚拟机内存大小
    tasktracker.http.threads 50 TT用来跟踪task任务的http server的线程数
    mapred.task.tracker.http.address 0.0.0.0:50060 TT默认监听的httpIP和端口,默认可以不写。端口写0则随机使用。
    mapred.output.compress true | false 任务结果采用压缩输出,默认false,建议false
    mapred.output.compression.codec org.apache.hadoop.io.
    compress.DefaultCodec
    输出结果所使用的编解码器,也可以用gz或者bzip2或者lzo或者snappy等
    mapred.compress.map.output true | false map输出结果在进行网络交换前是否以压缩格式输出,默认false,建议true,可以减小带宽占用,代价是会慢一些。
    mapred.map.output.compression.codec com.hadoop.compression.
    lzo.LzoCodec
    map阶段压缩输出所使用的编解码器
    map.sort.class org.apache.hadoop.util.
    QuickSort
    map输出排序所使用的算法,默认快排。
    mapred.hosts conf/mhost.allow 允许连接JT的TT服务器列表,空值全部允许
    mapred.hosts.exclude conf/mhost.deny 禁止连接JT的TT列表,节点摘除是很有作用。
    mapred.queue.names ETL,rush,default 配合调度器使用的队列名列表,逗号分隔
    mapred.tasktracker.map.
    tasks.maximum
    12 每服务器允许启动的最大map槽位数。
    mapred.tasktracker.reduce.
    tasks.maximum
    6 每服务器允许启动的最大reduce槽位数



         
         
         
         
         
         
     




  • 相关阅读:
    Findbugs初探-使用idea获取findbugs插件
    idea 14运行java工程报错-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
    Linux定时任务
    模块和包
    流程控制&&函数
    Python 变量与数据类型
    使用代码上传文件示例
    好用的代码示例
    JedisCluster API 整理
    springboot实现转发和重定向
  • 原文地址:https://www.cnblogs.com/eaglegeek/p/4557856.html
Copyright © 2011-2022 走看看