Hadoop集群分布式安装
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。
对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框 架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任 务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交 时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心,HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。
l HDFS
HDFS(hadoop distributed File System),Hadoop的分布式文件系统,是一个高容错性的系统,适合部署在廉价的机器上,提供高吞吐量的数据访问,适合超大数据集。大文件被分成64M的数据块分布存储在集群机器中。
HDFS的设计特点:
1、大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小就没啥意思了。
2、文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得都。
3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。
4、廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。
5、硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。
HDFS的关键元素:
Block:文件进行分块,通常是64M
NameNode:保存整个文件系统的目录信息,文件信息及分块信息。
DataNode;分布在廉价的计算机上,用户存储Block块文件。
SecondaryNameNode:分担NameNode的工作,是NameNode的冷备份。
热备份:b是a热备份,如果a无法工作,b马上运行代替a工作
冷备份:b是a的冷备份,如果a无法工作,b不能马上代替a工作,但是b存储a的一些信息,减少a无法工作的损失。
l MapReduce
MapReduce是一种编程模型,用户大规模数据集(大于1TB)的并行计算,MapReduce通过Map(映射)和Reduce(化简)实现并行计算。通过Map(映射)函数,把一组键值对映射成一组新的键值对;指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
MapReduce的程序流程
1、首先用户程序(JobClient)提交了一个job,Job的信息会发送到JobTracker,jo