Hadoop基础

大数据定义

是在以Hadoop为代表的数据平台框架上进行的各种数据分析技术,包括了以Hadoop和Spark为代表的基础大数据框架,还包括了实时数据处理,离线数据处理,数据分析,数据挖掘和用机器算法进行预测分析等技术。

Hadoop

Hadoop = HDFS(分布式文件系统)+MapReduce(分布式计算)
分布式缓存:加载到内存发生在Job执行之前,每个从节点各自都缓存一份相同的共享数据,若共享数据过大,可分批缓存,重复执行作业。
HDFS:大数据技术的基础,数据块+1个NameNode+多个DataNode
优点:

  • 适合大文件存储,支持TB、PB级的数据存储,并有副本策略
  • 可构建在廉价的机器上,并有一定的容错和恢复机制
  • 支持流式数据访问,一次写入,多次读取最高效

缺点:

  • 不适合大量小文件存储
  • 不适合并发写入,不支持文件随机修改
  • 不支持随机读等低延时的访问方式

数据块:抽象块而非整个文件作为存储单元,默认64MB,一般设置为128M,备份3份(设置太小,一般文件也会被分割为多个数据块,查找多个数据块,效率不高,对NameNode内存消耗较高;设置过大,对于并行支持不是很好,也会涉及系统其他问题(如系统重启加载数据较慢,系统恢复时间长))
NameNode

  • 管理文件系统命名空间,存放文件元数据
  • 维护文件系统的所有文件和目录,文件与数据块的映射
  • 记录每个文件中各个块所在数据节点的信息

DataNode

  • 存储并检索数据块
  • 向NameNode更新所存储块的列表

HDFS写流程:
- 客户端向NameNode发起写数据请求
- NameNode将DataNode信息发送给客户端
- 客户端将数据分块,数据块1写入DataNode节点,DataNode自动完成备份(共3份)
- DataNode反馈给NameNode存储完成,NameNode通知客户端
- 剩余数据块依次上述3 、4步骤进行,直至数据库全部写入

HDFS读流程:
- 客户端向NameNode发送读数据请求
- NameNode找出距离最近的DataNode节点信息反馈给客户端
- 客户端从DataNode分块下载文件

MapReduce:大数据应用的解决方案,一种编程模型和编程方法
编程模型

  • 输入一个大文件,通过split将其分为多个分片
  • 每个文件分片由单独的机器去处理,这就是Map方法
  • 将各个机器计算的结果进行汇总并得到最终的结果,这就是Reduce方法

yarn:资源管理程序,Hadoop2.0新增

  • ResourceManager:分配和调度资源,启动并监控ApplicationMaster,监控NodeManager
  • ApplicationMaster:为MR类型的程序申请资源,并分配给内部任务;负责数据切分,监控任务的执行及容错
  • NodeManager:管理单个节点的资源,处理来自ResourceManager的命令,处理来自ApplicationMaster的命令

你可能感兴趣的:(Hadoop,Hadoop基础)