Hadoop集群测试方案及计划 v1.0

lygkkk123 贡献于2012-08-21

作者 Lee  创建于2012-05-15 07:52:00   修改者Lee  修改于2012-06-27 01:56:00字数7623

文档摘要:引言随着云计算技术的飞速发展,越来越多的数据密集型企业相继出现.面临着这些海量的数据信息,包括结构化信息、半结构化信息及其非结构化信息,如何存储并对这些信息进行处理将是这些企业面临的巨大挑战.Hadoop是一个基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个(Hadoop Distributed FileSystem),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。
关键词:

Hadoop集群测试方案 1. 引言 随着云计算技术的飞速发展,越来越多的数据密集型企业相继出现.面临着这些海量的数据信息,包括结构化信息、半结构化信息及其非结构化信息,如何存储并对这些信息进行处理将是这些企业面临的巨大挑战. Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。 1.1测试目的 通过用Hadoop的HDFS文件系统分布式的存储工程实际运作中产生的海量数据文件,记录及分析作业完成的时间,对Hadoop技术在工程领域中的数据存储服务进行研究。 1.2背景 目前实际工程中多采用传统技术存储数据文件,存储速度慢,安全性和可靠性低,而Hadoop下的云存储技术是新型的分布式存储办法,提高存储速度,另外安全性和可靠性也有很大的提升。 1.3测试硬件环境 1.3.1Hadoop集群组成: 集群搭建在一台高性能服务器中,采用VMware虚拟机建立Linux系统节点。 Client ……10 nodes in title 图1 Hadoop集群简图 Metadata TCP/IP Networking DataNode DataNode DataNode DataNode NameNode 功能名称 主机名称 主机系统 主机CPU 主机内存 主机硬盘大小 NameNode Master Centos5.4 Inter Core i7-2600 2GB 50G DataNode1 Slave1 Centos5.4 Inter Core i7-2600 1GB 20G DataNode2 Slave2 Centos5.4 Inter Core i7-2600 1GB 20G DataNode3 Slave3 Centos5.4 Inter Core i7-2600 1GB 20G DataNode4 Slave4 Centos5.4 Inter Core i7-2600 1GB 20G DataNode5 Slave5 Centos5.4 Inter Core i7-2600 1GB 20G DataNode6 Slave6 Centos5.4 Inter Core i7-2600 1GB 20G DataNode7 Slave7 Centos5.4 Inter Core i7-2600 1GB 20G DataNode8 Slave8 Centos5.4 Inter Core i7-2600 1GB 20G DataNode9 Slave9 Centos5.4 Inter Core i7-2600 1GB 20G DataNode10 Slave10 Centos5.4 Inter Core i7-2600 1GB 20G 表1 集群节点名称及性能参数一览表 1.3.2服务器性能一览 图2服务器性能参数 图4 DataNode性能具体参数 图3 NameNode性能具体参数 注:Datanode共计10台,性能参数相同 1.4测试软件环境 1.4.1 节点系统选择 所有节点系统采用Linux发行版之一的CentOs5.4版本; 1.4.2 系统配置 本系统主要有两个地方需要配置 1. 首先是/etc/hosts文件(各台虚拟机需配置一致),配置如下: 127.0.0.1 localhost 192.168.1.106 master 192.168.1.108 slave1 192.168.1.110 slave2 192.168.1.112 slave3 192.168.1.114 slave4 192.168.1.116 slave5 192.168.1.118 slave6 192.168.1.120 slave7 192.168.1.122 slave8 192.168.1.124 slave9 192.168.1.126 slave10 2. 然后是/etc/sysconfig/network配置(各台虚拟机配置,只需将xxx替换成本机主机名,如 192.168.1.106号机,将xxx替换成master) NETWORKING=yes NETWORKING_IPV6=yes HOSTNAME=xxx 1.4.3 JDK安装配置 1.安装 下载linux版本的jdk,将jdk安装复制到/usr/local/目录下,然后进入/usr/local/目录,在终端中执行安装命令   ./jdk-6u21-linux-i586.bin 安装成功会在/usr/local/目录下生成jdk1.6.0_07目录,就是jdk的安装目录 重启电脑,打开终端,输入java -version   如若有显示java的版本信息,则表示安装成功, 2.配置   安装成功后需要配置jdk环境变量   在/etc/profile中添加如下内容:   export JAVA_HOME=/usr/jdk1.6.0_21   export JRE_HOME=/usr/jdk1.6.0_21/jre   export PATH=$PATH:/usr/jdk1.6.0_21/bin   export CLASSPATH=./:/usr/jdk1.6.0_21/lib:/usr/jdk1.6.0_21/jre/lib   保存退出,重启电脑 1.4.4 ssh无密码通信 1. ssh运行配置 修改sshd_config文件,将#PasswordAuthentication no的注释去掉, 并且将NO修改为YES,将#PermitRootLogin yes的注释去掉。 重新启动SSH服务,命令为:/etc/init.d/sshd restart 验证SSH服务状态,命令为:/etc/init.d/sshd status 3.设置master 生成ssh密钥对:ssh-keygen -t rsa 一路回车即可. 查看是否有.ssh文件夹:ls -a 进入.ssh目录:cd .ssh 生成authorized_keys文件:cp id_rsa.pub authorized_keys 建立本身的信任连接:ssh master 输入yes 无需密码 4.设置slave1 生成ssh密钥对:ssh-keygen -t dsa (dsa与server1的rsa设置不要相同) 进入.ssh目录:cd .ssh 生成authorized_keys文件:cp id_dsa.pub authorized_keys 建立本身的信任连接:ssh slave1 输入yes 无需密码 5.设置剩余slave的方法与slave1相同 6.关键步骤 将slave1,slave2等slave的authorized_keys内容追加至master的authorized_keys文件中; slave1: cat authorized_keys 复制内容; master: vi authorized_keys 在最末行添加复制; 剩余slave 同上述操作相同; 将以追加的文件authorized_keys覆盖slave1,slave2等slave上的authorized_keys文件。 登陆slave1:scp master:/root/.ssh/authorized_keys /root/.ssh/authorized_keys 登陆slave2:scp master:/root/.ssh/authorized_keys /root/.ssh/authorized_keys 剩余slave 同上述操作相同; 7.确认机器的信任连接已建立 对每台机器执行:ssh master;ssh slave1;ssh slave2; ssh slave3;ssh slave4;ssh slave5;ssh slave6;ssh slave7;ssh slave8;ssh slave9;ssh slave10;在提示处输入yes回车。 1.4.5 Hadoop版本选择 Hadoop版本选择为hadoop-0.20.2,该版本是目前最稳定的版本。 1.4.6 Hadoop配置 1. conf/hadoop-env.sh文件,添加以下内容 export JAVA_HOME=”java安装的地址” 2.conf/core-site.xml文件 fs.default.name hdfs://master:54310 //HDFS主机名及端口名 The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem. hadoop.tmp.dir /home/hadoop/tmp //此处改为hadoop数据库存储位置 3.conf/hdfs-site.xml文件 dfs.data.dir /home/hadoop/data //datanode中dfs位置 dfs.name.dir /home/hadoop/name //namenode中dfs位置 dfs.replication 3 //备份分数 Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time. 4. conf/mapred-site.xml文件 mapred.job.tracker master:54311 //jobtracker端口号 The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task. mapred.local.dir /home/hadoop/temp //mapred存放地址 mapred.map.tasks 40 //map数,推荐在2~100之间 mapred.reduce.tasks 40 //reduce数,推荐2~100之间 5.conf/masters文件,仅需添加主机名 master 6.conf/slaves文件,仅需添加主机名 slave1 slave2 slave3 slave4 slave5 slave6 slave7 slave8 slave9 slave10 1.4.7 开发环境选择 开发环境为Eclipse-jee-indigo-SR2-linux版本。 该版本可以很好的支持hadoop相关插件。 2测试过程 2.1测试方案: 2.1.1测试目标 为了验证hadoop存储及分析文件的能力,将Engineering-Data-example.txt文件存储进HDFS系统,文件大小100GB,记录存储任务消耗的时间,另外利用MapReduce分析存入系统的txt文件,统计出文件中单词出现的次数,并记录时间。 Engineering-Data-example.txt为配合测试而创造出来的文件,文件内容由各种英文单词组成。 2.1.2 测试过程 将测试过程分为两组进行: 第一组: 1.将Engineering-Data-example.txt文件拆分成1000个大小为100MB大小的文件,如Engineering-Data-example1.txt、Engineering-Data-example2.txt、Engineering-Data-example3.txt……1000个文件的总大小为100GB。在HDFS文件系统中建立/input文件夹,并将Engineering-Data-example.txt群以文件流的方式存储到HDFS下的/input文件夹中,记录存储完成的时间,测试三次,并且计算出存储任务平均完成的时间; 2.存储到HDFS中的Engineering-Data-example.txt文件经过单词出现频数的分析(MapReduce过程),结果保存到HDFS的/output文件夹下(结果文件夹系统会自动生成),记录分析任务完成的时间,测试三次,并且计算出存储任务平均完成的时间。 第二组: 1.直接使用Engineering-Data-example.txt 文件100GB进行测试。在HDFS文件系统中建立/input文件夹,并将Engineering-Data-example.txt以文件流的方式存储到HDFS下的/input文件夹中,记录存储完成的时间,测试三次,并且计算出存储任务平均完成的时间; 2.存储到HDFS中的Engineering-Data-example.txt文件经过单词出现频数的分析(MapReduce过程),结果保存到HDFS的/output文件夹下(结果文件夹系统会自动生成),记录分析任务完成的时间,测试三次,并且计算出存储任务平均完成的时间。 注:每次存储及分析任务开始前,需要删除原有/input /output文件目录或者建立新的文件目录 2.1.3 测试记录 第一组:存储过程记录 测试系统组成 测试程序 测试文件 开始时间 完成时间 耗时 NameNode:1 DataNode: 10 ReadFile v1.0 1000个engineering-data-example文件大小共计100GB 毫秒 NameNode:1 DataNode: 10 ReadFile v1.0 1000个engineering-data-example文件大小共计100GB 毫秒 NameNode:1 DataNode: 10 ReadFile v1.0 1000个engineering-data-example文件大小共计100GB 毫秒 平均完成时间:毫秒 第一组:分析过程记录 测试系统组成 测试程序 测试文件 开始时间 完成时间 耗时 NameNode:1 DataNode: 10 WordCount v1.0 1000个engineering-data-example文件大小共计100GB 毫秒 NameNode:1 DataNode: 10 WordCount v1.0 1000个engineering-data-example文件大小共计100GB 毫秒 NameNode:1 DataNode: 10 WordCount v1.0 1000个engineering-data-example文件大小共计100GB 毫秒 平均完成时间:毫秒 第二组:存储过程记录 测试系统组成 测试程序 测试文件 开始时间 完成时间 耗时 NameNode:1 DataNode: 10 ReadFile v1.0 1个engineering-data-example文件大小100GB 毫秒 NameNode:1 ReadFile v1.0 1个 毫秒 DataNode: 10 engineering-data-example文件大小100GB NameNode:1 DataNode: 10 ReadFile v1.0 1个engineering-data-example文件大小100GB 毫秒 平均完成时间:毫秒 第二组:分析过程记录 测试系统组成 测试程序 测试文件 开始时间 完成时间 耗时 NameNode:1 DataNode: 10 WordCount v1.0 1个engineering-data-example文件大小100GB 毫秒 NameNode:1 DataNode: 10 WordCount v1.0 1个engineering-data-example文件大小100GB 毫秒 NameNode:1 DataNode: 10 WordCount v1.0 1个engineering-data-example文件大小计100GB 毫秒 平均完成时间:毫秒 2.2 测试结果分析 首先对比两组测试结果的正确性,对比结果文件中单词出现的次数是否相同,然后对比测试记录的任务完成时间,找出更优的任务完成方式。 Hadoop集群测试计划 测试方案 计划完成时间 预期完成效果 设计两组测试,要求不同的输入文件,一组为单独大文件,另一组为大量小文件,两组的文件总大小相同,比较并且分析两组任务完成时间。 2012年6月21日之前 得出存储,分析性能对比结果。 设计两组不同集群数测试方案,一组的Datanode为5个,另一组Datanode为10个,在两组完成的任务相同情况下,比较并且分析两组任务完成时间。 2012年6月18日之前 得出存储,分析性能对比结果。 设计两组不同的测试,要求两组的map,和reduce数不同,在两组完成的任务相同情况下,比较并且分析两组任务完成时间。 2012年6月24日之前 得出存储,分析性能对比结果。 在程序优化,系统优化做出工作后,再设计一些测试方案 2012年7月1日之前 得出存储,分析性能对比结果。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 3 人已下载

下载文档