Hadoop入门概念

 

   Hadoop做者:Dong Cutting.java

       受Google三篇论文的启发.apache

   版本:tomcat

     Apache:官方版本服务器

     Cloudera:官方版本的封装,优化,打不少patch,商业版本网络

     HortonWorks:基于apache的版本进行了集成架构

 

hadoop是什么?框架

    一个适合大数据的分布式存储和计算平台.jvm

    是一个平台,分布式的存储和分布式的计算,在平台之上跑的通常都是大数据.抽象的层面理解hadoop就是一个分布式的平台.分布式

什么是分布式的存储系统?oop

    数据实际被分散存储,可是对于开发人员而言感受不到.

什么是分布式计算?

    一台tomcat不行的话,咱们用多台tomcat来应对,用户的请求就被分散到多台机器上去了,必定要有一个请求的分发机制.

什么是分布式计算系统?

    用户的请求过来以后,被分散到多台机器上运行,可是开发人员感受不到,不须要去管,是否是真的在不少机器上在运行,对用户操做透明的计算系统就是一种分布式计算系统.

    分布式存储和计算的平台是跨操做系统的,封装了操做系统,操做系统的差别对咱们用户来讲是透明的,适合大数据的.小数据放在hadoop上计算,效率低

什么样的数据能够称为大数据呢?

    上百G,PB,TB级别的,传统的应用搞不定的数据

为何要有有分布式存储?

    数据在单服务器下存储搞不定了,这时候,逼着咱们要把数据存在不少台机器上存储,可是,不少台服务器对咱们开发人员而言必需要知道他们,识别他们,才处理它上边的数据,对咱们开发人员而言咱们指望有一个透明的系统去管理分布式存储

为何要有分布式计算?

    集中式计算的瓶颈是在磁盘IO上.把数据分不到多台服务器上存储,计算请求分散到多台服务器上同时执行,计算任务不多,

 

Hadoop核心项目:

    HDFS:Hadoop Distributed File System分布式文件系统,用来管理文件的.在hdfs上存储的数据是分散不少服务器之上的,可是用户感受不到,文件真的分布在不少台机器上,就像一台机器上似的.

    MapReduce:分布式并行计算框架.实现的是分布式计算,大数据分布在不少台服务器上,须要它去并行地去执行

      Map:在每一个分散的机器上进行计算的那部分.Reduce:主要作最后的一个汇总

HDFS架构:

    hdfs和MapReduce都是主从结构.管理与被管理这种关系,分为管理者和被管理者.被管理者一般作具体的事物的,管理者一般是组织,协调,管理工做的.

      节点:网络环境中的每一台服务器.

    主节点:只有一个NameNode,负责各个节点数据的组织管理,

    从节点:有不少个DataNode,负责存储数据,数据节点

     NameNode对外,DataNode对内,NameNode接收用户的操做请求,NameNode负责协调管理,不是真正的存放数据,会把数据分散到各个节点上去存储

  海量数据是单节点处理不了的,因此咱们的数据须要存放在多台服务器上,做为管理的NamNode知道数据具体存放在DataNode的哪些节点上面

    NameNode如何知道数据存放在DataNode节点的位置的呢?

      NameNode对外暴漏的就是目录的文件系统

    用户要进行hdfs操做的时候,首先和NameNode打交道,NameNode上边有一个文件系统的目录结构,用户经过看文件系统的目录结构,就知道咱们的数据是存放在那个路径下面,文件叫什么名字,文件的路径,文件有多大,咱们的数据具体存放在那些节点上,客户是不须要关心的

    NamNode负责:接收用户操做请求,是用户操做的入口.维护文件系统的目录结构,称做命名空间.

    DataNode负责:存储文件数据

MapReduce架构:

     主节点执行一个管理者的角色,从节点执行一个被管理者的角色.管理和被管理完成数据的一个计算(任何对数据的处理都叫作计算,查询,过滤,数据的检索..利用cpu和内存进行数据处理).

    主节点只有一个:JobTracker,

    把咱们用户的操做请求,拿过来,分发给TaskTracker,接收用户提交的计算任务,把计算任务分配到TaskTracker去执行,监控TaskTracker的执行状况

    从节点有不少个:TaskTracker,

    是咱们本身安装部署的,一般和DataNode在一块儿,执行用户的操做,运行时根据TaskTracker上DataNode的数据只执行一部分,执行程序时,去找DataNode本地的数据,而后加载DataNode上边的数据,去运行

    MapReduce进行计算时,处理的数据就是用户提交的这些数据

    TaskTracker经过反射将咱们的程序读进内存中,而后在jvm中运行,程序在含有数据的DataNode的节点上运行

    TaskTracker负责用户提交的计算任务

    节点的数量越多,总体的计算时间越短,JobTracker管理执行任务的TaskTracker

    NameNode和DataNode负责完成数据存储

    JobTracker和TaskTracker完成数据的计算

    NameNode和JobTracker不必定非要在同一台机器上,在生产中,一般是分开的,由于用户的请求,NameNode也接收,JobTracker也接收,为了防止NameNode操做慢,因此NameNode  最好是一台机器,充分利用cpu和内存,JobTracker也是一台机器,都是独立的

    DataNode和TaskTracker一般是同一台机器,是由于TaskTracker在运行的时候,能够执行本地的数据,若是不在一块儿,就要通过网络传播(网络一不稳定,二耗时) DataNode只管理本地,  无论理远程

    JobTracker和TaskTracker不从HDFS上读数据同样能够去作事情

    用户存储数据首先和NameNode打交道,用户的数据直接和DataNode打交道,绕过了NameNode,就是说用户在进行存储的时候,去问NameNode我要去哪里读写数据,一旦用户知道了,  就没有NameNode的事了,直接去DataNode那去处理了.假设用户处理数据必定通过NameNode,那么两三个用户上来以后,NameNode内存几乎全爆了,由于是海量数据,内存确定是装不下  的.只是向NameNode申请block块和blockId

    架构的设计是让数据传输的时候不通过NameNode,因此架构没有瓶颈

Hadoop的特色:

    扩容能力(Scalable):能可靠(reliably)地存储和处理PB级别的数据.这就是存储数据的,数据装不了了,再增长节点就能够了

    成本低(Economical):能够经过普通机器组成的服务器群来分发以及处理数据.这些服务器群总便可达数千个节点.

    高效率(Efficient):经过分发数据,hadoop能够在数据所在节点上并行地(parallel)处理他们,这使得处理很是的迅速.

    可靠性(Reliable):hadoop可以自动地维护数据的多份副本,而且在任务失败后可以自动地从新部署(redeploy)计算任务.JobTracker能够监控TaskTracker运行状况,一旦TaskTracker崩了,在其余的节点上再起一个任务,能够保证任务的执行

Hadoop集群的物理分布: 

    主节点只有一个,从节点有不少个,而且TaskTracker和DataNode都在一块儿,实际部署中JobTracker和NameNode各有一台机器,集群须要扩展的时候只须要增长从节点就能够了,机器之  间通讯经过网络进行传输.用户经过一个外部网络链接到咱们的这个局域网中

单节点的物理结构:

        

    不管是主节点或者是从节点都有一个共同点,他们都是一台服务器,上边装的都是Linux操做系统,Linux之上又装了JVM,在虚拟机上跑的都是一些java程序.若是只有一个java程序运行的  话,叫作集中式的运行环境,若是会开启不少的java程序去运行的话,它就是一个分布式应用环境,hadoop运行时,会有不少的java程序

    主节点和从节点的区分:

      根据服务上运行的java程序的不一样区分,有的程序扮演主节点,有的程序扮演从节点.一个节点能够有多个java进程, 也能够有一个,这些节点能够在一个机器上,也能够在不少台机器上  分散的.

相关文章
相关标签/搜索