大数据下的困惑
随着数据规模的不断增长,单一的系统存储存在着存储容量、读写速率、计算效率等瓶颈。
Google针对这个问题 提出了 MapReduce BigTable GFS 三大理论,具有三大优势。
优势一:成本降低、能用PC机、就不使用大型机与高端存储。
优势二:软件保持容错性,硬件的故障视为一种常态,通过软件保持其可靠性。
优势三:简化分布式并行计算,无需控制节点同步与数据交换。
Hadoop,是对Google大数据思想的开源实现。
Hadoop
使用简单的编程模型实现分布式大数据计算的框架,它被设计成从单一的服务器扩展到上千台服务器,每一个服务器都提供存储和计算,认为每一台服务器都是易发生故障的,不依赖于硬件提供高可用性,使用应用层来进行检测和处理故障,进而提供高度可用的服务。
Hadoop模型主要包括 HDFS、MapReduce、Common(util组件)、YARN 。
HDFS:分布式文件系统,存储海量数据
MapReduce:并行处理框架,实现任务分解和调度。
Hadoop优势
高扩展,低成本,成熟的生态圈(Hive、Hbase、zookeeper)
搭建环境
linux环境(可以租用云主机如阿里云)
jdk
hadoop包
HDFS基本概念
Block HDFS的文件被分成块来存储,默认块大小为64MB,是文件存储处理的逻辑单元
DataNode HDFS的工作节点,存放数据块。
NameNode 管理节点,存放文件元数据(文件与数据块的映射表、数据块与数据节点的映射表)
HDFS数据管理策略
数据块副本:为保证数据不丢失,每个数据块三个副本,分布在两个机架的三个节点
心跳检测:DataNode定期向NameNode发送心跳信息
二级NameNode:定期同步元数据映像文件和修改日志
HDFS特点
数据冗余以便于硬件容错
流式的数据访问(一次写入 多次读取 顺序读写)
存储大文件
HDFS适用性与局限性
适合数据批量读写,吞吐量较高
不适合交互式应用,低延迟很难满足
不支持多个用户并发的写相同的文件
MapReduce基本概念
分而治之的思想,将一个大任务分解成多个小的子任务(map),并行执行后,合并结果(reduce)
job与task 一个job会被拆分成多个task,每一个task会分为map-task与reduce-task
jobTracker 作业调度、分配任务、监控任务执行进度 监控taskTracker状态
taskTracker 执行任务 汇报任务状态
MapReduce容错机制
重复执行 重复执行四次,以防止硬件上出现的错误
推测执行 不会因为某一个tracker出现问题,影响整个job的执行效率