hadoop概述
- hadoop是一个开源的可运行在大规模集群上的分布式并行编程框架,实现了Map/Reduce 计算模型
Hadoop的作用与功能
- Hadoop采用了分布式存储方式,提高了读写速度,并扩大了存储容量
- 采用MapReduce来整合分布式文件系统上的数据,可保证分析和处理数据的高效
- Hadoop还采用存储冗余数据的方式保证数据的安全性
- Hadoop中HDFS的高容错特性,以及它是基于Java 语言开发的,使得Hadoop可以部署在低廉的计算机集群
- Hadoop中HDFS的数据管理能力,MapReduce处理任务时的高效率,以及它的开源特性,使其在同类的分布式系统中大放异彩,并在众多行业中被广泛采用
hadoop优点
- 可靠:维护多个工作数据副本,保证对失效节点重新分布处理
- 高效:一并行方式工作,通过并行处理加快速度。Hadoop可伸缩,能处理PB级数据
- 成本低:依赖于廉价的服务器
- 运行在Linux平台上
- 支持多种编程语言
hadoop体系结构
- 核心:HDFS 和 MapReduce
- Hadoop 分布式文件系统 HDFS,提供高可靠性的底层存储支持
- HBase 位于结构化存储层,一个分布式的列存储数据库
- Avro 数据序列化系统,将数据对象转化成便于数据存储和网络传输的格式
- Zookeeper 一个分布式的、高可靠性的协调服务,提供分布式所之类的基本服务
- Hive 建立在hadoop之上的数据仓库
- Pig 提供一种数据流语言,pig数据流脚本自动转换成为MapReduce任务链在hadoop上执行
- Sqoop SQL-to-hadoop 为 RDBMS与Hadoop平台之间及逆行快速批量数据交换
HDFS 体系结构
- 一个HDFS 集群有一个NameNode 和若干个DataNOde组成
- NameNode作为主服务器,管理文件系统的命名空间和客户端对文件访问操作;它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。
- DataNode 管理存储数据
- HDFS 支持用户以文件形式存储数据,文件被分程若干数据块,放在一组DataNode上
- 没有namenode, 文件系统将无法使用。事实上,如果运行namenode 服务的机器毁坏,文件系统上所有的文件将会丟失,因为我们不知道如何根据datanode 的块重建文件。
- 心跳是每3秒一次,心跳返回结果带有namenode给该datanode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个datanode的心跳,则认为该节点不可用。
- 控制命令由客户端提交
MapReduce 体系结构
- 有一个单独运行在主节点上的JobTracker 和 运行在每个集群姐带你上的 TaskTracker共同组成
- JobTracker 和 namenode不一定在同一台机器上
- TaskTracker和 dataNode是一一对应的
- 主节点负责调度一个作业的所有任务,这些人物分布在不同的从节点上;主节点监控他们的执行情况,柄重新执行之前是白的任务。从节点只负责由主节点指派的任务。
- 当一个Job被提交后,JobTracker接收到提交作业和配置信息之后,将配置信息分发给从节点,同时调度任务并监控TaskTracker的执行