大数据的简单概述

大数据

定义:在短时间内快速产生大量多种多样的有价值的信息

由于大数据的数据量非常大所以在数据信息存储的时候会有两种方式去解决这种问题,一是垂直扩展,一是横向扩展,横向扩展可以用简单廉价的服务器或者PC端就可以

大数据的产生是根据谷歌的三大论文产生的

MapReduce
http://blog.csdn.net/active1001/archive/2007/07/02/1675920.aspx
GFS
http://blog.csdn.net/xuleicsu/archive/2005/11/10/526386.aspx
BigTale
http://blog.csdn.net/accesine960/archive/2006/02/09/595628.aspx

GFS为HDFS分布式文件系统(分布式存储)
MapReduce为分布式的处理
BigData-------HBase

http://hadoop.apache.org/ -----hadoop官网

hdfs
yarn— 资源和任务调度
mapreduce—批处理
spark :

  1. spark core
  2. sparkSQL----可以使用sql处理
  3. sparkStreaming—流式处理
  4. milib —机器学习裤
  5. graphx ---- spark已经停止维护

Hdfs
HDFS 源于 Google 在2003年10月份发表的GFS(Google File System) 论文。 它其实就是 GFS 的一个克隆版本

优点

1、高容错性

数据自动保存多个副本。它通过增加副本的形式,提高容错性。
某一个副本丢失以后,它可以自动恢复,这是由 HDFS 内部机制实现的,我们不必关心。

2、适合批处理

它是通过移动计算而不是移动数据。
它会把数据位置暴露给计算框架。

3、适合大数据处理

处理数据达到 GB、TB、甚至PB级别的数据。
能够处理百万规模以上的文件数量,数量相当之大。
能够处理10K节点的规模。

4、流式文件访问

一次写入,多次读取。文件一旦写入不能修改,只能追加。
它能保证数据的一致性。

5、可构建在廉价机器上

它通过多副本机制,提高可靠性。
它提供了容错和恢复机制。比如某一个副本丢失,可以通过其它副本来恢复。

HDFS的存储方式

以block块的形式将大文件进行相应的存储

HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。下面我们分别介绍这四个组成部分

  1. Client
     文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的 
     Block,然后进行存储。
     与 NameNode 交互,获取文件的位置信息。
     与 DataNode 交互,读取或者写入数据。
     Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。
     Client 可以通过一些命令来访问 HDFS。
  1. Namenode
      管理DataNode的信息,管理元数据(描述数据的数据)
      接受client的读写请求
      与DataNode之间进行相应的通信
  1. Datanode
      存储数据
      汇报自身情况
      接受client发送过来的请求(读、写)
      与DataNode之间进行相应的通信
  1. **Secondary NameNode:**并非 NameNode 的热备。当NameNode
    挂掉的时候,它并不能马上替换 NameNode 并提供服务
       辅助 NameNode,分担其工作量。
       定期合并 fsimage和fsedits,并推送给NameNode。
       在紧急情况下,可辅助恢复 NameNode。

1.× 64M
2.× 128M
文件线性切割成块(Block) :偏移量 offset (byte)
block分散存储在集群节点中
单一文件Block大小一致,文件与文件也可以不一致
Block可以设置副本数,副本分散在不同节点中
副本数不能超过节点数量
文件上传可以设置Block大小和副本数
已上传的文件Block副本数可以调整,大小不变
只支持一次写入但可以多次读取,同一时刻只有一个写入者

HDFS主从架构

主节点 —Namenode
从节点 —Datanode
客户端 —客户端

hdfs的读写机制 : 存文件 读文件
备份--------解决安全问题

写操作
  1. 有一个大文件
  2. client将大文件进行切块
  3. 向Namenode汇报   (1).切割完成的总块数
               (2).文件的大小
               (3).文件的权限
               (4).文件的属主
               (5). 文件的上传时间
  4. client切下一块 128M
  5. client会向Namenode申请资源 --Namenode的信息
  6. Namenode会返回一批负载不高的Datanode给client
  7. client会向Datanode里面发送block并且做好备份
  8. datanode存放block块之后会向Namenode汇报情况
读请求
  1. namenode会向client发送一个请求,client接受到请求之后,会向Namenode申请节点信息
  2. nameNode会向client发送一些节点信息
  3. client获取到节点信息之后去DN上拿取数据 —就近原则
备份机制
  1. 集群内提交  在提交的节点上放置block
    集群外提交  选择一个负载不高的节点进行存放
  2. 放置在与第一个备份不同的机架的任意节点上
  3. 放置在第二个机架不同节点上
    在这里插入图片描述
pipeline管道
  1. Namenode在返回client一些DataNode的信息之后
  2. client会和这些DataNode形成一个管道,并且将block切割成一个个ackpackage(64K)
  3. datanode会从管道中拿取相应的数据进行存储
  4. 当存储完成之后,datanode会向Namenode进行汇报
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值