hadoop工作原理

什么是hadoop?

Hadoop无非就是:HDFS(文件系统),yarn(任务调配),mapReduce(编程模型,大数据并行运算),我们安装完hadoop就已经包括了以上;

Hadoop集群其实就是HDFS集群,说到HDFS,下面来谈谈什么是HDFS

 

HDFS:其实就是个文件系统,和fastDFS类似,像百度云,阿里云等就是个文件存储系统,当然一般如果仅仅是为了用来存储文件的话直接fastDFS这个就已经够了,HDFS目的不单单是用来存储文件这么简单,它还涉及分布式计算等。

HDFS工作原理,用文字有点难以表达,那么我就直接画个图吧:

HDFS分有NameNode和DataNode,NameNode是整个文件系统目录,基于内存存储,存储的是一些文件的详细信息,比如文件名、文件大小、创建时间、文件位置等。Datanode是文件的数据信息,也就是文件本身,不过是分割后的小文件。上面图已经有做了介绍了,这里就不再赘述了。

 

Yarn:是一种新的 Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

 

MapReduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

Mapreduce工作原理如下图:

 hadoop工作原理_第1张图片

MapReduce所编写好的程序将跑在各个DataNode上,这里有个概念就是计算向数据移动,也就是DataNode的数据文件存储在这里,我的程序发送到DataNode节点上去读取数据和分析数据就好了。期间会有出现各个DataNode之间进行数据发送,比如说节点DataNode1进行这台机读取数据时进行shuffle时需要把相同的key作为一组调用一次reduce,那么如果这时当然会有一些同key的在其他节点DataNode上的,所以就需要进行数据传送。Input这里的wordcount.txt就是DataNode上的文件数据。Split阶段是MapReduce一定会执行的,这是它的规则,而map阶段就是我们必须进行手动干预的,也就是编码对数据进行分析,分析成map文件,然后再shuffle阶段中自发进行数据派送,规则是以同样的key为一组调用reduce阶段进行数据压缩,reduce也是进行手动干预的,我们编码进行数据计算,计算同key的个数,统计完后就可以输出一个文件出来了,这整个过程数据的传输都是放在context这个上下文中。下面是借鉴网上的一张图,HDFS与MapReduce之间的关系协助大概就是这么个意思。

hadoop工作原理_第2张图片

以上纯属个人的一点浅薄认识,如有不对的地方望指正。

你可能感兴趣的:(hadoop工作原理)