18台机器:1台namenode+17台datanode
!!!配置hadoop时候先部署namenode,再利用rsync把hadoop目录同步到所有的datanode上面!!!
1. 安装JDK:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://namenode-0:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/temp</value> <description>Abase for other temporary directories.</description> </property> <property> <name>hadoop.native.lib</name> <value>true</value> <description>Should native hadoop libraries, if present, be used.</description> </property> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> <property> <name>fs.checkpoint.period</name> <value>3600</value> <description>The number of seconds between two periodic checkpoints. </description> </property> <property> <name>fs.checkpoint.size</name> <value>67108864</value> <description>The size of the current edit log (in bytes) that triggers a periodic checkpoint even if the fs.checkpoint.period hasn't expired. </description> </property> <property> <name>fs.checkpoint.dir</name> <value>file:/home/hadoop/dfs/namesecondary</value> <description>Determines where on the local filesystem the DFS secondary name node should store the temporary images to merge. If this is a comma-delimited list of directories then the image is replicated in all of the directories for redundancy. </description> </property> </configuration>
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>namenode-0:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>namenode-0:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>namenode-0:19888</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <name>mapreduce.map.memory.mb</name> <value>4000</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>2000</value> </property> <property> <name>mapreduce.map.java.opts</name> <value>-Xmx4000m</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx2000m</value> </property> </configuration>
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>namenode-0:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>namenode-0:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>namenode-0:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>namenode-0:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>namenode-0:8088</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.log.server.url</name> <value>http://namenode-0:19888/jobhistory/logs/</value> </property> <!-- <property> <name>yarn.nodemanager.docker-container-executor.exec-name</name> <value>/usr/bin/docker</value> </property> <property> <name>yarn.nodemanager.container-executor.class</name> <value>org.apache.hadoop.yarn.server.nodemanager.DockerContainerExecutor</value> </property> --> </configuration>
1. 配置管理
hadoop支持为所有的节点采用同一套配置文件,这样管理会变得非常简单,不过这对于某些集群来说并不适合。例如在扩展集群时,如果新机器的硬件和现有机器不同,则需要为新机器创建一套新的配置文件,以充分利用新硬件资源。所以,非常推荐在每个节点保存一套配置文件,并由管理员完成这些配置文件的同步工作。hadoop提供了一个基本工具来进行同步配置,即rsync。
这种情况下,需要引入“机器类”的概念,为不同的机器类分别维护一套配置文件。不过hadoop并没有提供执行这个操作的工具,需要借助外部工具,例如Chef,Puppet,cfengine和bcfg2等。
2. 控制脚本
3. 守护进程管理
对于小型集群(几十个节点),可以将namenode、secondarynamenode、jobtracker放到单独一台机器上,但对于大型集群,最好分别放到不同的机器上。