Hadoop集群安装参考
一、说明
1.安装环境说明:
操作系统为Centos 6.4,安装的hadoop 版本为0.20.2-cdh3u6
2.安装后的集群环境说明:
集群内共6台机器,分别为namenode、secondnamenode、jobtrack、datanode(三个节点),参考如下:
namenode节点: 192.168.8.67(主机名:namenode)
secondnamenode节点: 192.168.8.65 (主机名:secondnamenode)
jobtrack节点: 192.168.8.68(主机名:jobtrack)
4.安装目录为/opt/hadoop
二、安装
1.下载hadoop-0.20.2-cdh3u6.tar.gz
2.解压hadoop-0.20.2-cdh3u6.tar.gz并将解压后的文件夹重命名为hadoop
3.将hadoop文件夹分别以root身份上传至namenode、secondnamenode、jotrack、datanode01、datanode02、datanode03的/opt目录下
4.更改/opt/hadoop目录的所有者为hadoop用户
参考命令:sudo chown -R hadoop.hadoop /opt/hadoop
5.设置环境变量
参考如下:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
6.设置各个hadoop节点的配置文件,参考如下
分别进入每个节点机器的/opt/hadoop/conf目录下完成如下配置:
(1).namenode:
a.core-site.xml:
<!--namenode上不需要进行关于lzo的配置-->
<configuration>
<!--
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp/</value>
</property>
-->
<property>
<name>io.file.buffer.size</name>
<value>65536</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
b.hdfs-site.xml:
<configuration>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop/data/name</value>
<final>true</final>
</property>
<!--
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop/data/data</value>
<final>true</final>
</property>
-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property>
</configuration>
c.mapred-site.xml:
<configuration>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx1024m</value>
</property>
<property>
<name>io.sort.mb</name>
<value>500m</value>
</property>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>4</value>
<final>true</final>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>mapred.job.tracker</name>
<value>jobtrack:9001</value>
<final>true</final>
</property>
</configuration>
d.masters:
#secondnamenode的地址(可以输入主机名或者输入ip)
secondnamenode
#192.168.8.65
e.slaves:
#各datanode节点的主机名或ip地址
#192.168.8.62
#192.168.8.63
#192.168.8.64
datanode01
datanode02
datanode03
此项配置完成后,先别着急启动hadoop,好多东西还没设置,继续往下走.....
(2).secondnamenode
a.core-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp/</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>65536</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
b.hdfs-site.xml:
<configuration>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop/data/name</value>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop/data/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property>
</configuration>
c.mapred-site.xml:
<configuration>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx1024m</value>
</property>
<property>
<name>io.sort.mb</name>
<value>500m</value>
</property>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>4</value>
<final>true</final>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>mapred.job.tracker</name>
<value>jobtrack:9001</value>
<final>true</final>
</property>
</configuration>
d.masters和slaves无需配置
此项配置完成后,先别着急启动hadoop,好多东西还没设置,继续往下走.....
(3).jobtrack
a.core-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp/</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>65536</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
b.hdfs-site.xml:
<configuration>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop/data/name</value>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop/data/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property>
</configuration>
c.mapred-site.xml:
<configuration>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx1024m</value>
</property>
<property>
<name>io.sort.mb</name>
<value>512m</value>
</property>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>4</value>
<final>true</final>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>mapred.job.tracker</name>
<value>jobtrack:9001</value>
<final>true</final>
</property>
<!--
<property>
<name>mapred.task.timeout</name>
<value>6000000</value>
</property>
-->
<!--设置map输出 -->
<property>
<name>mapred.compress.map.output</name>
<value>false</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzopCodec</value>
</property>
<!--设置reduce输出 -->
<property>
<name>mapred.output.compress</name>
<value>false</value>
</property>
<property>
<name>mapred.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzopCodec</value>
</property>
</configuration>
d.masters文件无需配置
e.slaves:
#配置tasktrack(datanode01、datanode02、datanode03)节点IP或者各节点主机名:
#192.168.8.62
#192.168.8.63
#192.168.8.64
datanode01
datanode02
datanode03
此项配置完成后,先别着急启动hadoop,好多东西还没设置,继续往下走.....
(3).datanode01
a.core-site.xml:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp/</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>65536</value>
</property>
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzopCodec</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>
b.hdfs-site.xml:
<configuration>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<!--
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop/data/name</value>
<final>true</final>
</property>
-->
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop/data/data</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property>
</configuration>
c.mapred-site.xml:
<configuration>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx1024m</value>
</property>
<property>
<name>io.sort.mb</name>
<value>512m</value>
</property>
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>4</value>
<final>true</final>
</property>
<property>
<name>mapred.tasktracker.reduce.tasks.maximum</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>mapred.job.tracker</name>
<value>jobtrack:9001</value>
<final>true</final>
</property>
<!--
<property>
<name>mapred.task.timeout</name>
<value>6000000</value>
</property>
-->
</configuration>
d.masters和slaves文件无需配置
(5).其余的datanode节点(datanode02、datanode03)的配置和上面的datanode01的配置完全一致。
7.创建hadoop的数据存放目录:
在上面的配置中,
将dfs.name.dir(hdfs-site.xml)目录设置为~/hadoop/data/name
将dfs.data.dir(hdfs-site.xml)目录设置为~/hadoop/data/data
将hadoop.tmp.dir(core-site.xml)目录设置为~/hadoop/tmp
其中,
namenode需要设置dfs.name.dir,
datanode需要设置dfs.data.dir和hadoop.tmp.dir,
secondnamenode、jobtrack需要设置hadoop.tmp.dir,dfs.name.dir,dfs.data.dir。
建议:以上的配置可以不设置,如果不设置hadoop有自己的默路径,为了方便维护建议设置;
为了避免不确定性的配置问题,建议在每个节点都设置hadoop.tmp.dir,dfs.name.dir,dfs.data.dir
基于以上配置,需要在各个节点上创建如下目录:
mkdir ~/hadoop/data
8.设置节点间的无密码登陆:
分别设置:
namenode对secondnamenode、datanode01、datanode02、datanode03的无密码ssh登陆;
secondnamenode对datanode01、datanode02、datanode03的无密码ssh登陆;
jobtrack对datanode01、datanode02、datanode03的无密码ssh登陆。
建议:为了方便以后对hadoop集群的管理,最好设置成每一个节点都可以对其他所有节点的ssh无密码登陆。
如果不清楚如何设置ssh无密码登陆,请参考本人的博客(Linux栏目下)
9.设置节点的ip和主机名的映射关系:
配置 每个节点的/etc/hosts文件(datanode节点可以不需要配置):
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.62 datanode01
192.168.8.63 datanode02
192.168.8.64 datanode03
192.168.8.65 secondnamenode
192.168.8.67 namenode
192.168.8.68 jobtrack
10.关闭每个节点的防火墙
11.启动hadoop集群:
在namenode节点上执行start-dfs.sh;
在jobtrack节点上执行start-mapred.sh