Hive知识之Hadoop与分布式原理

1、Hadoop的基本介绍

  • Hadoop是Apache旗下的一个分布式计算开源框架,基于JAVA语言,实现在大量计算机组成的集群中对海量数据进行分布式计算。
  • Hadoop的核心组件:HDFS、MapReduce、Yarn
  • Hadoop是云计算的PaaS层的解决方案之一,并不等同与PaaS,更不等同于云计算本身。
  • Hadoop可应用于数据服务基础平台建设、用户画像、网站点击流、数据挖掘等方面。

2、Hadoop生态圈概览

Hive知识之Hadoop与分布式原理

  • Ambari:基于Web的工具,支持Hadoop集群的供应、管理和监控。

  • Zookeeper:为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

  • HBase:高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。

  • Oozie:工作流引擎服务器,用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapReduce)的任务。

  • Hive:基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

  • Pig:基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫PigLatin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。

  • Mahout:基于Hadoop的机器学习和数据挖掘的分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。

  • Sqoop:用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL,Oracle,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

  • Flume:分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。

3、Hadoop的核心组成部分

  • HDFS:分布式文件存储系统
  • MapReduce:分布式计算框架
  • Yarn:资源调度引擎(集群资源管理系统)
3.1 HDFS
3.1.1 HDFS的基本介绍
  • HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。
  • HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(largedata set)的应用程序。
  • HDFS是块级别的分布式文件存储系统
3.1.2 HDFS的设计特点
  • 大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储。
  • 文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多。
  • 流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。
  • 廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。
  • 硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。
3.1.3 HDFS的架构

Hive知识之Hadoop与分布式原理

  • 一个HDFS集群是由一个Namenode和一定数目的Datanode组成。
  • Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。
  • Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。
  • 在内部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。
  • Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。
  • Datanode在Namenode的指挥下进行block的创建、删除和复制。
3.1.4 HDFS的关键元素
  • Block:将一个文件进行分块,通常是64M。
  • NameNode:存储文件的元数据,如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
  • NameNode 由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode。
  • DataNode:在本地文件系统存储文件块数据,以及块数据的校验和。
  • Secondary NameNode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
3.2 MapReduce
3.2.1 MapReduce的基本介绍
  • MapReduce是采用一种分而治之的思想设计出来的分布式计算框架
  • 如一个复杂的计算任务,单台服务器无法胜任时,可将此大任务切分成一个个小的任务,小任务分别在不同的服务器上并行的执行,最终再汇总每个小任务的结果。
3.2.2 MapReduce的执行流程

Hive知识之Hadoop与分布式原理

  • MapReduce由两个Map阶段和Reduce阶段组成
  • Map阶段:切分成一个个小的任务
  • Reduce阶段:汇总小任务的结果
3.3 Yarn
  • Yarn是一个集群资源管理系统和调度平台,可为上层应用提供统 一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨 大好处。
  • Yarn具有足够的通用性,可以支持其它的分布式计算模式
    Hive知识之Hadoop与分布式原理