我个人理解的 hadoop

待本文写完后目标是能够自己配置成功小型的hadoop服务器集群,能够写一个简单的hadoop应用demo,和一些基本的hadoop设计概念

刚接触工作不久,做了一些关于服务器集群运算的任务,然后就开始熟悉到当前比较热门的hadoop 框架下的海量数据处理,加上前两天单位上组织一个海量数据处理的学习交流会,让我对hadoop或者说是海量数据处理有了更深的认识.

首先得在没有任何基础的情况下还得了解什么是hadoop,有啥作用,应用在什么场合.

说的直白通俗一点,hadoop就是把一台计算机段时间做不完的活分配给多台计算机做,这样就可以在短时间得到结果而无需等待一台计算机长时间做一个任务

可以用面向的数据规模或者计算规模的大小作为衡量,那么

个人pc机:面向池塘量数据或计算规模
服务器:面向湖量数据或计算规模
hadoop:面向海量数据或计算规模

这儿把hadoop比喻成一个实体机,其实hadoop只是一个软件,但是比喻成实体机也很合乎情理,实际上hadoop是一套软件,他的作用是把众多计算机管理到一起,让他们做同一个工作,程序员通过hadoop的api来实现对整个计算机集群的管理.

当你对hadoop有大体上的认识后,就需要了解一些关于hadoop的术语,在hadoop中我个人从开始接触到最近算是比较了解整体流程和看了一些书籍后觉得hadoop总得来说术语还算是比较少的,现在吧常用的术语列举并做解释:

HDFS MapReduce namenode datanode jobtracker tasktracker slave master Mapper Reducer

以上算是HADOOP最常用的一些术语,在进一步理解HADOOP工作流程原理之前需要对上面的术语有相关的实体联系.

HDFS:hadoop distributed file system,这是用hadoop做任务的一个非常强大的地方,一个分布式文件系统,据权威的解释是这个文件系统具有高容错性,读取速度和写入速度远远大于单个磁盘的速度,高容错性的意思就是在众多配置非常普通的硬件上能够实现整体数据的一致性,举个例子就是,如果在集群中的一台机器坏掉了,这并不会影响最终的任务运行,而无论这台机器是什么时候坏掉的,正在做任务坏的,已经差不多做完,或者正在读写数据的时候,简单的比喻就是像公司里面的某一个员工,他在不在或者说做不做活,公司都能把上级交的任务完成,只是完成的时间或许比较起来要慢一点而已,至于他什么时候不做或者其他原因,领导是没有必要关心的

MapReduce:这个是让hadoop集群运行任务所用到的一个编程接口,也算是一种编程方法或流程,通过mapreduce来实现任务程序的编写

namenode:HDFS延伸出来的一个虚拟概念,因为HDFS中的文件是保存在很多台计算机上的,这些计算机每台保存整个文件的一部分,那势必有一台计算机来管理这些保存数据计算机的管理者,所以管理的这台计算机就叫做namenode

datanode:就是namenode管理的众多计算机中每一台就叫做一个datanode

同理jobtracker就是管理任务分发运行的一个主机,其他的就叫tasktracker

在HADOOP系统中,管理的计算机通常就叫master,那么呗管理的就叫slave

mapper 和 reducer是编程过程中用到的两个接口,实现这两个接口就能编写mapreduce函数了

下面这幅图是hadoop刚下载后的原始目录结构




我们在使用过程中以后用到的就是一个配置conf目录



待续.........................2011年9月28日15:08:22

猜你喜欢

转载自tsaowe.iteye.com/blog/1180688