内容简介:说起Hadoop,知道它是一个开源的、可运行于大规模集群上的分布式计算平台,实现了MapReduce计算模型和分布式文件系统HDFS等功能;但对Hadoop整个的生态不够了解,本着爱学习的态度,一块来探探hadoop的生态圈。日常生活中我们一看到大数据和大数据相关的信息就会想到了hadoop,但要说具体点,又不知从何说起。 hadoop是基于Java开发的,所以在跨平台上有很大的优势,并且可以部署在廉价的计算机集群中,所以导致hadoop的火热程度。hadoop的核心是HDFS和MapReduce,HDF
说起Hadoop,知道它是一个开源的、可运行于大规模集群上的分布式计算平台,实现了MapReduce计算模型和分布式文件系统HDFS等功能;但对Hadoop整个的生态不够了解,本着爱学习的态度,一块来探探hadoop的生态圈。
关于Hadoop
日常生活中我们一看到大数据和大数据相关的信息就会想到了hadoop,但要说具体点,又不知从何说起。 hadoop是基于 Java 开发的,所以在跨平台上有很大的优势,并且可以部署在廉价的计算机集群中,所以导致hadoop的火热程度。hadoop的核心是HDFS和MapReduce,HDFS是针对谷歌文件系统(GFS)的开源实现,具有较高的读写速度、容错性、可伸缩性,采用MapReduce的整合,可以在不了解分布式系统底层细节的情况下开发。这样就可以轻松的完成海量数据的存储和计算。
Hadoop的特性
高可靠: 高效: 高可扩展: 成本低: 高容错: 平台:
Hadoop生态系统
hadoop除了HDFS和MapReduce外,还还包括了其它很多的功能组件。例如:经常听到的zookeeper、hbase、hive、pig、mahout、sqoop、flume、ambari等功能组件。
下面对各个组件做一个简单的概述,比较常用的着重描述。
-
Ambari:
一种基于web的工具,就作用来说,就是创建、管理、监视Hadoop生态圈的集群;就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。 -
Zookeeper:
为分布式系统提供一致性协同服务,像配置服务、命名服务、分布式同步等,前面服务发现这篇文章中也讲到了为什么Zookeeper不适合做发现服务,感兴趣的可以去了解下,还有消息中间件里面也讲到了Kafka使用Zookeeper来维护集群信息。 下面讲讲Zookeeper特性-
最终一致性:
最重要的性能,client不论连接到哪个server,展示都是同一个视图。 -
可靠性:
具有简单、健壮、良好性能,如果消息被一台server接受,它将被所有server接受。 -
实时性:
保证client在一个时间间隔范围内获得server的更新信息/失效信息,但存在网络延时等原因,不能保证所有client同时得到,应该在读数据之前调用sync接口同步。 -
等待无关:
互不相关,慢的或者失效的client不得干涉快的client的请求。 -
原子性:
只有成功或者失败,没有中间状态。 -
顺序性:
从同一客户端发起的事务请求,都会最终被严格的按照其发送顺序被应用到zk中,包括全局有序和偏序两种,全局有序好理解,就是所有的server的发布消息顺序一样;偏序存在无法比较的现象,如果一个消息B在消息A后被同一个发布者发布,A必将排在B前面。 Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步,leader崩溃,由server发起选举。 典型的应用场景(配置文件管理、集群管理、同步锁、leader选举、队列管理等) 最典型集群模式: Master/Slave 模式(主备模式) ,Master负责写,Slave负责读,但Zookeeper没有使这种模式,采用了三种角色。 Zookeeper中三种角色
-
领导者(leader):
负责进行发起投票和决议,更新系统状态。 -
学习者:
分为跟随着(follower)和观察者(observer),前者用于接收客户请求并向客户端返回结果,参与投票;后者接收客户端写请求,转发给领导者,不参与投票,只同步领导者的状态。 -
客户端:
请求发起方。
-
-
Hbase:
一个实时读写、分布式的列式数据库,主要是为了弥补Hadoop对实时操作的缺陷。和传统关系型数据库有一个很重要的区别是,一个是基于行,一个是基于列。可以说它是键值存储,也可以说它是多时间版本映射的数据库。 四个描述行键(rowkey): 列族/列键(column family): 列限定符(column key): 时间戳(timestamp):
-
Hive:
sql转换MapReduce程序语言,可以减少MapReduce jobs编写工作,Hive提供了类似 sql 语言的查询语言-Hive QL,可以通过Hive QL语句快速实现简单的MapReduce统计,十分适合做数据仓库的统计分析。 -
Pig:
在MapReduce上创建了更简单的过程语言抽象,提供了一种更接近结构化查询语言(SQL)的接口,可以理解为Pig最大的作用就是对MapReduce算法(框架)实现了一套 shell 脚本 ,称之为:Pig Latin。 -
Mahout:
用于机器学习的一个框架,旨在帮助更方便快捷创建智能应用程序,包含许多实现,聚类、分类、推荐过滤、频繁子项挖掘等。 -
MapReduce:
一种离线计算框架,用于大规模数据集的平行运算,将并行计算过程高度抽象到了两个函数,Map和Reduce;这样就可以在不了解分布式系统底层细节的情况下进行平行应用开发,核心思想是:“分而治之”,把输入的数据集切分为若干独立的数据库,分发给各个分节点共同平行完成,最后聚合结果得到最终结果。 -
YARN:
调度系统,资源管理器,最初是为了修复MapReduce实现的不足,因为MapReduce是采用了Master/Slave 模式,一个JobTracker负责作业调度和资源管理,多个TaskTracker负责执行被指派的具体任务,所以会存在单点故障、任务过重、内存溢出、资源划分不合理等缺陷。 -
HDFS:
Hadoop分布式文件系统,是针对谷歌文件系统GFS的开源实现,具有处理超大数据、流式处理、可以运行在廉价商用服务器上等有点。 -
Flume:
分布式的海量日志采集,聚合和传输的系统,Flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。 -
Sqoop:
SQL-to-Hadoop的缩写,主要用来在Hadoop和关系数据库之间交换数据,通过Sqoop可以方便的将数据从关系数据库中导入Hadoop,或者将数据从Hadoop导出到关系数据库,Sqoop主要通过JDBC和关系数据库进行交互。
附加几个其它的功能组件
-
Storm:
Storm是Twitter开源的分布式实时大数据处理框架,流计算平台,优点是无延迟,缺点是不够灵活,想要统计的东西必须预知道;要达到更新实时,在数据流进来的时候就开始处理,比如广告点击计算,它的实时性要远远好于MapReduce计算框架。 -
Spark:
MapReduce计算框架不适合迭代计算和交互计算,MapReduce是一种磁盘计算框架,而Spark则是一种内存计算框架,它将数据尽可能放到内存中提高迭代应用和交互式应用的计算效率。 -
Pregel:
Pregel是Google提出的大规模分布式图计算平台,专门用来解决网页链接分析、社交数据挖掘等实际应用中涉及的大规模分布式图计算问题,Pregel作为分布式图计算的计算框架,主要用于图遍历、最短路径、PageRank计算等。
针对Hadoop的改进和提升Hadoop框架自身的改进,从1.0到2.0
组件 | Hadoop1.0的问题 | Hadoop2.0的改进 |
---|---|---|
HDFS | 单一名称节点,存在单点失效问题 | 设计了HDFS HA,提供名称节点热备份机制 |
单一命名空间,无法实现资源隔离 | 设计了HDFS联邦,管理多个命名空间 | |
MapReduce | 资源管理效率底 | 设计了新的资源管理框架YARN |
不断完善的Hadoop生态系统
组件 | 功能 | 解决Hadoop中存在的问题 |
---|---|---|
Pig | 处理大规模数据的脚本语言,用户只要编写几条简单的语句,系统会自动转换为MapReduce作业 | 抽象层次低,需要手工编写大量代码 |
Oozie | 工作流和协作服务引擎,协调Hadoop上运行的不同任务 | 没有提供作业依赖关系管理机制,需要用户自己处理作业之间的依赖关系 |
Tez | 支持DAG作业的计算框架,对作业的操作进行重新分解和组合,形成一个搭的DAG作业,减少不必要操作 | 不同的MapReduce任务之间存在重复操作,降低了效率 |
Kafka | 分布式发布订阅消息系统,不同类型的分布式系统可以统一接入到Kafka,实现和Hadoop各个组件之间的不同类型数据的实时高效交换 | Hadoop生态系统中各个组件和其它产品之间缺乏统一的、高效的数据交换中介 |
结语
这里主要是对Hadoop生态系统的一些功能组件做一个简单的归类描述,不涉及到具体的实现。 感兴趣的可以看看个别组件功能的详细实战。
个人博客 ~
简书 ~
以上所述就是小编给大家介绍的《初入Hadoop生态系统》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 2020 开发人员生态系统现状
- 2018 JVM生态系统报告
- 比较 Apache Hadoop 生态系统中不同
- ThinkSNS+:基于 Laravel 开发的用户生态系统
- 生态系统支持计划:2020第一季度总结
- PHP 社区采取措施,提高生态系统安全性
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ACM国际大学生程序设计竞赛题解
赵端阳//袁鹤 / 电子工业 / 2010-7 / 39.00元
随着各大专院校参加ACM/ICPC热情的高涨,迫切需要有关介绍ACM国际大学生程序设计竞赛题解的书籍。《ACM国际大学生程序设计竞赛题解(2)》根据浙江大学在线题库的部分题目,经过分类、筛选、汇编,并进行了解答(个别特别简单或者特别复杂的题目未选择),比较详细地分析和深入浅出地讲解了解题的方法和用到的算法。题目的类型包括基础编程、模拟、字符串处理、搜索、动态规划、回溯、图论、几何和数学题。 ......一起来看看 《ACM国际大学生程序设计竞赛题解》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
URL 编码/解码
URL 编码/解码