Hadoop相关概念
1、Hadoop简述
Hadoop是Apache的一个分布式计算开源框架,它可以运行于大中型集群的廉价硬件设备上,为应用程序提供了一组稳定可靠的接口。同时它是Google集群系统的一个开源项目总称。底层是Google文件系统(GFS)。
基于java语言构建的Hadoop框架实际上一种分布式处理大数据平台,其包括软件和众多子项目。在近十年中Hadoop已成为大数据革命的中心。
2、其子项目简述:
◎MapReduce 分布式数据处理模型和执行环境,运行于大型商用机集群。
◎HDFS 分布式文件系统,运行于大型商用机集群。
◎Pig 一种数据流语言和运行环境,用以检索非常大的数据集。Pig运行在MapReduce和HDFS 的集群上。
◎Hive 一个分布式、按列存储的数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL 的查询语言(由运行时引擎翻译成MapReduce作业)用以查询数据。
◎ZooKeeper 一个分布式、可用性高的协调服务。ZooKeeper提供分布式锁之类的基本服务用于构建分布式应用。
◎Sqoop 在数据库和HDFS之间高效传输数据的工具。
◎Common 一组分布式文件系统和通用I/O的组件与接口(序列化、javaRPC和持久化数据结构)。
◎Avro 一种支持高效,跨语言的RPC以及永久存储数据的序列化系统。
3、Hadoop的优点
◎可扩展性:不论是存储的可扩展还是计算的可扩展都是Hadoop设计的根本。
◎经济:框架可以运行在任何普通的PC上。
◎可靠:分布式文件系统的备份恢复机制以及MapReduce的任务监控保证了分布式处理的可靠性。
◎高效:分布式分拣系统的高效数据交互实现以及MapReduce结合Local Data处理的模式,为高效处理海量的信息作了基础准备。
二 Hadoop的核心
Hadoop 的核心是HDFS和MapReduce。HDFS 实现存储,而MapReduce实现分析处理。HDFS 和MapReduce实现是完全分离的,并不是没有HDFS就不能MapReduce运算。
1、HDFS
1.1HDFS的基本概念
Hadoop跟其他云计算项目有共同点和目标:实现海量数据的计算。而进行海量计算需要一个稳定的,安全的数据容器,才有了Hadoop分布式文件系统(HDFS。HDFS是GFS的开源实现,是Hadoop的底层实现部分,存储Hadoop集群中所有存储节点上的文件。
数据块(block)
HDFS默认的最基本的存储单位是64M的数据块。和普通文件系统相同的是,HDFS中的文件是被分成64M一块的数据块存储的。不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。
NameNode和DataNode
NameNode用来管理文件系统的命名空间,其将所有的文件和文件夹的元数据保存在一个文件系统树中。它还保存了一个文件包括哪些数据块,分布在哪些DataNode上。这些是在系统启动的时候从DataNode收集而成的。
DataNode是文件系统中真正存储数据的地方。
HDFS
构建一个非常庞大的分布式文件系统,在集群中节点失效是正常的。节点的数量在Hadoop 中不是固定的。单一的文件命名空间,保证数据的一致性,写入一次多次读取。典型的128MB 的数据块大小,每一个数据块在多个DataNode有复制。客户端通过NameNode得到数据块的位臵,直接访问DataNode获取数据。
文件操作
HDFS 并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件。如果客户机想将文件写到 HDFS 上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HDFS 块大小,创建文件的请求将发送给 NameNode。NameNode 将以DataNode 标识和目标块响应客户机。同时也通知将要保存文件块副本的 DataNode。当客户机开始将临时文件发送给第一个 DataNode 时,将立即通过管道方式将块内容转发给副本DataNode。客户机也负责创建保存在相同 HDFS 名称空间中的校验和(文件。在最后的文件块发送之后,NameNode 将文件创建提交到它的持久化元数据存储
HDFS的适用情况
适用情况:
◎为以流式数据访问模式存储超大文件而设计的文件系统。
◎流式数据访问:HDFS建立的思想是一次写入、多次读取模式是最高效的。
◎商用硬件:不需要运行在昂贵并且高可靠的硬件上。
不适用情况:
◎大量的小文件。
◎低延迟数据访问。
◎多用户写入,任意修改。
2、MapReduce
2.1MapReduce概念
MapReduce是一种编程模型。Map/Reduce主要包括两个步骤:Map和Reduce。一个MapReduce 作业通常会把输入的数据集切分为若干独立的数据块,由map任务以完全并行的方式处理。框架会对map的输出进行排序,然后把结果输入给reduce任务。每一步都有Key-Value对作为输入和输出:
◎map阶段的Key-Value对的格式是由输入的格式决定的。
◎map阶段的输出Key-Value对的格式必须同reduce阶段的输入key-value对的合适相对应。
◎reduce过程中,将map过程中的输出作为其输入。
Hadoop学习总结
MapReduce数据流