hadoop家族简介

Posted ypsy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop家族简介相关的知识,希望对你有一定的参考价值。

一:什么是ApacheHadoop呢?
首先来说Hadoop是一种分析和处理大数据的软件平台。
是Apache的一个用Java语言所实现的开源软件的框架。

在大量计算机组成的集群当中实现了对于海量的数据行

的分布式计算。下面呢给大家用一句话描述一下。


二:文件存储
1、HDFS(Hadoop分布式文件系统)
Hadoop分布式文件系统或HDFS是基于Java的分布式文件系统,允许您在Hadoop集群中的多个节点上存储大量数据也就相当于在多块硬盘上存储数据。因此Hadoop是用HDFS作为底层存储系统来存储分布式环境中的数据。
2、Tachyon分布式内存文件系统
Tachyon是一个分布式内存文件系统,它是在最底层的分布式文件存储和上层的各种计算框架之间的一种中间件。主要作用是将那些不需要存放到DFS里的文件,落地到分布式内存文件系统中,来达到共享内存。
特点: 1、支持多种部署方式 (包含启动模式,资源管理框架,目标运行环境),3、灵活的读写机制,4、支持WebUI管理界面


三:离线计算
1、MapReduce
常用于离线的复杂的大数据计算。
2、Spark
Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,可以用于离线的也可用于在线的实时的大数据计算,所以Spark基于map reduce算法实现的分布式计算。


四:流式、实时计算
1 、Storm是由Twitter开源的分布式、高容错的实时处理系统,它的出现令持续不断的流计
算变得容易,弥补了Hadoop批处理所不能满足的实时要求。
2、 Spark Streaming 是Spark核心API的扩展包,可以实现高吞吐量的、具备容错机制的实时流数据的
处理。
3、S4-分布式流式计算平台
S4(Simple Scalable Streaming System)最初是Yahoo!为提高搜索广告有效点
击率的问题而开发的一个平台,通过统计分析用户对广告的点击
率,排除相关度低的广告,提升点击率。目前该项目刚启动不久,所
以也可以理解为是他们提出的一个分布式流计算(Distributed Stream
Computing)的模型。
4、Heron是Twitter开源的分布式流处理系统,用来在Twitter内部替代Storm。它提供了和Storm兼容的API。
5、Apache Hama: 是一个基于HDFS的BSP(Bulk Synchronous Parallel)并行计算框架, Hama可
用于包括图、矩阵和网络算法在内的大规模、大数据计算。


五:K-V、NOSQL数据库
1、HBase是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库,利用HBase技术可在廉价PC Server上搭
建起大规模结构化存储集群。
特点.
1).存储数据量大:一个表可以有上亿行,上百万列。
2).面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。
3).稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
4).无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不
同的列。
5).数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳
6).数据类型单一:HBase中的数据都是字符串,没有类型。
优点:
1 列的可以动态增加,并且列为空就不存储数据,节省存储空间. 2 Hbase自动切分数据,使得数据存储自动具有水平scalability. 3 Hbase可以提供高并发读写操作的支持
缺点:
单一RowKey固有的局限性决定了它不可能有效地支持多条件查询
不适合于大范围扫描查询
不直接支持 SQL 的语句查询

2、Redis 是以key-value的形式存储数据,是一个非关系型的,分布式开源的,水平可扩展的缓存服务器。
优点:
1 读写性能优异
2 支持数据持久化,支持AOF和RDB两种持久化方式
3 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
4 数据结构丰富:除了支持string类型的value外还支持string、hash、set、sortedset、list等数据结构。
缺点:
1 Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
2 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
3 redis的主从复制采用全量复制,复制过程中主机会fork出一个子进程对内存做一份快照,并将子进程的内存快照保存为文件发送给从机,这一过程需要确保主机有足够多的空余内存。若快照文件较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一次全量的数据复制,这对实际的系统运营造成了不小的麻烦。
4 Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。

3、MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。它提供l可扩展的
高性能数据存储解决方案
优点:
1、面向文档存储(类JSON数据模式简单而强大)
2、第三方支持丰富。
这是它跟其它的NoSQL相比,MongoDB也具有的优势,因为现在网络上的很多NoSQL开源数据库完全属于社区型的,没有官方支持,给使用者带来了很大的风险。
而开源的文档数据库MongoDB背后有商业公司为它提供商业培训和支持。

3、性能优越
在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID的查询不会比mysql慢,而对非索引字段的查询,则是全面胜出。 mysql实际无法胜任大数据量下任意字段的查询,而mongodb的查询性能可以,同时它的写入性能也很厉害,可以写入百万级别的数据。
缺点:
、MongoDB不支持事务操作
所以事务要求严格的系统,比如银行系统就不能用它。

2、MongoDB占用空间过大
2.1、空间的预分配:
当MongoDB的空间不足时它就会申请生成一大块硬盘空间,而且申请的量都是有64M、128M、256M来增加直到2G为单个文件的较大体积,并且随着数量叠增,可以在数据目录下看到整块生成而且不断递增的文件。

2.2、删除记录不释放空间:
这很容易理解,为避免记录删除后的数据的大规模挪动,原记录空间不删除,只标记“已删除”即可,以后还可以重复利用。

3、(开发和IT运营要注意)MongoDB没有MySQL那样成熟的维护工具

4
、Apache Cassandra:是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存简单格式数据,集Google
BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身


六:资源管理
1、 Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台。
2、 Mesos(分布式资源管理器):与yarn类似,Mesos是一个资源统一管理和调度的平台,同样支持比如MR、steaming等多种运算框架,同时通过 API 为各种应用提供跨数据中心和云的资源管理调度能力。


七:日志收集
1、 Flume是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。
2、 Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到的应用。它能够从各种日志源上收集日志,存储到一个存储系统(例如分布式文件系统等)上,以便于进行集中统计分析处理。
3、 Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出
到目的地。 Logstash 收集数据对象就是日志文件由于日志文件来源多
(如:系统日志、服务器 日志等),且内容杂乱,不便于进行观
察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,
变成可读性高的内容,方便开发者或运维人员观察,从而有效的分析
系统/项目运行的性能,做好监控和预警的准备工作等。
4、 Kibana是一个开源的分析与可视化平台,用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。


八:消息系统
1、Kafka分布式消息队列具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。
2、ZeroMQ是一个为可伸缩的分布式或并发应用程序设计的高性能异步消息库。它提供一个消息队列, 但是与面向消息的中间件不同,ZeroMQ的运行不需要专门的消息代理。该库设计成常见的套接字风格的API。
3、RabbitMQ是一个开源的消息队列框架。
它用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性
等方面都非常的优秀并支持多种客户端如:.NET、Java、php


九:查询分析
1、Hive 是基于 Hadoop 的一个数据仓库工具,实质就是一款基于 HDFS 的 MapReduce 计算框架,对存储在 HDFS 中的数据进行分析和
管理
2、Impala是用于处理存储在Hadoop集群中的大量数据的SQL查询引擎。 它是一个用C ++和Java编写的开源软件。换句话说,Impala是
性能最高的SQL引擎,它提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。
3、Pig最早是雅虎公司的一个基于Hadoop的并行处理架构,后来Yahoo将Pig捐献给Apache的一个项目,由Apache来负责维护,Pig是一
个基于 Hadoop的大规模数据分析平台。
4、Presto是一个分布式的查询引擎,本身并不存储数据,但是可以接入多种数据源,
并且支持跨数据源的级联查询,所以Presto就是一个可以满足大数据量分析计算需求
的一个工具。
5、Phoenix是一个HBase的开源SQL引擎。你可以使用标准的JDBC API代替HBase客户端API来创建表,插入数据,查询你的HBase数据。
6、 SparkSQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并
且作为分布式SQL查询引擎的作用。
7、Apache Drill是一个能够对大数据进行实时的分布式查询引擎,Drill是开源版本的Google Dremel。支持对本地文件,
HDFS,HIVE,HBASE,MongeDB作为存储的数据查询,
文件格式支持Parquet,CSV, TSV,以及JSON的数据。所有这些数据都可以像使用传
统数据库的针对表查询一样进行快速实时的查询。
8、Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据
9、Druid 是一个为在大数据集之上做实时统计分析而设计的开源数据存储
10、 Apache Crunch是基于Google的FlumeJava库编写的Java库,用于创建MapReduce程序。与Hive,Pig类似,Crunch提供了用于实现如连接数据、执行聚
合和排序记录等常见任务的模式库


十:分布式协调服务
1、Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等


十一:集群管理与监控
1、Apache Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,是为了让 Hadoop 以及相关的大数据软件更容易
使用的一个web工具。
2、Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点,主要是用来监控系统性能如:
cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统
整体性能起到重要作用。
3、 Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,
打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
4、Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、
Spark等服务的安装配置管理做了极大简化。
5、Cloudera Hue: 是一个基于WEB的监控和管理系统,实现对HDFS,
MapReduce/YARN, HBase, Hive, Pig的web化操作和管理。
6、Apache Chukwa: 是一个开源的用于监控大型分布式系统的数据收集系统,它可以将各种
各样类型的数据收集成适合 Hadoop 处理的文件保存在 HDFS 中供 Hadoop 进行各种 MapRedu
7、 Apache Bigtop: 是一个对Hadoop及其周边生态进行打包,分发和测试的工具。
8、Apache HCatalog: 是基于Hadoop的数据表和存储管理,实现中央的元数据和模式管理,跨越Hadoop和RDBMS,利用Pig
和Hive提供关系视图。


十二:数据挖掘、机器学习
1、Apache Mahout是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。
2、Spark MLlib是一个机器学习库,它提供了各种各样的算法,这些算法用来在集群上针对分类、回归、聚类、协同过滤等
3、 Apache Giraph: 是一个可伸缩的分布式迭代图处理系统


十三:数据同步
1、Apache Sqoop: 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。


十四:任务调度
Apache Oozie: 是一个工作流引擎服务器, 用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapReduce)的任务。


十五:数据序列化系统
Apache Avro: 是一个数据序列化系统,设计用于支持数据密集型,大批量数据交换的应用。Avro是新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制


16:云服务的类库
Apache Whirr: 是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。

 













































































































































以上是关于hadoop家族简介的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop家族学习路线图

Hadoop家族学习路线图

转:Hadoop家族学习路线图

[转]Hadoop家族学习路线图

Hadoop家族

Hadoop家族学习路线实践案例