hadoop生态系统到底谁最强?

2018-08-06 17:48:58 浏览数 (1)

团队获胜。我们当中没有一个像我们所有的集合一样聪明。

Hive和HBase完全是针对不同的使用案例而设计的。所以它们之间没有战斗!

在如今,复杂系统的美丽为每个技术都留有空间。让我尝试用一个例子取解释它:

当你打开linkedin时,你会看到数百种不同的东西。例如,您的个人资料属性,您的朋友列表,您的技能,为您推荐的群组,朋友建议,为您推荐的公司,谁查看过您的个人资料等。

现在linkedin有数亿用户,并且页面加载速度更快。你能想到一种技术可以在后端做到所有这一切吗?

RDBMS可以做到这一切吗?不,这么多的用户的总数据集收纳了这么多的信息,甚至不是RDBMS可以接触到的。你会从这么多的表中获取数据并加进它,它需要时间来加载页面。

Hadoop的可以做到这一切?NO,Hadoop是以分析和在此速度下提供数据而出名的。所以不可能是Hadoop,它具有高延迟。即使运行简单的mapreduce作业也需要几秒钟才能开始,甚至在它开始处理数据之前。

Hive可以做到这一切?NO,Hive无非是HDFS存的数据和客户的眼睛之间的透镜。这个透镜使得HDFS中的数据看起来像RDBMS表。在幕后,它运行mapreduce作业。事实上,它比直接运行map reduce作业要慢,因为hive首先将每个查询转换为mapreduce作业,然后启动该作业。因此,hive具有与map reduce相同的高延迟限制。

HBase可以做到这一切?NO,HBase不具备分析能力。所以HBase找不到为你的推荐。

如果所有这些流行的技术都不能做到,那么它是如何运行的呢?嗯,答案是当这些技术决定不互相争斗,而是作为一个团队工作。所有这些技术在一起工作,给我们所有的用户的优秀的体验!准确地说,对于给定的例子,推荐是不能改变每一分钟或每一秒钟的。因此,您可以预先计算所有用户的推荐。 在计算推荐时,您仍然需要高吞吐量,但延迟很好。 您只需要低延迟,同时向用户提供那些预计算的推荐。因此推荐引擎可以是HIVE或平面mapreduce。您的配置文件数据是可以保持变化的东西,所以它需要一个正确的数据库,但比rdbms更快。HBase扮演该数据库的角色。 每个分析用例都可以使用hive / mapreduce等来完成。这些分析的结果以及其他信息(配置文件)可以使用HBase存储(提供快速随机访问)。甚至RDBMS都不是无用的,所有支付网关仍然使用RDBMS的高一致性和可用性。

所以技术也在教我们团队合作才会赢。“ 我们当中没有一个是我们所有的智能

一些概念解释

Hadoop分布式文件系统:HDFS,Hadoop的的存储层,是一个分布式的,可扩展的,基于Java的文件系统擅长存储大量的非结构化数据。

MapReduce:MapReduce是一个软件框架,它充当的Hadoop计算层。MapReduce作业分为两个(明显命名)部分。 “Map”函数将查询划分为多个部分,并在节点级别处理数据。 “Reduce”函数聚合“Map”函数的结果以确定查询的“答案”。

Hive:Hive原本是Facebook开发的一个基于Hadoop的数据仓库般的框架。它允许用户使用类似SQL的语言编写查询语句HiveQL,然后将其转换为MapReduce。这允许没有MapReduce经验的SQL程序员使用仓库,并使其更容易与商业智能和可视化工具(如Microstrategy,Tableau,Revolutions Analytics等)集成。

Pig:Pig Latin是雅虎开发的基于Hadoop的语言。它相对容易学习,并且有着非常深,非常长的数据管道(SQL的局限性)。

HBase的:HBase是一个非关系数据库,允许低延迟和在Hadoop中快速查找。它为Hadoop增加了事务功能,允许用户进行更新,插入和删除。EBay和Facebook大量使用HBase。

Oozie的:Oozie的是工作流处理系统,允许用户定义一系列的多种语言书写的工作--比如MapRuduce,Pig和Hive--然后智能它们链接到另一个之上。例如,Oozie允许用户指定特定的查询仅在其所依赖的数据完成的指定的先前作业之后才被启动。

Flume:Flume是用数据填充的Hadoop框架。代理被填充在整个IT基础架构中-例如Web服务器、应用程序服务器和移动设备-以收集数据并将其集成到Hadoop中。

Ambari:Ambari是一个基于网络集合的部署、管理和监视的Apache Hadoop集群工具。它的发展由Hortonworoks的工程师领导,包括Ambari在内的Hortonworks数据平台。

Mahout:Mahout是一个数据挖掘库。它采用最流行的数据挖掘算法进行聚类,回归检验和统计建模,并使用Map Reduce模型实现它们。

Sqoop:Sqoop是来自非Hadoop的数据存储移动数据连接工具-如关系数据库和数据仓库链接到Hadoop的。它允许用户指定Hadoop内的目标位置,并指示Sqoop将数据从Oracle,Teradata或其他关系数据库移动到目标位置。

HCatalog:HCatalog是Apache Hadoop的集中式元数据管理和共享服务。它允许Hadoop集群中的所有数据的统一视图,并允许多种工具(包括Pig和Hive)处理任何数据元素,而无需在物理层次上知道数据存储在集群中的哪里。

Kylin:Apache Kylin是一个开源的分布式分析引擎,旨在提供SQL接口和在Hadoop的支持非常大的数据集和多维度分析(OLAP),由原来的eBay公司贡献

Zeppelin:Zeppelin是一种基于网络的笔记本,可以使得交互式数据分析。您可以使用SQL,Scala等语言创建漂亮的数据驱动,交互式和协作文档。Zeppelin解释器概念允许任何语言/数据处理后端插入Zeppelin。

Presto:Presto是可以运行对所有存储范围从千兆到PB级的数据源的交互分析查询的一个开源分布式SQL查询引擎。Presto允许查询它所在的数据仓库,包括Hive,Cassandra,关系数据库甚至专有数据存储。单个Presto查询可以合并来自多个源的数据,从而允许整个系统的分析。

Neo4j:Neo4j重点是由NeoTechnology开发的本地图形存储和处理事务性数据库开发的图形数据库管理系统,Neo4j的是最流行的图形数据库。Neo4j以Java实现,可以让其他语言编写的软件通过HTTP端点使用Cypher查询语言访问。

0 人点赞