大数据之Hadoop流存储

通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。

      HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。

      Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。

      HDFS 内部的所有通信都基于标准的 TCP/IP 协议。

      实际的 I/O事务并没有经过 NameNode,只有表示 DataNode 和块的文件映射的元数据经过 NameNode。

  Hadoop 的MapReduce 却是一个高度抽象的并行编程模型,它将分布式并行编程抽象为两个原语操作,即map 操作和reduce 操作

 map函数:接受一个键值对(key-value pair),产生一组中间键值对。MapReduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。

  reduce函数:接受一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。

NameNode的metadata信息在启动后会加载到内存中

文件包括:

① fsimage (文件系统镜像):元数据镜像文件。存储某一时段NameNode内存元数据信息。

② edits: 操作日志文件。默认大于64M强制检查

③ fstime: 保存最近一次checkpoint的时间

block是hdfs读写数据的基本单位。


客户端通过调用FileSystem对象的open()方法来打开希望读取的文件,对于HDFS来说,这个对象时分布文件系统的一个实例;

DistributedFileSystem通过使用RPC来调用NameNode以确定文件起始块的位置,同一Block按照重复数会返回多个位置,这些位置按照Hadoop集群拓扑结构排序,距离客户端近的排在前面;

前两步会返回一个FSDataInputStream对象,该对象会被封装成DFSInputStream对象,DFSInputStream可以方便的管理datanode和namenode数据流,客户端对这个输入流调用read()方法;

存储着文件起始块的DataNode地址的DFSInputStream随即连接距离最近的DataNode,通过对数据流反复调用read()方法,可以将数据从DataNode传输到客户端;

到达块的末端时,DFSInputStream会关闭与该DataNode的连接,然后寻找下一个块的最佳DataNode,这些操作对客户端来说是透明的,客户端的角度看来只是读一个持续不断的流;

一旦客户端完成读取,就对FSDataInputStream调用close()方法关闭文件读取。


加工/计算层(MapReduce)是一种并行编程模型,以及

存储层(Hadoop分布式文件系统),hdfs

Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具。(通用工具)

Hadoop YARN :这是作业调度和集群资源管理的框架。

你可能感兴趣的:(大数据之Hadoop流存储)