大数据技术原理与应用——大数据处理架构Hadoop

Hadoop简介 

  Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构。面试

  Hadoop是基于Java语言开发的,具备很好的跨平台特性,而且能够部署在廉价的计算机集群中。算法

  Hadoop的核心是分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce。数据库

  Hadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。编程


 Hadoop的特性

  Hadoop是一个可以对大量数据进行分布式处理的软件框架,而且是一种可靠、高效、可伸缩的方式进行处理的,它具备如下几个方面的特性:服务器

  高可靠性:采用冗余数据存储方式,即便一个副本发生故障,其余副本也能够保证正常对外提供服务。架构

  高效性:做为并行分布式计算平台,Hadoop采用分布式存储和分布式处理两大核心技术,可以高效地处理PB级数据。框架

  高可扩展性:Hadoop的设计目标是能够高效稳定地运行在廉价的计算机集群上,能够扩展到数以千万计的计算机节点上。机器学习

  高容错性:采用冗余数据存储方式,自动保存数据的多个副本,而且可以自动将失败的任务进行从新分配。编程语言

  成本低:Hadoop采用廉价的计算机集群,成本比较低,普通用户也很容易用本身的PC搭建Hadoop运行环境。分布式

  运行在Linux平台上:Hadoop是基于Java语言开发的,能够较好地运行在Linux平台上。

  支持多种编程语言:Hadoop上的应用程序也可使用其余编程语言编写。


 Hadoop生态系统

  通过多年的发展。Hadoop生态系统不断完善和成熟,目前已经包括了多个子项目。除了核心的HDFS和MapReduce之外,Hadoop生态系统还包括Zookeeper,HBase,Hive,Pig,Mahout、Sqoop、Flume、Ambari等功能组件。须要说明的是,Hadoop2.0中新增了一些重要的组件,即HDFS HA和分布式资源调度管理框架YRAN等。

          

  HDFS:Hadoop分布式文件系统是Hadoop项目的两大核心之一,是针对谷歌文件系统的开源实现。HDFS具备处理超大数据、流式处理、能够运行在廉价商用服务器上等优势。HDFS在设计之初就是要运行在廉价的大型服务器集群上,所以在设计上就把硬件故障做为一种常态来考虑,能够保证在部分硬件发生故障的状况下仍然可以保证文件系统的总体可用性和可靠性。

  HBase:HBase是一个提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,通常采用HDFS做为其底层数据存储。HBase是针对谷歌BigTable的开源实现,两者都采用了相同的数据模型,具备强大的非结构化数据存储能力。HBase与传统关系数据库的一个重要区别是,前者采用基于列的存储,然后者采用基于行的存储。HBase具备良好的横向扩展能力,能够经过不断增长廉价的商用服务器来增长存储能力。

  MapReduce:Hadoop MapReduce是针对谷歌MapReduce的开源实现。MapRedece是一种编程模型,用于大规模数据集(大于1TB)的并行运算,它将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数——Map和Reduce上,而且容许用户在不了解分布式系统底层细节的状况下开发并行应用程序,并将其运行于廉价计算机集群上,完成海量数据的处理。通俗地说,MapReduce的核心思想就是“分而治之”,它把输入的数据集切分为若干独立的数据块,分发给一个主节点管理下的各个分节点来共同并行完成;最后,经过整合各个节点的中间结果获得最终结果。

  Hive:Hive是一个基于Hadoop的数据仓库工具,能够用于对Hadoop文件中数据集进行数据整理、特殊查询和分析存储。Hive学习门槛比较低,由于它提供了相似于关系数据库SQL语言的查询语句——Hive QL,能够经过Hive QL语句快速实现简单的MapReduce统计,Hive自身能够将Hive QL语句转换为MapReduce任务进行运行,而没必要开发专门的MapReduce应用,于是十分适合数据仓库的统计分析。

  Pig:是一种数据流语言和运行环境,适合于使用Hadoop和MapRedeuce平台来查询大型半结构化数据集。虽然MapReduce应用程序的编写不是十分复杂,但毕竟也是须要必定的开发经验的。Pig的出现大大简化了Hadoop常见的工做任务,它在MapReduce的基础上建立了更简单的过程语言抽象,为Hadoop应用程序提供了一种更加接近结构化查询语言(SQL)的接口。Pig是一个相对简单的语言,它能够执行语句,所以当咱们须要从大型数据集中搜索知足某个给定搜索条件的记录时,采用Pig要比MapReduce具备明显的优点,前者只须要编写一个简单的脚本在集群中自动并行处理与分发,然后者则须要编写一个单独的MapReduce应用程序。

  Mahout:Mahout是Apache软件基金会旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地建立智能应用程序。

  Zookeeper:是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工做系统,提供分布式锁之类的基本服务(如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等),用于构建分布式应用,减轻分布式应用程序所承担的协调任务,Zookeeper使用Java编写,很容易编程接入,它使用了一个和文件树结构类似的数据模型,可使用Java或者C来进行编程接入。

  Flume:是Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各种数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理并写到各类数据接收方的能力。

  Sqoop:是SQL-to-Hadoop的缩写,主要用来在Hadoop和关系数据库之间交换数据,能够改进数据的互操特性。经过Sqoop能够方便地将数据从MySQL、Oracle、PostgreSQL等关系数据库中导入Hadoop(能够导入HDFS、HBase或Hive),或者将数据从Hadoop导出到关系数据库,使得传统关系数据库和Hadoop之间的数据迁移变得很是方便。Sqoop主要经过JDBC和关系数据库进行交互,理论上,支持JDBC的关系数据库均可以使用Sqoop和Hadoop进行数据交互。Sqoop是专门为大数据集设计的,支持增量更新,能够将新纪录添加到最近一次导出的数据源上,或者指定上次修改的时间戳。(写到这里忽然想起来面试的时候不知天高地厚非要和HR交流技术,HR问我将大规模数据从数据库导出应该使用什么技术,傻傻地回答JDBC。

  Ambari:Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的安装、部署、配置和管理。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、HBase、Zookeeper、Sqoop等。

相关文章
相关标签/搜索