这次配置的环境是Hadoop1.2.1版本,Hadoop在13年推出了Hadoop2.0版本,该版本在Hadoop1.0版本的基础上作了较大的改动,提升了Hadoop集群任务调度、资源分配以及故障处理方面的效率。
Hadoop2.0在Hadoop1.0的基础上,首先对HDFS作了改动,在Hadoop1.0中,HDFS系统中NameNode节点只允许有1个,当然,在GFS的论文中,集群中影藏着一个ShadowNode,作为NameNode的备份,应该就是Hadoop1.0中配置的SecondaryNameNode吧,在Hadoop2.0中,HDFS系统中可以存在多个NameNode,这些NameNode之间相互独立,DataNode向所有的NameNode注册消息,这样,加强了系统的水平扩展能力以及系统的可用性。
Hadoop2.0还有的一个改动就是对MapReduce运行框架的一个变动,在Hadoop1.0中,JobClient向Master服务器提交任务后,任务由JobTracker分为不同的Task,提交给Slaver服务器进行计算,Master服务器的任务包括任务的分配、资源的分配、Task执行情况的追踪, 以及Task执行失败后的处理,所有这些东西都集中在Master服务器上,由此带来了单点失效的风险以及加大了任务分配失败的概率,在Hadoop2.0中,通过对资源管理以及任务管理的改进,Master节点只进行资源的分配 以及工作状态的监控,其他的比如工作的划分,任务状态的检测等都交给Slaver节点,这个也就是最新的Yarn框架,其系统结构如下图所示:
从中可以看出,Master服务器只负责运行ResourceManager,负责资源的管理,具体的任务由ApplicationManager负责管理,这其中包括任务的分配、状态跟踪以及错误处理。
Hadoop环境的搭建主要是配置 一下几个文件:core-site.xml,hdfs-site.xml,mapred-site.xml以及yarn-site.xml。
core-site.xml里面主要配置集群的任务提交地址。
hdfs-site.xml里面填写关于hdfs系统相关的配置,包括目录文件及数据文件的位置。
mapred-site.xml:配置JobTracker的端口,map操作的中间结果的本地位置。
yarn-site.xml:这是hadoop2中有的特殊的配置文件,是对yarn框架的配置,具体的配置信息见hadoop官网,但是不会填写。
配置Hadoop1的环境还是挺简单的,但是Hadoop2的配置文件中的内容改变较大,配置了2.6但是不成功。
利用Hadoop1的集群,作了一些性能方面的测试,Hadoop1的集群的环境是一台Master,2台Slaver,每台Slaver都是单核,2G内存的配置,测试的程序是Hadoop自带的WordCount用例。
本地生成了134兆的文件,单个文件,通过字节写的单词统计程序,统计完一个文件,耗时17秒,在集群中,单个文件的耗时为1分44秒。从单个文件的结果看,Hadoop没有体现出他应该有的性能来,后来测试了10个这样的文件,本地用时3分34秒,集群第一次用时3分44秒,性能已经相当接近了,再考虑到集群两台Slaver的配置加起来也没有我一台笔记本的配置高,所以结果可以接受,在第一次Job执行完后,立即执行第二次,结果是2分50秒,这个结果赞了。。