课程安排2014/09Hadoop环境构建构建Hadoop集群•课程目标了解Hadoop安装的三种模式能独立熟练完成Hadoop的安装熟悉Hadoop的配置与管理能够利用基准测试程序测试Hadoop集群构建Hadoop集群•课程大纲集群规范构建Hadoop集群Hadoop配置Hadoop实验-基准测试集群规范集群硬件要求不适用RAID的原因集群部署建议集群网络拓扑集群硬件要求Hadoop运行在商业硬件上,注意两个问题:①商业硬件并不等同于低端硬件,低端机器便宜的零部件会导致维护成本巨大。②也不建议构建在大型机器上,因为集群服务器较少,某一台出现故障,对整个集群影响较大。(故障硬件所占的比重增大了)集群硬件的基本要求:尽管集群采用的机器硬件会有所不同,但Hadoop一般使用多核CPU和多磁盘,以便充分利用现代化硬件的强大功能。不适用RAID的原因RAID可以作为namenode的外部存储器以避免元数据冲突但不会给HDFS带来好处;HDFS本身已满足数据备份需求。尽管RAID条带化(RAID0)技术被广泛用于提升性能,但其速度仍然比HDFS的JBOD(JustaBunchOfDisks)慢JBOD配置的某一磁盘出现故障,HDFS还可以忽略该磁盘继续工作,RAID的某一盘片故障可能会导致整个磁盘阵列不可用。集群部署建议集群大小可用根据需要逐步扩展(大约在10台左右,具体根据实际数据量和计算能力而定)。一个Hadoop集群的规模应该有多大?怎么部署比较合适?部署集群应当注意什么?辅助namenode和namenode可用运行在同一机器之中,但由于内存的原因(辅助与主需要同样的内存需求),二者最好运行在独立的硬件上。对一个小集群(几十个节点)而言,在一台master节点上运行namenode和jobtracker通常没有问题,当namenode需要更多内存时,最好分别放在不同的机器上运行运行namenode的机器一般采用64位硬件,避免32位架构下Java堆的3GB内存限制。NameNode与文件数对应关系网络拓扑通常Hadoop集群架构包含两级网络拓扑。这一架构的突出特点是:同一机架内部节点间的总带宽要远高于不同机架节点的带宽。典型场景是:1、各机架装配10-15个服务器,共享一个10GB的交换机2、各机架的交换机又通过上行链路与一个核心交换机或者路由器互联。构建Hadoop集群集群部署三种模式伪分布式模式的安装与配置完全分布式模式的安装与配置准备与配置安装环境安装虚拟机和linux,虚拟机推荐使用vmware,PC可以使用workstation,服务器可以使用ESXi,在管理上比较方便。ESXi还可以通过拷贝镜像文件复制虚拟机,复制后自动修改网卡号和ip,非常快捷。如果只是实验用途,硬盘大约预留20-30G空间。以Centos为例,分区可以选择默认,安装选项选择DesktopGnome,以及Server、ServerGUI即可。其它Linux,注意选项里应包括ssh,vi(用于编辑配置文件),perl等(有些脚本里包含perl代码需要解析)到Oracle官网下载javajdk安装包,并且进行安装Hadoop-1.2.1:三种运行模式单机模式:安装简单,几乎不用作任何配置,但仅限于调试用途伪分布模式:在单节点上同时启动namenode、datanode、jobtracker、tasktracker、secondarynamenode等5个进程,模拟分布式运行的各个节点完全分布式模式:正常的Hadoop集群,由多个各司其职的节点构成伪分布式模式的安装和配置步骤下载并解压Hadoop安装包,为了和教材一致,选用了1.2.1版本进入Hadoop的解压目录,编辑conf/hadoop-env.sh文件编辑conf目录下core-site.xml、hdfs-site.xml和mapred-site.xml三个核心配置文件配置ssh,生成密钥,使到ssh可以免密码连接localhost格式化HDFS使用bin/start-all.sh启动Hadoop使用bin/stop-all.sh关闭Hadoop下载Hadoop解压hadoopHadoop配置有关文件修改hadoop-env.sh文件修改core-site.xml文件core-site.xml中常见配置参数修改hdfs-site.xml文件hdfs-site.xml文件中常用配置参数修改mapred-site.xml文件mapred-site.xml文件中常用配置参数完全分布式模式的安装和配置配置hosts文件建立hadoop运行账号配置ssh免密码连入下载并解压hadoop安装包配置namenode,修改site文件配置hadoop-env.sh配置masters和slaves文件向各节点复制hadoop格式化namenode启动hadoop用jps检验各后台进程是否成功启动配置hosts文件所有的节点都修改/etc/hosts,使彼此之间都能把主机名解析为ip建立专门的运行hadoop的用户在所有的节点上都建立运行hadoop的专用用户gridssh配置注意要以grid用户登录,在grid用户的主目录下进行操作!每个节点作相同操作分发ssh公钥把各个节点的authorized_keys的内容互相拷贝加入到对方的此文件中,然后就可以免密码彼此ssh连入下载hadoop压缩包并解压在namenode上配置hadoop按照和伪分布模式相同的方法修改core-site.xml,hdfs-site.xml,mapred-site.xml等配置文件修改hadoop-env.sh文件修改masters和slaves文件,记录集群中各个节点向各节点分发hadoop格式化namenode在namenode上启动守护进程,系统会自动到各个节点启动相应的进程修改core-site.xml、hdfs-site.xml以及mapred-site.xml(注意修改localhost)修改masters和slaves文件修改hadoop-env.sh向各节点复制hadoop格式化分布式文件系统启动守护进程检测守护进程启动情况Hadoop配置内存系统日志文件内存系统日志文件Hadoop实验-基准测试TestDFSIO基准测试HDFSTeraSort基准测试实验集群基准测试测试对于验证系统的正确性、分析系统的性能来说非常重要。为了能对系统有更全面的了解、能找到系统的瓶颈所在、能对系统性能做更好的改进。学习Hadoop几种主要的测试手段。如何使用Hadoop自带的测试工具进行测试Intel开放的HadoopBenchmarkSuit:HiBench的安装及使用。(参考:)Hadoop基准测试Hadoop自带了几个基准测试,被打包在几个jar包中,如hadoop-*test*.jar和hadoop-*examples*.jar,在Hadoop环境中可以很方便地运行测试。Hadoop基准测试一、测试条件集群完全安装配置后,应立即开始基准测试。基准测试时集群里不应该运行其他一切任务。二、测试目标1.硬盘故障:新系统最常见的故障。可以通过运行高强度的IO基准测试程序集中测试。例如TestDFSIO2.MapReduce的性能测试方法三、测试方法1、TestDFSIO基准测试HDFS(测试顺序应该是先写测试后读测试)写测试:使用10个map任务写10个文件,每个500m。hadoopjar$HADOOP_HOME/hadoop-test-*.jarTestDFSIO-write-nrFiles10-fileSize1000-resFile/tmp/TestDFSIOresults_write.txt在运行的最后,结果被写入控制台并记录到TestDFSIOresults_write.txt读测试:hadoopjar$HADOOP_HOME/hadoop-test-*.jarTestDFSIO-read-nrFiles10-fileSize1000-resFile/tmp/TestDFSIOresults_read.txt清除测试数据:hadoopjar$HADOOP_HOME/hadoop-test-*.jarTestDFSIO-clean测试方法三、测试方法2、用sort排序测试MapReduceHadoop自带一个部分排序的程序。这对测试整个MapReduce系统很有用,因为整个输入数据集都会通过洗牌传输至reducer。一共三个步骤:生成一些随机的数据,执行排序,然后验证结果。首先我们通过使用RandomWriter生成一些随机的数据。它以每个节点10个map的方式运行一个MapReduce作业,并且每一个map生成近似10GB的随机二进制数据,带有不同长度的键和值。hadoopjar$HADOOP_HOME/hadoop-examples*.jarrandomwriterrandom-data测试方法三、测试方法3、TeraSort基准测试实验hadoopjar$HADOOP_HOME/hadoop-examples*.jarteragen1000000terasort/1000000-input查看数据:hadoopfs-ls/usr/hadoop/terasort/1000000-inputhadoopjarhadoop-*-examples.jarterasortin-dirout-dir排序:hadoopjarhadoop-examples-0.20.2-cdh3u1.jarterasortterasort/1000000-inputterasort/1000000-output查看排序:hadoopfs-lsterasort/1000000-output1TB排序通常用于衡量分布式数据处理框架的数据处理能力。Terasort是Hadoop中的的一个排序作业,在2008年,Hadoop在1TB排序基准评估中赢得第一名,耗时209秒。