- Hadoop构建数据仓库实践
- 王雪迎
- 1667字
- 2020-11-28 16:11:54
3.2 Hadoop简介
Hadoop是较早用来处理大数据集合的分布式存储计算基础架构,最早由Apache软件基金会开发。利用Hadoop,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力,执行高速运算和存储。简单地说,Hadoop是一个平台,在它之上可以更容易地开发和运行处理大规模数据的软件。
Hadoop软件库是一个计算框架,在这个框架下,可以使用一种简单的编程模式,通过多台计算机构成的集群,分布式处理大数据集。Hadoop被设计成可扩展的,它可以方便地从单一服务器扩展到数千台机器,每台机器进行本地计算和存储。除了依赖于硬件交付的高可用性,软件库本身也提供数据保护,并可以在应用层做失败处理,从而在计算机集群的顶层提供高可用服务。
3.2.1 Hadoop的构成
Hadoop包括以下四个基本模块:
● Hadoop基础功能库:支持其他Hadoop模块的通用程序包。
● HDFS:一个分布式文件系统,能够以高吞吐量访问应用的数据。
● YARN:一个作业调度和资源管理框架。
● MapReduce:一个基于YARN的大数据并行处理程序。
除了基本模块,Hadoop相关的其他项目还包括:
● Ambari:一个基于Web的工具,用于配置、管理和监控Hadoop集群。支持HDFS、MapReduce、Hive、HCatalog、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari还提供显示集群健康状况的仪表盘,如热点图等。Ambari以图形化的方式查看MapReduce、Pig和Hive应用程序的运行情况,因此可以通过对用户友好的方式诊断应用的性能问题。
● Avro:一个数据序列化系统。
● Cassandra:一个可扩展的无单点故障的NoSQL多主数据库。
● Chukwa:一个用于大型分布式系统的数据采集系统。
● HBase:一个可扩展的分布式数据库,支持大表的结构化数据存储。
● Hive:一个数据仓库基础架构,提供数据汇总和命令行的即席查询功能。
● Mahout:一个可扩展的机器学习和数据挖掘库。
● Pig:一个用于并行计算的高级数据流语言和执行框架。
● Spark:一个处理Hadoop数据的、高速的、通用的计算引擎。Spark提供了一种简单而富于表达能力的编程模式,支持包括ETL、机器学习、数据流处理、图像计算等多种应用。
● Tez:一个完整的数据流编程框架,在YARN之上建立,提供强大而灵活的引擎,执行任意的有向无环图(DAG)数据处理任务,既支持批处理又支持交互式的用户场景。Tez已经被Hive、Pig等Hadoop生态圈的组件所采用,用来替代MapReduce作为底层执行引擎。
● ZooKeeper:一个用于分布式应用的高性能协调服务。
3.2.2 Hadoop的主要特点
● 扩容能力:能可靠地存储和处理PB级的数据。
● 成本低:可以利用廉价通用的机器组成的服务器群分发、处理数据。这些服务器群总计可达数千个节点。
● 高效率:通过分发数据,Hadoop可以在数据所在的节点上并行地处理它们,这使得处理非常快速。
● 可靠性:Hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署计算任务。
3.2.3 Hadoop架构
Hadoop集群架构如图3-1所示。
图3-1 一个多节点Hadoop集群架构
Hadoop由通用包、MapReduce(MapReduce/MR1或YARN/MR2)、HDFS所构成。通用包提供文件系统和操作系统级别的抽象,包含有必需的JavaArchive(JAR)和启动Hadoop集群所需的相关脚本。
为了有效调度任务,每一个与Hadoop兼容的文件系统都应该具有位置感知的功能,简单说位置感知就是知道工作节点所处的机架(准确地说是网络交换机),因此也叫机架感知。Hadoop应用能够使用这一信息执行数据所在节点上的代码。当任务失败时,在相同交换机上的节点之间进行失败切换,这会节省网络流量。HDFS使用机架感知在多个交换机的节点间复制数据,用于数据冗余。这种方法降低了机架掉电或交换机故障产生的影响,如果一个硬件出现问题,数据仍然是可用的。
一个小规模的Hadoop集群包含一个主节点和多个从节点(工作节点)。主节点上的进程有Job Tracker(对应MR2的Resource Manager)、NameNode,依据配置可能还会有Task Tracker(对应MR2的Node Manager)和DataNode。从节点或工作节点上的进程有DataNode和TaskTracker,尽管该节点可能只是一个数据工作节点,或者只是一个计算工作节点。这种架构一般只用于非标准的小型应用。
在一个大型Hadoop集群中,HDFS节点通过专用的NameNode服务器进行管理,NameNode服务器上保存有文件系统的索引。SecondaryNameNode可以产生NameNode内存结构的快照,因此可以防止NameNode文件系统损坏造成的数据丢失。类似地,也有一个独立的JobTracker服务器管理节点间的作业调度。当HadoopMapReduce运行在其他文件系统上时,HDFS的NameNode、SecondaryNameNode和DataNode会被与特定文件系统相关的等价结构所代替。
Hadoop需要JRE 1.6及其以上版本。标准的集群启动和关闭脚本需要在集群节点间配置ssh。