hadoop 0.2的配置文件

1:hadoop-env.sh

1):统一设置hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)的jvm内存

HADOOP_HEAPSIZE=2000 #默认1G

 对于tasktracker来说,如果一个tasktracker的有2个map任务(默认的:在mapred.tasktracker.map.tasks.maximum )和2个reduce任务(mapred.tasktracker.reduce.tasks.maximum ),每个任务所占用的内存由mapred.child.java.opts配置(默认200M),所以每个tasktracker默认会占用1.8G(tasktracker:1G;map:2*200;reduce:2*200),当然这没包括dataname占用的内存(默认1G)

对于一台机器运行多少个mapreduce任务取决于机器的cpu核心数(http://heipark.iteye.com/blog/1146838)

2):设置namenode内存(一个文件或目录大约占150字节,一百万个大约占300M内存)

HADOOP_NAMENODE_OPTS
HADOOP_SECONDARYNAMENODE_OPTS

 其它进程序也可以单独配置,可参拷hadoop-env.sh

3):java设置(可以保证集群使用一个java版本)

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

 4):系统日志(建意设置在其它目录)

HADOOP_LOG_DIR=${HADOOP_HOME}/logs

 日志分类:以log结尾的正常运行日志(不会自动删除)

                  以out结尾的错误日志(一般只保存5个)

5):ssh(可以传入一些参数)

HADOOP_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HADOOP_CONF_DIR"

 可以同步配置文件到其它机器(所有slaves向master发送rsync同步请求)

HADOOP_MASTER   HADOOP_SLAVES

 集群众多时rsync请求会使用主机瘫痪,可以设置请求间隔

HADOOP_SLAVE_SLEEP=0.1

 2:HDFS

1)指定namenode主机

core-site.xml 写道
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1:8020</value>
</property>
</configuration>

 2)指定存放namenode编辑日志与文件系统映像目录

hdfs-site.xml 写道
<property>
<name>dfs.name.dir</name>
<value>/hadoop/data,/a/b</value> #写多个方便恢复
</property>

 3)指定datanode数据存放目录

hdfs-site.xml 写道
<property>
<name>dfs.data.dir</name>
<value>/disk2/data,/disk1/data</value> #为了提高性能写多个磁盘目录
</property>

 4)指定辅助namenode存放检查点目录

hdfs-site.xml 写道
<property>
<name>fs.checkpoint.dir</name>
<value>/hadoop/data</value> #支持多目录备份
</property>

 数据冗余

hdfs-site.xml 写道
<property>
<name>dfs.replication</name>
<value>2</value>
</property>

 注:默认这些都存在${hadoop.tmp.dir}/dfs目录下,tmp默认在/tmp/hadoop-${user.name}下

3:mapreduce

 1)指定一台jobtracker来分配任务(小集群可与namenode一起)

mapred-site.xml 写道
<property>
<name>mapred.job.tracker</name>
<value>hadoop1:8021</value>
</property>

 2)指定存放mapreduce过程中的中间数据(map任务的输出,数据量可能非常大)

mapred-site.xml 写道
<property>
<name>mapred.local.dir</name>
<value>/disd1/map,/disd2/map</value>
</property>

 3)指定tasktracker共享文件(如作业jar)

mapred-site.xml 写道
<property> 
<name>mapred.system.dir</name> 
<value>/hadoop/system</value> 
</property>
其它内存配置等(mapred.tasktracker.reduce.tasks.maximum等)

4 :   守护进程地址和端口

1)rpc

fs.default.name 描述了namenode的rpc服务地址和端口(默认8020)
dfs.datanode.ipc.address datanode的(默认50020)
mapred.job.tracker jobtracker的(默认8021)
mapred.task.tracker.report.address tasktracker的(默认使用空闲的)

 别外datanode的块传输使用tcp(dfs.datanode.address 默认50010)

2)http

mapred.job.tracker.http.address jobtracker的(默认50030)
mapred.task.tracker.http.address tasktracker的(默认50060)
dfs.http.address namenode的(默认50070)
dfs.datanode.http.address datanode的(默认50075)
dfs.secondary.http.address 辅助nn的(默认50090)

 5:其它

1)集群成员

dfs.hosts datanode加入集群列表
mapred.hosts tasktracker加入集群列表
dfs.hosts.exclude 移除
mapred.hosts.exclude

 2)缓冲区(辅助io操作,默认4K,增大可以显著提升性能)

core-site.xml 写道
io.file.buffer.size

 3)hdfs块大小(大块nn占用内存少,并向mapper传输更多数据)

hdfs-site.xml 写道
dfs.block.size 默认64M

 4)保留存储空间(datanode上预留多少空间)

写道
dfs.datanode.du.reserved

 5)回收站(hadoop的文件删除后会放入特殊的目录即回收站中,可以指定保留时间)

core-site.xml 写道
fs.trash.interval 默认0,表示无效,单位分钟

 只在由shell删除的才会放到回收站,由程序删除的会直接删掉;API的Trash.moveToTrash()也会放到回收站中。

  删除的文件被放到/home/.Trash目录下,恢复移出文件即可

  别外只有hdfs会自动删除过期文件,其它文件系统还须调用(hadoop fs -expunge)删除

6)任务内存限制(tasktracker的内存)

mapred.child.ulimit           KB

 它要高于(mapred.child.java.opts)

别外还可以在系统级限制(limits.conf)

7)作业调度

     默认为FIFO(先入先出队列)

8) 创建用户帐号

hadoop fs -mkdir /user/gbz #创建用户目录
hadoop fs -chown gbz:gbz /user/gbz #给权限
hadoop dfsadmin -setSpaceQuota 1t /user/gbz #限制容量为1T

9)安全

早期版本(0.22之前)hadoop的认证只是防止用户不小心删除数据,不能防止恶意的root删除所有数据(你告诉它你是谁,hadoop就认为你是谁)

kerberos认证

三步 
1:客户向认证服务器发一条报文,并获取一个含时间戳的票据(tgt)
2:客户用tgt向授权服务器请求一个服务票据
3:客户向服务器(nn,jk)出示票据,证明自己合法,并得到服务
例子 
1:开启服务(默认不开启)
hadoop.security.authentication=kerberos(coresite.xml)
2:启用授权
hadoop.security.authorization=true(coresite.xml)

     

 

 

你可能感兴趣的:(hadoop)