Hadoop 个人学习笔记(一)——HAWQ介绍
1.Hadoop是什么?
开源的 分布式存储 分布式计算
2.核心部分
HDFS:(系统)分布式文件系统,用于存储海量的数据
MapReduce:(框架)并行处理框架,实现任务分解和调度
其他 :
HIV
HBASE (HDFS的区别,它可以提供数据的随机读写和实时访问,实现对表数据的读写功能)
zookeeper (监控,维护)
3.优势
1.高扩展
2.低成本
3.成熟的生态圈
4.HDFS
4.1基本概念
块(Block):HDFS的文件都被分成块进行存储,默认大小64MB
NameNode:管理节点,存放文件元数据
①文件与数据块的映射表
②数据库与数据节点的映射表
DataNode:HDFS的工作节点,存放真正的数据块
4.2HDFS中数据管理与容错
1.数据块的放置(数据块副本):每个数据块3个副本,分布在两个机架内的三个节点。(确保数据可靠)
2.心跳测试:DataNode定期向NameNode发送心跳消息(检测DataNode的状态,是否挂了)
3.二级NameNode(SeconderyNameNode):二级NameNode定期同步元数据映像文件和修改日志NameNode发生故障时,备胎转正。
4.3HDFS读取文件的流程
1.客户端向NameNode发起读取请求(可能是java程序,可能是命令行),把文件名、路径告诉NameNode。
2.NameNode返回元数据,客户端知道文件包含哪些块,这是块分别会在哪些地方。(例如问,A在哪,NameNode告诉在 DN1、2、4中)
3.客户端找到Block下载
4.4HDFS写入文件的流程
1.文件要拆分成块block(最大64MB)
2.客户端找NameNode 寻找当前在线、空间够、可用的DN返回。
3.客户端写入Blocks
4.流水线复制(再复制2个出来,放不同的DN中)
5.更新元数据到NameNode
4.4HDFS的特点
1.数据冗余,硬件容错
2.流式的数据访问(写一次都多次,一旦数据写入,不好修改)
3.存储大文件
- 适合数据批量读写,吞吐量高
- 不适合做交互式应用,满足不了低延迟
- 适合一次写入,多次读取,顺序读写
- 不支持多个用户并发写相同的文件
5.MapRedce
一个大任务分成多个小的子任务(map),并行执行后,合并结果(reduce)。
5.1基本概念
- Job&Task 一个job被拆分成几个Task (MapTask 和 ReduceTask)
- JobTracker 调度,分配任务,监控执行进度,监控TrackTracker的状态
- TaskTracker 执行任务,向JobTracker汇报任务状态
5.3MapRedce的容错机制
- 重复执行 默认执行4次
- 推测执行