一:介绍

       Hadoop是项目的总称,起源于作者儿子的一只吃饱了的大象的名字。主要是由HDFS、MapReduce和Hbase组成。
  HDFS是Google File System(GFS)【分布式存储】的JAVA开源实现。(有篇关于GFS的论文)
  MapReduce是Google MapReduce【并行计算执行框架】的JAVA开源实现。(有篇关于mapreduce的论文)
  HBase(列式存储)是Google BigTable的开源实现。·(有篇关于bigtable的论文)

       hadoop的hdfs最初是为了解决nutch爬取网络数据的海量存储问题,mapreduce最初是为了解决多台机器存储海量         数据后建索引复杂的问题

二:

HDFS:新增、删除、查询文件流程

hdfsclient对namecode发起请求(新增、删除、查询),eg:新增文件

1.NameNode:

名字节点(只有一个),存储文件元数据,eg:文件大小、权限、所有者、包含哪些块block、block保存在哪个datanode上(这个由DataNode启动时上报,只是存在内存上,并不存在namenode的磁盘文件fsp_w_picpath上)

存储的磁盘文件名为:fsp_w_picpath,此外还有个文件名edits的文件记录着对metadata的操作日志,eg:新增一个文件等

2.secondaryNameNode

根据设置的时间间隔(默认3600s),拷贝并合并fsp_w_picpath和edits为最新的fsp_w_picpath,再返回给namenode节点服务器(操作都是现在内存,再落地,所以内存的数据是最新的)

3.DataNode:

数据节点(可以有多个),存放文件内容,存放的时候,也同时会生成多个 文件内容一模一样的 副本集

4.HdfsClient

三:

HDFS优点:

1.高容错性:数据自动保存多个副本,副本丢失后,自动恢复

2.适合大数据处理:GB、TB甚至PB级别数据

3.可构建在廉价机器上:通过多副本提高可靠性、提供容错和恢复机制

HDFS缺点:

1.不太适合 低延迟数据访问的要求(eg:毫秒级),因为hadoop上存储数据量太多

2.不太适合大量小文件的存取,因为NameNode占用太多的内存

3.不太适合并发写入、文件随机修改(eg:网盘,网盘上文件的内容是不能修改的)

五:HDFS数据存储单元是block

一个文件存储方式是:按大小被切分成若干个block,存储到不同节点上,默认情况下每个block都有3(数值可修改)个副本,默认block大小为64MB,可配置,若文件大小不到64MB,则单独存成一个block

六:hdfs读取流程

hdfs client -> open namenode,返回block个数和位置等信息给客户端 -> 并发读取文件块,组合成一个文件返回给客户端 -> 关闭流

七:hdfs写流程

hdfs client ->create,在namenode写入信息,eg:文件大小、文件分多少block,返回给hdfs client ->写入datanode,对于副本,后台启动线程执行,hdfd client不负责副本的生成->告诉hdfs client完成,并把block分布在datanode的信息告诉namenode

八:安装

1、伪分布式:所有节点在同一台机器上

2、分布式:所有节点不是在同一台机器

九:Hadoop分布式计算框架,什么是分布式计算:移动计算而不移动数据

9.1:MapRuduce:适合离线计算

1.Map:任务的分解

2:Reduce:结果的汇总

Hadoop_第1张图片

    Hadoop_第2张图片


Hadoop_第3张图片

十:jobtracker  tasktracker




十一:

Hadoop_第4张图片



Hadoop_第5张图片


Hadoop_第6张图片


Hadoop_第7张图片

Hadoop_第8张图片


    Hadoop_第9张图片