hadoop的配置文件主要有这样几个:
hadoop-env.sh设置环境参数
core-site.xml,hdfs-site.xml,mapred-site.xmlHadoop核心的一些参数
masters运行SNN,secondarynamenode,的机器名,默认是本机,但是实际环境里建议用其他机器
slaves所有从机的名字都在这里
hadoop-metrics.prpperties,log4j.properties
hadoop-env.sh里面:
HADOOP_LOG_DIR日志存放的目录
XML文件里主要的参数:
core-site.xml
fs.default.name,namenodeRPC服务运行的地址和端口,默认端口是8020,一般它的值是hdfs:开头指向namenode加端口号
hadoop.tmp.dir,默认是放在/tmp的一个子目录,建议设置在别的目录
dfs.name.dir 是namenode块存放等信息的元数据,它的值可以设为多个目录,这样在每一个目录里都会有一个拷贝,建议的方式是在一台备用namenode机器上NFS共享出一个目录,挂在主namenode上,这样元数据有一个备份。
手工备份namenode的办法:只要备份dfs.name.dir目录下的两个文件fsp_w_picpathandedits文件
可以通过WEb界面备份,方法是:
curlhttp://master1:50070/getp_w_picpath?getp_w_picpath=1>$BACKUP_DIR/fsp_w_picpath
curlhttp://master1:50070/getp_w_picpath?getedit=1>$BACKUP_DIR/edits
恢复的时候,先停掉namenode:hadoop-deamon.shstopnamenode
把文件拷回去,再启动:hadoop-deamon.shstartnamenode
一般要用hadoopfsck检查完整性。
现在新版的hadoop这个属性改为dfs.namenode.name.dir
dfs.data.dir每个slave上数据放哪里,新版的里面这个属性改为dfs.datanode.data.dir
fs.checkpoint.dircheckpoint数据放哪里
上面3个在hdfs-site文件里,hdfs-site里还有一个重要参数:
dfs.hots.exclude默认没有,手工添加并指向一个文本文件,这个文件一开始是空的,里面可以加入要移除的hostsname,这主要是当机器荡了或者需要维护时这样做。如果你一开始没有配这个参数,就要shutdownhadoop,添加参数后再启动才能用这个功能。
还有一个dfs.replication,默认集群是3,是指每个块要3个拷贝,以防丢失数据。
使用secondarynamenode来恢复故障的namenode,
是这样的,在SNN上面使用命令
hadoop-daemon.sh stop secondarynamenode
安装配置一台新的namenode,和原来的一模一样。
把SNN上面fs.checkpoint.dir里面的东西拷贝到新机器的dfs.name.dir里面
新机器上:hadoop-daemon.sh start namenode
SNN上:hadoop-daemon.sh start secondarynamenode
mapred-site.xml里面:
mapredjob.trackerjobtracker的RPC服务器地址和端口
mapred.tasktracker.map.tasks.maximum
mapred.tasktracker.reduce.tasks.maximum一台机器的tasktracker最多同时运行几个map及reduce任务,默认两个词参数都是2
mapred.child.java.opts,mapreduce.map.java.opts,mapreduce.reduce.java.opts分配给每个任务的JVM的内存大小,默认都是Xmx200m即200M
XML参数的默认值都在src目录下子目录里找对应的default文件。
hadoop说是廉价机器组成的集群,但是对内存要求不低,每个从机上的datanode和tasktracker各自要1000M内存,运行mapreduce任务还要增加内容消耗。一般来说普通的集群每个机器配8G比较合适。
常用命令
hadoop fsck / 扫描检查文件系统
hadoop dfsadmin -report 报告各个DN主机的磁盘利用情况。