zoukankan      html  css  js  c++  java
  • Hadoop配置项整理

    记录一下Hadoop的配置和说明,用到新的配置项会补充进来,不定期更新。以配置文件名划分

     以hadoop 1.x配置为例

     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

    结合Apache手册和公司里用的实际配置编写,实际根据硬件配置的不同,参数大小需做调整,目前参数基于namenode 96G内存,datanode 32G内存。有些har,s3,local这样的fs的implement因为不太会用到,所以没写。 

    水平有限,参数描述理解或翻译有误见谅。

    续上篇整理一下hdfs相关的配置项

     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

    主要配置里会用到的大概就是这些了,还有一些https certfile和一些internal时间配置的,不常用的就不写了。

    续上篇

    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槽位数

    捡一些比较重要的,用的多的配置,官网建议的专家配置项基本没写上,改坏了就不好玩了。

  • 相关阅读:
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 Cowboys
    Java实现 蓝桥杯 算法训练 Cowboys
    55. Jump Game
    54. Spiral Matrix
    50. Pow(x, n)
  • 原文地址:https://www.cnblogs.com/java20130722/p/3206897.html
Copyright © 2011-2022 走看看