Hadoop

一.概论

1 一个开源,可靠的,可开展的用于分布式框架

2.本身用于离线分析的框架,对历史数据进行分析

二.模块

1.hadoop Common:基本模块

2 HDFS:用于存储数据

3 hadoop Yarn:任务调度和节点管理

4 hadoop MapReduce:用于并行发布式计算

5 hadoop Ozone:用于对象的存储

6 hadoop Submarine: 用于机器学习的引擎

三.版本

1. hadoop1.0 包含HDFS和MapReduce

2. hadoop2.0 包含HDFS,MapReduce 以及Yarn  , 和Hadoop1不兼容

3. hadoop3.0   兼容hadoop2 ,新添了Ozone Submari

安装

1.单机模式:只能MapReduce

2 伪分布式:用一个机器模拟集群环境,启动Hadoop的所有的进程

3 全分布式:用多个机器

伪分布式的安装:

 1,关闭防火墙

2. 配置主机名。需要注意的是Hadoop的集群中的主机名不能有_

3 配置hosts文件,将主机名和ip地址进行映射

4.配置ssh进行免密互通

5.reboot

6.目录下tar     -xvf  hadoop

7 进入Hadoop的安装目录的子目录etc/hadoop,配置Hadoop:cd hadoop2.7.1/etc/hadoop

8    配置hadoop-env.sh。core-stte.xml      hdfs-site.xml   将mapred-site.xml.template复制为mapred-site.xml:

配置 mapred-site.xml         yarn-site.xml   slaves

9 配置hadoop的环境变量

10 格式化namenode:hadoop namenode -form

启动hadoop:start-all.sh

 

HDFS

1.是Hadoop的组件,用于完成分布式存储

2.在存储数据的数据全将数据切分,切出的数据就称为Block

3 分两种节点 NameNode负责记录 以及管理 DataNode

4 NameNode和Datanode是Hadoop的进程,在全分布式,NamaNode和DataNode部署在不同机架上

5.在HDFS,为了保证数据的完整性,将每一个Block进行备份,(副本)  ,默认副本数量是3

 

特点:

1.能够存储超大文件--切块

2.能够快速的应对和校验故障 --心跳

3, 不建议存储大量的小文件

4,可靠的文件系统---复本

5 高吞吐量,允许多个客户端同时读写

6 一次写人,多次读取,不支持修改

7 做不到低延迟数据访问

8 不支持事务 

 

 

Block

1.表示一个数据块,是HDFS中数据存储文件的最基本的存储单位

2.每一文件上传HDFS,都会切成一个或多个Block

3  Block 默认的大小在Hadoop1.0中是64M,在Hadoop2.0中是128M (不足 有多大存多大)

4.切块的意义:

  存储超大文件,为了能够进行快速的备份

 

NameNode

1.负责管理DataNode和存储元数据

2.元数据包含: 文件存放路径  文件的切块数量   块的复本数量  复本与DataNode的关系

3.元数据维系内存(为了快速的查询)以及磁盘(为了崩溃恢复)

4 元数据的存储目录:有hadoop.tmp.dir来指定    /tmp/dfs/name/cu

5 元数据的存储文件是edits和fsimage

  fsimage:用于记录元数据      edits:用于记录写操作

6.当有写请求时,NameNode会首先写该操作先写到磁盘上的edits文件中,当edits文件写成功后才会修改内存,并向客户端返回成功信号,而此时fsimage中的数据并没有发生改动。所以,fsimage中的数据并不是实时的数据,而是在达到条件时再进行更新,更新过程需要SecondaryNameNode参

7.edits文件和fsimage文件进行合并条件:

  a.时间维度,当距离上一次合并达到指定时间在core-site,xml配置 默认1小时

  b.空间维度 当edits 到达指定的大小指定大小 默认是64M

  c. NameNode 重启  

8.NamdeNode通过心跳机制来管理DataNode(DataNode定时,默认是3s 给NameNode发送心跳信号)

 心跳信号----  当前节点的状态,当前节点存储Block信息

9 如果NameNode长时间(默认是10min)没有收到DataNode的心跳,则认为这个DataNode已经lost,将这个DataNode上存储的Block再备份到其他的节点保证复本数量

10 NameNode 是HDFS的核心节点,在hadoop1.0 只能存在一个,在hadoop2.0的全分布式只能存在两个

11. 当NameNode重新启动,eidt和fsimage更新合并,然后将fsiamge中的元数据加载到内存中,等待dataNode的心跳(校验数据的总量是否正确),这个过程是安全模式       HDFS处在安全模式,不对外服务

12 当启动HDFS的时候,如果发现处在安全模式,需要等待一会儿,,成功会推出安全模式

13. 如果HDFS一直处在安全模式,说明数据遗失了,

14 在伪分布式,复本数量配置为1

 

DataNode

 1 用于进行数据存储

2.数据存储是Block的形式存储在DataNode

3.DataNode每3s给NameNode发送心跳

 

回收站策略:

在HDFS中,当删除文件或者是目录,默认立即删除,在core-site.xml  加上fs.trash.interal  指定回收时间

 

SecondaryNameNode

 辅助NameNode进行数据的合并,在hadoop2.0的全分布式,没有SecondaryNameNode被NameNode替换,元数据

的合并是发生在NameNode,在分布式。有SecondaryNameNode

 

扩展:

Federation HDFS 联邦HDFS

 

dfs目录

1.在NameNode进行格式化的时候出现

2.在dfs目录下有name ,data,nameSecondary 分别对应NameNode dataNode  SecondaryNameNode的存储目录

3 当启动HDFS,在name目录下,会生成in_use.lock,该文件防止多次启动 

8 上传文件在NameNode上的步骤:

9     hDFS,文件一旦上传,就不能更改

 

流程:

1.读取流程

    1.客户端发起RPC请求到Namanode

    2 NameNode收到请求,查看元数据,取到文件所对应Block存储地址,将这些节点地址放入一个队列返回客户端

    3 客户端收到队列后,连接DataNode     依次取出Block的地址来处理

    4 客户端会选择较近的节点读取数据

     5 读完Block,验证这个Block的数据量,checkSum,如果验证失败,则认为这个Block已经Block已经损坏了,,客户单会发送NameNode信息。然后换一个节点重新读取重新验证

     6

 

2.写人流程(上传流程)

   1.客户端发起RPC请求到Namanode

    2 NameNode收到请求,查看元数据,校验:

          a.在跟目录是否相同名字文件

          b. 校验当前用户是否权限

    3 ,如果校验通过。则NameNode会记录元数据,并计算文件的大小以及确定Block的个数,分配Block存储节点

并将存储节点地址放在队列返回客户单

     4,客户端收到队列,会队列取出地址,选择较近的节点,将数据进行封包(packets),传递到DataNode

     5  从第一个复本自动将Block备份其他的DataNode,返回ack,实际是NIO的channel来进行传输的方式进行备份

  6等客户将所有写完block,就会NameNode发送消息。收到消息,会将文件关闭

 

 

3,删除流程

   1.客户端发起RPC请求到Namanode

   2.nameNode收到请求,查看元数据,验证当前请求是否删除这个文件的权限

   3. 有权限,先将这个操作记录下edits中,然后修改元数据,将文件从元数据中删除。,这个文件还在DataNode

   4 当DataNode发送心跳时候,校验Block信息,发送指令删除文件对应Block

 

 

 

复本放置策略:

1 在HDFS,默认3个复本

2.第一个复本:从集群内部,dataNode,从集群外面  NameNode选择一个相对空间少的节点

3,第 二个复本:和第一个复本不同机架的节点

4.第三个复本:和第二个复本同个机架的不同的节点

5 更多的复本:选择一个相对空间少的节点

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值