Hadoop生态系统(HDFS、ZooKeeper、MapRuduce、Pig....)

Hadop 生态系统

Hadoop是一个能够对大量数据进行分布式处理的软件框架,具有可靠、高效、可伸缩的特点。。Hadoop 2.0版本引入了HA (High Alability高可用性)和Yam (资源调度),这是与Hadoop 1.0的最大区别。Hadoop 1.0生态系统如图2-1所示。

Hadoop 2.0主要由三部分组成: HDFS 分布式文件系统、MapReduce编程模型和Yarm源管理。Hadoop 2.0生态系统如图2-2所示。

由图2-1和图2-2可以看出,整个Hadop家族由以下几个子项目组成:

(1) HDFS

对于分布式计算,每个服务器必须具备对数据的访问能力,这就是HDFS (HadopDistributed File System)所起到的作用。在处理大数据的过程中,当Hadop集群中的服务器出现错误时,整个计算过程并不会终止,同时HDFS可以保障在整个集群中发生放障错误时的数据冗余。当计算完成时将结果写入HDFS的个 节点之中, HDFS对存储的数据格式并无苛刻的要求,数据可以是非结构化或其他类别的,而关系数据库在存储数据之前需要将数据结构化并定义Schema。

(2) MapReduce

MapReduce是一个计算模型, 用于大规模数据集的并行运算。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。MapReduce 的重要创新是当处理一个大数据集查询时会将其任务分解并在运行的多个节点中处理。当数据量很大时就无法在一台服务器上解决问题,此时分布式计算的优势就体现出来了,将这种技术与Linux服务器结合可以获得性价比极高的替代大规模计算阵列的方法。Hadoop MapReduce 级的编程利用Java APIs,并可以手动加载数据文件到HDFS中。

(3) ZooKeeper

ZooKeeper是-个分布式应用程序协调服务, 是Hadoop 和HBase 的重要组件。它是个为分布式应用提供一致性服 务的软件,提供的功能包括配置维护、域名服务、分布式同步、组服务等。ZooKeeper集群提供了HA,可以保证在其中些机器死机的情况下仍可以提供服务,而且数据不会丢失:所有ZooKeeper服务的数据都存储在内存中,且数据都是副本。ZooKeper集群中包括领导者(leder)和跟随者(ollower) 两种角色,当客户端进行读取时,跟随者的服务器负责给客户端响应:客户端的所有更新操作都必须通过领导者来处理。当更新被大多数ZooKeeper服务成员持久化后,领导者会给客户端响应。

(4) HBase

HBase是个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库、与传统关系数据库不同,HBase 采用了BgTable 的数据模型:增强的稀疏排序映射表(key/value),其中键由行关键字、列关键宇和时间数构成。HBase 提供了对大规模数据的随机、实时读写访问,使用Hadop HDFS作为其文件存储系统,同时HBasc中保存的数据可以使用MapRoduce来处理、它将数据存储和并行计算完美地结合在起。 HBase 与关系数据库的对比如表2-1所示。

表2-1 HBase与关 系数据库的对比

(5) Hive

Hine是基于Hadop的个数据仓库工具, 由Facboo 开源,最初用于海量结构化日志数据统计,可以将结构化的数据文件映射为一张数据库表, 并提供简单的SQL查询功能,可以将SQL语句转换为MapReducc任务运行。通常用于进行离线数据处理(采用MapReduce),可以认为是一个从HQL (Hive QL)到MapReduce的语言翻译器。

Hive的特点如下:

  • 可扩展。Hive 可以自由地扩展集群的规模,一般情况下不需要 重启服务。
  • 支持UDF。Hive 支持用户自定义函数,用户可以根据自己的需要来实现。
  • 容错。良好的容错性,节点失效时SQL依然可以正确执行到结束。
  • 自由的定义输入格式。默认Hive支持txt、re、 sequence 等,用户可以自由地定制自己想要的输入格式。
  • 可以根据字段创建分区表,如根据日志数据中的日期。

(6) Pig

Pig是一个高级过程语言, 它简化了Hadoop常见的工作任务,适合于使用Hadop和MopRetie平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似SQL的查询,Pig可以简化Hadop的使用。Pig 可以加线数据、表达转换数据和存储最终结果,Pig内置的操作使得半站构化数据变得有意义(如日志文件),同时Pig可以扩展使用Java中添加的自定文数据类型并支持数据转换。

可以通免用户书写MepRete程序,由Pig自动转成。任务编码的方式允许系统自动去优化执行过程、从而使用户能够专注于业务逻物,用声可以轻松地编写自己的面数来进行特殊用途的处理。

(7) Mahout

Mahour起源于2008年, 最初是Apche Lucem的子项目,它在极短的时间内取得了长足的发展,现在是Apnche的项级项目,Mahou的主要目标是创建些可扩 展的机器学习领域经典算法的实现,日在帮助开发人员更加方便快捷地创建智能应用程序。Manbout 现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖期等泛使用的数据挖据方法。除了算法,Mahout还包含数据的输入输出工具、与其他存储系统(如数据库、MongoDB成Csandn)集成等数据挖掘支持架构。

(8) Sqoop

Sqoop是Hadop与结构化数据存储h相转换的开源工具。可以使用Sqoop从外部的数据存储将数据导入到Hadop分布式文件系统或相关系统,如Hive和HBase. Sqop也可以用于从Hadop中提取数据,并将其导出到外部的数据存储(如关系数据库和企业数据仓库),如MySQL、Oracle、 SQL Server,还可以通过脚本快速地实现数据的导入导出。

(9) Flume

Flume是Cloudera 提供的个高可用、 高可靠、分布式的海量日志采集、 聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据。同时,Flume提供对数据进行简单处理,并写到各种数据接收方(可定制)的能力。它将数据从产生、传输、处理并最终写入目标路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。总的来说,Flume 是一个可扩展、适合复杂环境的海量日志收集系统。

(10) Chukwa

Chukwa是一个开源的用于监控大型分布式系统的数据收集系统,构建在Hadoop的HDFS和MapReduce框架之上。Chukwa 还包含了一个强大和灵活的工具集,可以用于展示、监控和分析已收集的数据。

(11) Oozie

Oozie是一个工作流引擎服务器,用于运行Hadop MapReduce 任务工作流(包括MapReduce. Pig、 Hive、 Sqoop 等)。 Oozie 工作流通过HPDL (Hadoop Poces DefintionLanguge)来构建,工作流定义通过HTTP提交,可以根据目录中是否有数据来运行任务,任务之间的依赖关系通过工作流来配置,任务可以定时调度。JobConf 类要配置的内容,通过在工作流(XML文件)中定义,实现了配置与代码的分离。

(12) Ambari

Anbani是一种基于Web的工具,用于创建、管理、监视Hadop的集群,支持Hado HIDFS。Hadop MpRedhe Hive. Halga HBse. ZoKepe Ooi. Pig和Sq0等的集中管理。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值