1. hadoop的诞生
Google大数据技术主要包含三大部分,MapReduce、BigTable、GFS,主要具有以下特点:
- 成本降低,能用pc机就不用大型机和高端存储。
- 软件容错,硬件故障视为常态,通过软件保证高可靠性
- 简化并行分布式计算,无须控制节点同步和数据交换。
Hadoop就是根据谷歌发布的相关技术论文,模仿谷歌大数据技术的一个开源实现。
Hadoop是开源的分布式存储、分布式计算平台,包含hdfs和MapReduce两大部分。
- hdfs:分布式文件系统,存储海量数据
- MapReduce:并行处理框架,实现任务分解和调度
优势:
1.高扩展
2.低成本
3.成熟的生态圈(开源)
2. hadoop的生态圈
hadoop的生态系统主要包括以下5个部分:
- hdfs
- MapReduce
- Hive:SQL语句 ==> MapReduce任务
- HBase:与传统HDFS不同的是,放弃事物特性,追求更高地扩展,提供数据的随机读写和实时访问,实现对表数据的读写功能。
- ZooKeeper:监控Hadoop集群中每个节点的状态,管理整个集群的配置,维护节点间的一致性等
3. hadoop安装
安装有三点需要配置
1.Linux环境
2.jdk
3.配置hadoop:修改四个配置文件
4. hdfs基本概念
hdfs的文件被分成块进行存储,hdfs块的默认大小是64MB,块是文件存储处理的逻辑单元。
hdfs中有两类节点,NameNode和DataNode。
NameNode:管理节点,存放文件元数据
1.文件和数据块的映射表
2.数据块与数据节点的映射表
DataNode是hdfs的工作节点,存放数据块。
数据管理策略:
- 每个数据块默认是3个副本,分布在两个机架内的三个节点。
- 心跳检测:DataNode定期向NameNode发送心跳检测,让NameNode知道哪些DataNode挂了,哪些在正常工作。
- 二级NameNode:定期同步元数据映像文件和修改日志,NameNode故障后,将SecondNameNode转正
hdfs中文件的读写操作流程:
读操作如下图所示:
写操作如下图所示:
hdfs的特点:
1. 数据冗余,硬件容错
2. 流式的数据访问
3. 存储大文件,都是小文件的话,NameNode压力大
适用性和局限性:
1. 适合一次写入多次读取,顺序读写
2. 不支持多用户并发写相同文件
hdfs常用命令行:
hadoop fs -ls
hadoop fs -put
hadoop fs -mkdir
hadoop fs -cat
5. MapReduce原理
5.1 基本原理:分而治之,一个大任务分成很多小的子任务(map),并行执行后,合并结果(reduce)。
5.2 执行基本流程:
Input ==> Input split ==> map task ==> shuffle(交换) ==> reduce task ==> output
5.3 基本概念:
- Job & Task:客户端发起一个Job,一个Job会拆分为多个Task
- JobTracker:分发任务给TaskTracker
主要负责:1. 作业调度 2. 分配任务,监控任务执行进度 3.监控TaskTracker的状态。
- TaskTracker:通常和DataNode是同一种节点,保证计算跟着数据走,保证最快找到需要的数据。
主要负责: 1. 执行任务 2. 汇报任务状态
5.4 MapReduce的容错机制
1. 对于运行出错的任务重复执行,默认重复执行4次
2. 推测执行:某个节点算的特别慢的时候,让这个节点继续算,但重新开一个TaskTracker来计算,看谁先算完,保证计算效率不会因为某个节点计算缓慢而大大折扣。