何时使用Hadoop,HBase,Hive和Pig?

Kha*_*efa 181 hadoop hbase hive apache-pig

使用HadoopHBaseHive有什么好处?

根据我的理解,HBase避免使用map-reduce,并且在HDFS之上具有面向列的存储.HiveHadoopHBase的类似sql的接口.

我也想知道HivePig的比较.

Tar*_*riq 341

MapReduce只是一个计算框架.HBase与它无关.也就是说,您可以通过编写MapReduce作业来有效地向/从HBase提取数据或从中获取数据.或者,您可以使用其他HBase API(例如Java)编写顺序程序来放置或获取数据.但我们使用Hadoop,HBase等来处理大量数据,因此这没有多大意义.当数据太大时,使用正常的顺序程序效率非常低.

回到问题的第一部分,Hadoop基本上是两件事:分布式文件系统(HDFS) + 计算或处理框架(MapReduce).与所有其他FS一样,HDFS也为我们提供存储,但是以容错的方式提供高吞吐量和较低的数据丢失风险(因为复制).但是,作为FS,HDFS缺乏随机读写访问.这是HBase进入画面的地方.它是一个分布式,可扩展的大数据存储,以Google的BigTable为蓝本.它将数据存储为键/值对.

来到Hive.它为现有Hadoop集群提供数据仓库设施.除此之外,它提供了一个类似SQL的界面,使您的工作更轻松,以防您来自SQL背景.您可以在Hive中创建表并在那里存储数据.除此之外,您甚至可以将现有的HBase表映射到Hive并对其进行操作.

虽然Pig基本上是一种数据流语言,它允许我们非常容易和快速地处理大量数据.猪基本上有两部分:猪翻译和语言,猪拉丁.你在PigLatin中编写Pig脚本并使用Pig解释器处理它们.猪让我们的生活变得更轻松,否则编写MapReduce总是不容易.事实上,在某些情况下,它真的会变成一种痛苦.

我曾写过一篇关于Hadoop生态系统不同工具的简短比较文章.这不是深度比较,而是对这些工具的简短介绍,可以帮助您入门.(只是为了补充我的答案.不打算自我推销)

Hive和Pig查询都会被转换为MapReduce作业.

HTH


小智 52

我最近在我的公司实施了一个Hive数据平台,因为我是一个单独的团队,所以我可以用第一人称对话.

目的

  1. 每天从350多台服务器收集的每日Web日志文件可通过某种类似SQL的语言进行查询
  2. 用Hive 替换通过MySQL生成的每日聚合数据
  3. 通过Hive中的查询构建自定义报告

架构选项

我对以下选项进行了基准测试:

  1. 蜂巢+ HDFS
  2. Hive + HBase - 查询太慢所以我转储了这个选项

设计

  1. 每日日志文件被传输到HDFS
  2. MR作业在HDFS中解析这些日志文件和输出文件
  3. 创建具有指向HDFS位置的分区和位置的Hive表
  4. 创建Hive查询脚本(如果你喜欢SQL的差异,称之为HQL),后者又在后台运行MR作业并生成聚合数据
  5. 将所有这些步骤放入Oozie工作流程中 - 与Daily Oozie Coordinator 安排

摘要

HBase就像一张地图.如果您知道密钥,您可以立即获得价值.但是如果你想知道Hbase中有多少整数键在1000000到2000000之间,那么它不适合单独使用Hbase.

如果要汇总,汇总,跨行分析数据,请考虑Hive.

希望这会有所帮助.

Hive实际上非常好......我知道,我现在已经活了12个月...... HBase也是 ......


Rav*_*abu 27

Hadoop是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集.

Hadoop中有四个主要模块.

  1. Hadoop Common:支持其他Hadoop模块的常用实用程序.

  2. Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问.

  3. Hadoop YARN:作业调度和集群资源管理的框架.

  4. Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集.

在进一步说明之前,让我们注意我们有三种不同类型的数据.

  • 结构化:结构化数据具有强大的架构,并且在写入和读取操作期间将检查架构.例如,Oracle,MySQL Server等RDBMS系统中的数据.

  • 非结构化:数据没有任何结构,可以是任何形式 - Web服务器日志,电子邮件,图像等.

  • 半结构化:数据没有严格的结构,但有一些结构.例如XML文件.

根据要处理的数据类型,我们必须选择正确的技术.

还有一些项目,它们是Hadoop的一部分:

  • HBase™:可扩展的分布式数据库,支持大型表的结构化数据存储.

  • Hive ™:一种数据仓库基础架构,可提供数据汇总和临时查询.

  • Pig™:用于并行计算的高级数据流语言和执行框架.

Hive Vs PIG比较可以在本文和我在SE 问题的其他帖子中找到.

HBASE不会取代Map Reduce.HBase是可扩展的分布式数据库,Map Reduce是用于分布式数据处理的编程模型.Map Reduce可以在处理过程中对HBASE中的数据起作用.

您可以将HIVE/HBASE用于结构化/半结构化数据,并使用Hadoop Map Reduce进行处理

您可以使用SQOOP从传统的RDBMS数据库Oracle,SQL Server等导入结构化数据,并使用Hadoop Map Reduce进行处理

您可以使用FLUME处理非结构化数据并使用Hadoop Map Reduce进行处理

看看:Hadoop用例.

应该使用Hive对一段时间内收集的数据进行分析查询.例如,计算趋势,汇总网站日志,但不能用于实时查询.

HBase适用于大数据的实时查询.Facebook将其用于消息传递和实时分析.

PIG可用于构建数据流,运行预定作业,处理大量数据,汇总/汇总数据并存储到关系数据库系统中.适用于临时分析.

Hive可用于临时数据分析,但它不支持与PIG不同的所有非结构化数据格式.


Dav*_*man 22

考虑您使用RDBMS并且必须选择要使用的内容 - 全表扫描或索引访问 - 但只能选择其中一个.
如果选择全表扫描 - 请使用配置单元.如果索引访问 - HBase.


小智 6

深入了解

Hadoop

HadoopApache基金会的一个开源项目。它是一个用 编写的框架Java,最初由 Doug Cutting 在 2005 年开发。创建它是为了支持Nutch文本搜索引擎的分发。Hadoop使用谷歌的Map Reduce和谷歌文件系统技术为基础。

Hadoop的特点

  1. 它经过优化,可以使用商用硬件处理大量结构化、半结构化和非结构化数据。
  2. 它没有共享任何架构。
  3. 它将其数据复制到多台计算机中,这样即使一台计算机出现故障,仍可以从存储其副本的另一台计算机处理数据。
  4. Hadoop是为了高吞吐量而不是低延迟。它是处理大量数据的批处理操作;因此响应时间不是即时的。
  5. 它补充了在线事务处理和在线分析处理。但是,它不能替代RDBMS.
  6. 当工作无法并行化或数据存在依赖关系时,这是不好的。
  7. 不利于处理小文件。它最适用于庞大的数据文件和数据集。

Hadoop 的版本

有两个Hadoop可用版本:

  1. Hadoop 1.0
  2. Hadoop 2.0

Hadoop 1.0

它有两个主要部分:

1. 数据存储框架

它是一种称为 Hadoop 分布式文件系统 ( HDFS)的通用文件系统。

HDFS 是无模式的

它只是存储数据文件,这些数据文件几乎可以是任何格式。

这个想法是尽可能接近其原始形式存储文件。

这反过来为业务部门和组织提供了急需的灵活性和敏捷性,而不必过度担心它可以实施的内容。

2. 数据处理框架

这是一个简单的函数式编程模型,最初由 Google 作为MapReduce.

它本质上使用两个功能:MAPREDUCE处理数据。

“映射器”接收一组键值对并生成中间数据(这是另一个键值对列表)。

“Reducers”然后作用于这个输入以产生输出数据。

这两个功能似乎彼此隔离地工作,从而使处理能够以高度并行、容错和可扩展的方式高度分布。

Hadoop 1.0 的局限性

  1. 第一个限制是对MapReduce编程专业知识的要求。

  2. 它只支持批处理,虽然适用于日志分析、大型数据挖掘项目等任务,但几乎不适合其他类型的项目。

  3. 一个主要限制是它Hadoop 1.0与 紧密计算耦合MapReduce,这意味着成熟的数据管理供应商留下了两种意见:

    1. 要么重写它们的功能,MapReduce以便它可以在Hadoop

    2. 从中提取数据HDFS或在Hadoop.

所有选项都不可行,因为它会导致由于数据移入和移出Hadoop集群而导致流程效率低下。

Hadoop 2.0

Hadoop 2.0HDFS仍然是数据存储框架。

然而,被称为新的和独立的资源管理框架ý诺特尔ř esource Ñ egotiater(YARN已添加)。

YARN 支持任何能够将自身划分为并行任务的应用程序。

YARN 协调提交的应用程序的子任务分配,从而进一步增强应用程序的灵活性、可扩展性和效率。

它的工作原理是使用Application Master代替Job Tracker,在由新节点管理器管理的资源上运行应用程序。

ApplicationMaster 能够运行任何应用程序,而不仅仅是MapReduce.

这意味着它不仅支持批处理,还支持实时处理。MapReduce不再是唯一的数据处理选项。

Hadoop的优势

它将数据存储在其本机中。在键入数据或存储数据时没有强加任何结构。HDFS是模式较少。只有在稍后需要处理数据时,才会将结构强加于原始数据。

它是可扩展的。Hadoop可以在数百个并行运行的廉价服务器上存储和分发非常大的数据集。

它对失败具有弹性。Hadoop是容错。它勤奋地进行数据复制,这意味着每当数据发送到任何节点时,相同的数据也会复制到集群中的其他节点,从而确保在节点发生故障时,始终有另一个数据副本可供使用。

它是灵活的。的主要优势之一Hadoop是它可以处理任何类型的数据:结构化、非结构化或半结构化。此外,Hadoop由于“将代码移动到数据”范例,处理速度非常快。

Hadoop生态系统

以下是Hadoop生态系统的组成部分:

HDFSHadoop分布式文件系统。它只是存储尽可能接近原始形式的数据文件。

HBase:它是 Hadoop 的数据库,与RDBMS. 它支持大表的结构化数据存储。

Hive:它可以使用与标准非常相似的语言分析大型数据集ANSI SQL,这意味着任何熟悉的人都SQL应该能够访问Hadoop集群上的数据。

Pig:它是一种易于理解的数据流语言。它有助于分析大型数据集,这与Hadoop. Pig脚本会MapReducePig解释器自动转换为作业。

ZooKeeper:它是分布式应用程序的协调服务。

Oozie:它是一个schedular管理 ApacheHadoop作业的工作流系统。

Mahout:它是一个可扩展的机器学习和数据挖掘库。

Chukwa:它是用于管理大型分布式系统的数据收集系统。

Sqoop:用于在Hadoop关系数据库等结构化数据存储之间传输批量数据。

Ambari:它是一个基于 Web 的工具,用于配置、管理和监控Hadoop集群。

蜂巢

Hive是一种数据仓库基础设施工具,用于处理Hadoop. 它位于Hadoop总结大数据之上,使查询和分析变得容易。

蜂巢不是

  1. 关系型数据库

  2. 在线事务处理的设计 ( OLTP)。

  3. 一种用于实时查询和行级更新的语言。

蜂巢的特点

  1. 它将模式存储在数据库中并将处理后的数据存储到HDFS.

  2. 它专为OLAP.

  3. 它提供了SQL用于查询调用HiveQL或的类型语言HQL

  4. 它更家庭、更快速、可扩展和可扩展。

蜂巢架构

Hive 架构中包含以下组件:

  1. 用户界面Hive是一种data warehouse可以在用户和HDFS. Hive支持的用户界面是 Hive Web UI、Hive 命令行和 Hive HD Insight(在 Windows Server 中)。

  2. MetaStoreHive选择各自database servers存储模式或Metadata表、数据库、表中的列、它们的数据类型和HDFS映射。

  3. HiveQL 流程引擎HiveQL类似于SQL查询Metastore. 它是传统MapReduce程序方法的替代品之一。而不是写的MapReduceJava,我们可以写一个查询MapReduce并处理它。

  4. 执行引擎HiveQL流程引擎的结合部分,MapReduceHive执行引擎。执行引擎处理查询并生成与MapReduce results. 它使用MapReduce.

  5. HDFS 或 HBaseHadoop分布式文件系统或者HBase是将数据存储到文件系统中的数据存储技术。


sha*_*zin 5

对于Hadoop与Cassandra/HBase之间的比较,请阅读这篇文章.

基本上,HBase可以实现真正快速的读写和可扩展性.速度和可扩展性如何?Facebook使用它来管理其用户状态,照片,聊天消息等.HBase是如此之快,有时候Facebook开发了堆栈,使用HBase作为Hive本身的数据存储.

As Hive更像是一个数据仓库解决方案.您可以使用类似于SQL的语法来查询Hive内容,从而导致Map Reduce作业.不适合快速的交易系统.


aks*_*kar 5

我从事Lambda架构处理实时和批量加载.如果在传感器发送火警或在银行交易的情况下进行欺诈检测,则需要进行快速决策,需要实时处理.需要批处理来汇总可以提供给BI系统的数据.

我们将Hadoop生态系统技术用于上述应用.

实时处理

Apache Storm:流数据处理,规则应用

HBase:用于提供实时仪表板的数据存储区

批处理 Hadoop:处理大量数据.360度概览或向事件添加上下文.Pig,MR,Spark,Hive,Shark等接口或框架有助于计算.这一层需要调度程序,Oozie是不错的选择.

事件处理层

Apache Kafka是第一层消耗来自传感器的高速事件.Kafka通过Linkedin连接器提供实时和批量分析数据流.