1. 概述
本文档是hadoop集群的部署配置文档,详细描述了hadoop生产集群的安装步骤与配置参数。
本文档涉及软件版本如下:
序号 | 软件 | 版本 |
1 | 操作系统 | CentOS5.5 |
2 | JDK | JDK1.6.0_31 |
3 | hadoop | Cloudera CDH3U3 |
注:全部为64位
2. 名词解释
1) Hadoop,Apache开源的分布式存储与处理框架。
2) HDFS,hadoop的分布式文件系统
3) NameNode,HDFS元数据主节点服务器,负责保存DataNode 文件存储元数据信息。存在单点故障,生产环境需要考虑该缺陷。简称为nn
4) JobTracker,hadoop的Map/Reduce调度器,负责与TackTracker通信分配计算任务并跟踪任务进度。简称为jt。
5) DataNode,hadoop数据节点,负责存储数据。简称为dn。
6) TaskTracker,hadoop调度程序,负责Map,Reduce 任务的具体启动和执行。简称为tt。
7) Secondary namenode,辅助namenode,主要目的是减少hadoop集群故障后再次启动的时间,对namenode的命名空间镜像与编辑日志做备份。简称为snn。
3. 硬件说明
1) 集群机器
序号 | 服务IP | 主机名 | 用途 | 硬件配置 |
1 | 10.2.55.60 | dn60.xxxx.com | dn/tt | DELL2950/2.00GHz 1*4核CPU/8G内存/4个500G+2个1T硬盘/1000M网卡 |
2 | 10.2.55.61 | dn61.xxxx.com | dn/tt | DELL2950/2.00GHz 1*4核CPU/8G内存/6个500G硬盘/1000M网卡 |
3 | 10.2.55.62 | dn62.xxxx.com | dn/tt | DELL2950/2.00GHz 1*4核CPU/8G内存/6个500G硬盘/1000M网卡 |
4 | 10.2.55.63 | dn63.xxxx.com | dn/tt | DELL2950/2.00GHz 1*4核CPU/8G内存/6个500G硬盘/1000M网卡 |
5 | 10.2.55.64 | nn.xxxx.com | nn/jt | DELL1950/2.33GHz 2*4核CPU/8G内存/300G硬盘/1000M网卡 |
6 | 10.2.55.68 | snn.xxxx.com | snn | DELL2950/2.33GHz 2*4核CPU/8G内存/800G硬盘/1000M网卡 |
7 | 10.2.55.65 | dn65.xxxx.com | dn/tt | DELL2950/2.00GHz 1*4核CPU/8G内存/6个500G硬盘/1000M网卡 |
8 | 10.2.55.66 | dn66.xxxx.com | dn | DELL2950/2.00GHz 1*4核CPU/2G内存/1个150G+5个500G硬盘/1000M网卡 |
9 | 10.2.55.67 | dn67.xxxx.com | dn/tt | DELL2950/2.00GHz 1*4核CPU/8G内存/6个500G硬盘/1000M网卡 |
2) 集群能力
存储能力:14T
运算能力:最大map任务数4×6=24,最大reduce任务数2×6=12
3) Hadoop硬件规范参考。(具体的与应用有关,计算密集型、存储密集型、平衡型)
2010年国外datanode与tasknode的典型配置如下:
l CPU:2×4核2-2.5GHz
l 内存:16-24GB ECC RAM
l 存储:4×1TB SATA硬盘
l 网络:千兆以太网
4. 网络拓扑
l Hadoop存储数据依赖于节点在机架中位置,默认hadoop认为所有节点属于同一机架,当实际情况与默认不一致时需要在core-site.xml中配置。
l xxxx目前情况与默认一致。
l 使用内网IP来保证集群的安全性,内部要严格限制人员对集群信息的获取。
5. 分区需求
1) Raid
a) Namenode
l 方法1:留1块盘做热备,其余做raid5
l 方法2:用2 块盘做raid1,用作安装OS+SPFTWARE+CONFIG,然后留1块盘做热备,其余做raid5用作数据盘。
b) Datanode
l 用2块sata做raid1,用作安装OS+SPFTWARE+CONFIG,其他sata盘不做raid,用作数据盘
c) 说明
这样配置namenode是为了让os/soft/config有冗余,即使其中一块盘坏,依然能正常工作
这样配置datanode是为了让读写磁盘的效率增加,提升iops
2) 分区
a) 系统
/ 50G
/boot 200M
/swap 20G
/var 50G
/usr 100G
/opt 100G
b) 数据
/data1---数据盘1
...
/datan---数据盘n
6. 目录规划
序号 | 说明 | 目录 |
1 | Jdk安装目录 | /usr/java/jdk1.6.0_31x64 |
2 | Hadoop安装目录 | /usr/local/hadoop-0.20.2-cdh3u3 |
3 | Ant安装目录 | /usr/local/apache-ant-1.8.3 |
4 | Hadoop配置相关根目录 | /opt/hadoop |
5 | Hadoop HDFS相关根目录 | /opt/hadoop/dfs |
6 | Hadoop namenode HDFS空间镜像文件目录 | /opt/hadoop/dfs/name |
7 | Hadoop Secondary namenode HDFS空间镜像文件目录 | /opt/hadoop/dfs/secondaryname |
8 | Hadoop 日志 | /opt/hadoop/logs |
9 | Hadoop 临时目录 | /opt/hadoop/tmp |
10 | Hadoop 配置文件目录 | /opt/hadoop/conf |
11 | Mapred用临时目录 | /var/lib/hadoop-0.20/cache/ |
7. 软件安装
7.1 jdk安装
1) 版本:jdk1.6.0_31 linux 64位,安装包:jdk-6u31-linux-x64-rpm.bin
2) 安装目录:/usr/java/jdk1.6.0_31x64
3) 安装步骤
a) 下载jdk-6u31-linux-x64-rpm.bin
b) 将jdk-6u31-linux-x64-rpm.bin复制到/usr/java/
c) ./jdk-6u31-linux-x64-rpm.bin
d) 删除jdk-6u31-linux-x64-rpm.bin释放空间
4) 设置java环境变量
a) 打开profile
#vi /etc/profile
b) 添加java环境变量
export JAVA_HOME=/usr/java/jdk1.6.0_31x64
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
export PATH=$PATH:$JAVA_HOME/bin
c) 使配置生效
#source /etc/profile
5) 更新 alternatives,选择JDK版本
#update-alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_31x64/bin/java 60
#update-alternatives --config java
6) 进入 /usr/bin/目录
#cd /usr/bin
#ln -s -f /usr/java/jdk1.6.0_31x64/jre/bin/java
#ln -s -f /usr/java/jdk1.6.0_31x64/bin/javac
7) 验证
#java -version
7.2 hadoop安装
1) 版本:hadoop-0.20.2-cdh3u3
2) 安装目录:/usr/local/hadoop-0.20.2-cdh3u3
3) 安装步骤
a) 将 hadoop-0.20.2-cdh3u3 复制到/usr/local/
b) tar zxvf hadoop-0.20.2-cdh3u3.tar.gz
c) 删除hadoop-0.20.2-cdh3u3.tar.gz,释放空间
rm hadoop-0.20.2-cdh3u3.tar.gz
4) 设置hadoop环境变量
a) 打开profile
#vi /etc/profile
b) 添加java环境变量
export HADOOP_HOME=/usr/local/hadoop-0.20.2-cdh3u3
export HADOOP_CONF_DIR=${HADOOP_HOME}/conf
export PATH=$PATH:$HADOOP_HOME/bin
c) 使配置生效
#source /etc/profile
7.3 ant安装
1) 版本:apache-ant-1.8.3-bin.tar.gz
2) 安装目录:/usr/local/apache-ant-1.8.3
3) 安装步骤
a) 将 apache-ant-1.8.3-bin.tar.gz 复制到/usr/local/
b) tar zxvf apache-ant-1.8.3-bin.tar.gz
c) 删除 apache-ant-1.8.3-bin.tar.gz释放空间
4) 配置环境变量
a) #vi /etc/profile
b) 添加
export ANT_HOME=/usr/local/apache-ant-1.8.3
export PATH=$PATH:$ANT_HOME/bin
c) 使配置生效
#source /etc/profile
d) 验证 ant -version
7.4 lzo安装
1) 安装包说明
lzo-2.06.tar.gz------------------------lzo压缩算法
kevinweil-hadoop-lzo-6bb1b7f.tar.gz----hadoop调用lzo的native库和jar
lzop-1.03.tar.gz-----------------------linux lzo工具
2) 安装步骤
a) 安装gcc
yum -y install gcc gcc-c++ autoconf automake
b) 安装lzo
l 将 lzo-2.06.tar.gz复制到/usr/local
l 解压:tar zxvf lzo-2.06.tar.gz
l 编译:
cd lzo-2.06
./configure --enable-shared
make
make install
l 拷贝/usr/local/lib目录下的lzo库文件到/usr/lib(32位平台),或/usr/lib64(64位平台)
cp /usr/local/lib/liblzo2.* /usr/lib64/
c) 编译安装 hadoop lzo 本地库及jar
l 将 kevinweil-hadoop-lzo-6bb1b7f.tar.gz 复制到/usr/local
l 解压:tar zxvf kevinweil-hadoop-lzo-6bb1b7f.tar.gz
l 编译:cd kevinweil-hadoop-lzo-6bb1b7f
export CFLAGS=-m64
export CXXFLAGS=-m64
export ANT_OPTS="-Dhttp.proxyHost=221.6.15.156 -Dhttp.proxyPort=82"
ant compile-native tar
把编码/解码器以及native库拷贝到$HADOOP_HOME/lib目录下:
cp build/hadoop-lzo-0.4.15.jar $HADOOP_HOME/lib
cp build/native/Linux-amd64-64/lib/* $HADOOP_HOME/lib/native/Linux-amd64-64/
native库拷贝到/usr/lib64/
cp build/native/Linux-amd64-64/lib/* /usr/lib64/
l 问题:无法编译成功。
由于需要访问repo2.maven.org,
需要设置代理export ANT_OPTS="-Dhttp.proxyHost=221.6.15.156 -Dhttp.proxyPort=82"
http代理主机可以从网上查找
d) 安装 lzop
l 将 lzop-1.03.tar.gz 复制到/usr/local
l 解压:tar -zxvf lzop-1.03.tar.gz
l 编译:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
cd lzop-1.03
./configure
make
make install
l 命令:
压缩 lzop -9 /usr/local/soft/lzo/test.log
解压 lzop -d /usr/local/soft/lzo/test.log.lzo
测试文件完整性 lzop -t /usr/local/soft/lzo/test.log