详解Hadoop系统:Hadoop架构、各部分功能及对大数据的意义

如今Apache Hadoop已成为大数据行业发展背后的驱动力。Hive和Pig等技术也经常被提到,但是他们都有什么功能,为什么会需要奇怪的名字(如Oozie,ZooKeeper、Flume)。

Hadoop带来了廉价的处理大数据(大数据的数据容量通常是10-100GB或更多,同时数据种类多种多样,包括结构化、非结构化等)的能力。但这与之前有什么不同?

现今企业数据仓库和关系型数据库擅长处理结构化数据,并且可以存储大量的数据。但成本上有些昂贵。这种对数据的要求限制了可处理的数据种类,同时这种惯性所带的缺点还影响到数据仓库在面对海量异构数据时对于敏捷的探索。这通常意味着有价值的数据源在组织内从未被挖掘。这就是Hadoop与传统数据处理方式最大的不同。

本文重点探讨Hadoop系统的组成部分,并解释各个组成部分的功能。

MapReduce——Hadoop的核心

Google的网络搜索引擎在得益于算法发挥作用的同时,MapReduce在后台发挥了极大的作用。MapReduce框架成为当今大数据处理背后的最具影响力的“发动机”。除了Hadoop,你还会在MapReduce上发现MPP(Sybase IQ推出了列示数据库)和NoSQL(如Vertica和MongoDB)。

MapReduce的重要创新是当处理一个大数据集查询时会将其任务分解并在运行的多个节点中处理。当数据量很大时就无法在一台服务器上解决问题,此时分布式计算优势就体现出来。将这种技术与Linux服务器结合可获得性价比极高的替代大规模计算阵列的方法。Yahoo在2006年看到了Hadoop未来的潜力,并邀请Hadoop创始人Doug Cutting着手发展Hadoop技术,在2008年Hadoop已经形成一定的规模。Hadoop项目再从初期发展的成熟的过程中同时吸纳了一些其他的组件,以便进一步提高自身的易用性和功能。

HDFS和MapReduce

以上我们讨论了MapReduce将任务分发到多个服务器上处理大数据的能力。而对于分布式计算,每个服务器必须具备对数据的访问能力,这就是HDFS(Hadoop Distributed File System)所起到的作用。

HDFS与MapReduce的结合是强大的。在处理大数据的过程中,当Hadoop集群中的服务器出现错误时,整个计算过程并不会终止。同时HFDS可保障在整个集群中发生故障错误时的数据冗余。当计算完成时将结果写入HFDS的一个节点之中。HDFS对存储的数据格式并无苛刻的要求,数据可以是非结构化或其它类别。相反关系数据库在存储数据之前需要将数据结构化并定义架构。

开发人员编写代码责任是使数据有意义。Hadoop MapReduce级的编程利用Java APIs,并可手动加载数据文件到HDFS之中。

Pig和Hive

对于开发人员,直接使用Java APIs可能是乏味或容易出错的,同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案,使得Hadoop编程变得更加容易。

• Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

• Hive在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS(hive superimposes structure on data in HDFS),并允许使用类似于SQL语法进行数据查询。与Pig一样,Hive的核心功能是可扩展的。

Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务,Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的应用程序。Pig相比Hive相对轻量,它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量。正因为如此,Pig仍然是吸引大量的软件开发人员。

改善数据访问:HBase、Sqoop以及Flume

Hadoop核心还是一套批处理系统,数据加载进HDFS、处理然后检索。对于计算这或多或少有些倒退,但通常互动和随机存取数据是有必要的。HBase作为面向列的数据库运行在HDFS之上。HBase以Google BigTable为蓝本。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。HBase利用MapReduce来处理内部的海量数据。同时Hive和Pig都可以与HBase组合使用,Hive和Pig还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。

但为了授权随机存储数据,HBase也做出了一些限制:例如Hive与HBase的性能比原生在HDFS之上的Hive要慢4-5倍。同时HBase大约可存储PB级的数据,与之相比HDFS的容量限制达到30PB。HBase不适合用于ad-hoc分析,HBase更适合整合大数据作为大型应用的一部分,包括日志、计算以及时间序列数据。

获取数据与输出数据

Sqoop和Flume可改进数据的互操作性和其余部分。Sqoop功能主要是从关系数据库导入数据到Hadoop,并可直接导入到HFDS或Hive。而Flume设计旨在直接将流数据或日志数据导入HDFS。

Hive具备的友好SQL查询是与繁多数据库的理想结合点,数据库工具通过JDBC或ODBC数据库驱动程序连接。

负责协调工作流程的ZooKeeper和Oozie

随着越来越多的项目加入Hadoop大家庭并成为集群系统运作的一部分,大数据处理系统需要负责协调工作的的成员。随着计算节点的增多,集群成员需要彼此同步并了解去哪里访问服务和如何配置,ZooKeeper正是为此而生的。

而在Hadoop执行的任务有时候需要将多个Map/Reduce作业连接到一起,它们之间或许批次依赖。Oozie组件提供管理工作流程和依赖的功能,并无需开发人员编写定制的解决方案。

Ambari是最新加入Hadoop的项目,Ambari项目旨在将监控和管理等核心功能加入Hadoop项目。Ambari可帮助系统管理员部署和配置Hadoop,升级集群以及监控服务。还可通过API集成与其他的系统管理工具。

Apache Whirr是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr现今相对中立,当前支持Amazon EC2和Rackspace服务。

机器学习:Mahout

各类组织需求的不同导致相关的数据形形色色,对这些数据的分析也需要多样化的方法。Mahout提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括集群、分类、推荐过滤、频繁子项挖掘。

使用Hadoop

通常情况下,Hadoop应用于分布式环境。就像之前Linux的状况一样,厂商集成和测试Apache Hadoop生态系统的组件,并添加自己的工具和管理功能。

搭建环境

用于Hadoop的Spark运行环境(Centos 6.5 64位)
深入了解

阿里云上云培训-大数据专业认证(ACP)考试认证课程
一键运维

Hadoop Hbase Hive安装部署维保

解决方案

网聚宝全网作战大屏_可视化数据监控平台

时间: 2024-10-30 23:48:39

详解Hadoop系统:Hadoop架构、各部分功能及对大数据的意义的相关文章

详解Linux系统中md5sum命令的用法

  这篇文章主要介绍了详解Linux系统中md5sum命令的用法,用来处理MD5验证的相关操作,需要的朋友可以参考下 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的"指纹"(或称"报文摘要"),不同的文件产生相 同的报文摘要的可能性是非常非常之小的. 在linux或Unix上,

详解XP系统建立VPN连接的途径

  详解XP系统建立VPN连接的途径          VPN(Virtual Private Network),中文译名为虚拟专用网络,利用VPN技术,用户可以通过Internet远程接入某个内部网络(例如某个企业的局域网),通过身份验证之后,即使事实上该用户身处地球的另一端,也可以像访问本地网资源一样访问这个网络.同时,由于它采用了特殊的加密技术,因此能保证内部网中数据不被Internet上的其它用户窃取. VPN使用一项称为隧道的技术,可以通过Internet将数据安全地传输给您工作场所网

详解Windows10系统连接硬盘失败的解决方法

详解Windows10系统连接硬盘失败的解决方法:硬盘有固态硬盘(SSD 盘,新式硬盘).机械硬盘(HDD 传统硬盘).混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘).SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘.绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中.小编的本本安装了Wn10系统后,就打不开路由器挂载的硬盘.在大神的指导下,终于找到了无法连接硬盘的处理措施,在这就分

微软首席架构师Yaniv Pessach谈微软大数据COSMOS(中文意思是宇宙)

微软首席架构师Yaniv Pessach谈微软大数据COSMOS(中文意思是宇宙) 参考:http://www.quora.com/Distributed-Systems/What-is-Microsofts-Cosmos 宇宙是微软内部大数据分析平台. COSMOS宇宙是由分布式计算组件(有点相当于Hadoop的Map/Reduce了使用微软Dryad的解决方案,它(不像的map-reduce)允许计算任意DAG. COSMOS宇宙支持类似SQL的语法(类似于HIVE/PIG),包括分布式存储

详解安卓系统中的Android.mk文件_C 语言

概述    Android.mk文件用来向编译系统描述如何编译你的源代码.更确切地说,该文件其实就是一个小型的Makefile.由于该文件会被NDK的编译工具解析多次,因此应该尽量减少源码中声明变量,因为这些变量可能会被多次定义从而影响到后面的解析.这个文件的语法允许把源代码组织成模块,每个模块属于下列类型之一:     APK程序:一般的Android程序,编译打包生成apk文件.     JAVA库:java类库,编译打包生成jar包文件.     C\C++应用程序:可执行的C/C++应用

Netty4详解三:Netty架构设计

     读完这一章,我们基本上可以了解到Netty所有重要的组件,对Netty有一个全面的认识,这对下一步深入学习Netty是十分重要的,而学完这一章,我们其实已经可以用Netty解决一些常规的问题了. 一.先纵览一下Netty,看看Netty都有哪些组件?      为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架构中是怎么协调工作的.Netty应用中必不可少的组件: Bootstrap or ServerBootstrap EventLo

详解Linux系统中的root权限控制

  在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对root除外.root用户的特权性还表现在root 可以超越任何用户和用户组来对文件或目录进行读取.修改或删除(在系统正常的许可范围内);对可执行程序的执行.终止;对硬件设备的添加.创建和移除等; 也可以对文件和目录进行属主和权限进行修改,以适合系统管

详解Linux系统中Oracle数据库程序的启动和关闭方式_oracle

在单机环境下,要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle Oracle数据库有以下几种启动方式: 1. startup nomount 非安装启动,这种方式启动下可执行:重建控制文件.重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件. 2. startup mount dbname 安装启动,这种方式启动下可执行: 数据库日志归档. 数据库介质恢复. 使数据文件联机或脱机, 重新

详解Android系统中跨应用数据分享功能的实现_Android

一个Andoird应用程序的重要的地方是他们有相互沟通和整合的能力,一个应用程序可以和另一个应用程序交互,接下来我们来看看Android应用之间的内容分享 当你构建Intent的时候,必须要指定Intent的Action触发,定义Intent的Action例如ACTION_SEND,你大概可以猜到指定Action为ACTION_SEND的Intent的作用是从一个Activity发送数据到另一个Activity,甚至跨越不同的进程,将数据发送给另一个Activity,你需要指定数据和他的类型,系