上次说到FreeBSD下搭建伪分布式,很简单,但是hadoop集群入门最难的可能就是集群的搭建和配置了,配置文件复杂,概念抽象,我尽可能简单描述真实集群的搭建和配置。
hadoop集群从启动进程上来说,分为四种进程,四种,不是四个。在实际应用中,通常每台服务器只启动两种进程。
首先是主节点和任务跟踪器。以下统称为NameNode和JobTracker
主节点在hadoop中叫namenode。负责管理调度集群的运作,跟随主节点的进程叫做jobtracker,负责计算任务的分派和接收。hadoop之所以可以负责大数据量的运算,主要是因为这个分片的概念。比如一个10G的log文件,放在hdfs上,可能你认为他在hdfs上是一个文件,但实际上,这个文件备份成了N多小块,每块保存在不同服务器的物理硬盘上。计算时,任务被分派到每个数据服务器,每个服务器只运算整个数据中的一部分,假设有10台,那么每台被分配1G数据,每个服务器就只运算1G的数据,并将数据返回给jobtracker,最后提供给用户,这样每个服务器的运算速度就都是10G的1/10。计算结果就会比单台快很多。
那么负责分派任务的就是NameNode和JobTracker,而负责数据计算和存储的,就是DataNode和TaskTracker。
也就是说,集群中可以有一台NameNode+JobTracker,但是可以有N多台DataNode和TaskTracker。
整个Hadoop集群的配置在hadoop根目录的conf/可以找到。看一下NameNode+JobTracker的配置,主要在几个xml文件中。
我在基本每个重要的配置项上都标明了注释。
core-site.xml
xml version="1.0"?>
xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.namename>
<value>hdfs://hadoopmaster-177.tj:9000value>
property>
<property>
<name>io.compression.codecsname>
<value>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.BZip2Codecvalue>
property>
<property>
<name>io.compression.codec.lzo.classname>
<value>com.hadoop.compression.lzo.LzoCodecvalue>
property>
configuration>
hdfs-site.xml
xml version="1.0"?>
xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dirname>
<value>/opt/data/hadoop/hdfs/name,/opt/data/hadoop1/hdfs/name,/opt/data/hadoop2/hdfs/namevalue>
<description> description>
property>
<property>
<name>dfs.data.dirname>
<value>/opt/data/hadoop/hdfs/data /opt/data/hadoop1/hdfs/data,/opt/data/hadoop2/hdfs/datavalue>
<description> description>
property>
<property>
<name>dfs.http.addressname>
<value>hadoopmaster-177.tj:50070value>
property>
<property>
<name>dfs.secondary.http.addressname>
<value>hadoopslave-189.tj:50090value>
property>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.datanode.du.reservedname>
<value>1073741824value>
property>
<property>
<name>dfs.block.sizename>
<value>134217728value>
property>
<property>
<name>dfs.permissionsname>
<value>falsevalue>
property>
configuration>
还有一个很重要的配置,map reduce 的配置
mapred-site.xml
xml version="1.0"?>
xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.trackername>
<value>hadoopmaster-177.tj:9001value>
property>
<property>
<name>mapred.local.dirname>
<value>/opt/data/hadoop1/mapred/mrlocalvalue>
<final>truefinal>
property>
<property>
<name>mapred.system.dirname>
<value>/opt/data/hadoop1/mapred/mrsystemvalue>
<final>truefinal>
property>
<property>
<name>mapred.tasktracker.map.tasks.maximumname>
<value>6value>
<final>truefinal>
property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximumname>
<value>2value>
<final>truefinal>
property>
<property>
<name>mapred.child.java.optsname>
<value>-Xmx1536Mvalue>
property>
<property>
<name>mapred.compress.map.outputname>
<value>truevalue>
property>
<property>
<name>mapred.map.output.compression.codecname>
<value>com.hadoop.compression.lzo.LzoCodecvalue>
property>
<property>
<name>mapred.child.java.optsname>
<value>-Djava.library.path=/opt/hadoopgpl/native/Linux-amd64-64value>
property>
<property>
<name>mapred.jobtracker.taskSchedulername>
<property>
<name>mapred.jobtracker.taskSchedulername>
<value>org.apache.hadoop.mapred.CapacityTaskSchedulervalue>
property>
<property>
<name>io.sort.mbname>
<value>300value>
property>
<property>
<name>fs.inmemory.size.mbname>
<value>300value>
property>
<property>
<name>mapred.jobtracker.restart.recovername>
<value>truevalue>
property>
configuration>
这个就是hadoop 主节点的主要配置,最近事情太多,下次写DataNode和TaskTracker的配置
阅读(701) | 评论(0) | 转发(0) |