使用 Hadoop 或 HBase 或 Hive 有什么好处?
根据我的理解, HBase 避免使用map-reduce,并且在HDFS之上具有面向列的存储。 Hive 是 Hadoop 和 HBase 的类似sql的界面。
我还想知道 Hive 与 Pig 的比较。
答案 0 :(得分:337)
MapReduce只是一个计算框架。 HBase与它无关。也就是说,您可以通过编写MapReduce作业来有效地向/从HBase提取数据。或者,您可以使用其他HBase API(例如Java)编写顺序程序来放置或获取数据。但我们使用Hadoop,HBase等来处理大量数据,因此这没有多大意义。当数据太大时,使用正常的顺序程序效率非常低。
回到问题的第一部分,Hadoop基本上是两件事:分布式文件系统(HDFS) + 计算或处理框架(MapReduce)。与所有其他FS一样,HDFS也为我们提供存储,但是以容错的方式提供高吞吐量和较低的数据丢失风险(因为复制)。但是,作为FS,HDFS缺乏随机读写访问。这是HBase进入画面的地方。它是一个分布式,可扩展的大数据存储,模仿Google的BigTable。它将数据存储为键/值对。
来到Hive。它为现有Hadoop集群提供了数据仓储设施。除此之外,它提供了一个 SQL like 接口,使您的工作更轻松,以防您来自SQL背景。您可以在Hive中创建表并在那里存储数据。除此之外,您甚至可以将现有的HBase表映射到Hive并对其进行操作。
虽然Pig基本上是一种数据流语言,它允许我们非常轻松快速地处理大量数据。猪基本上有两部分:猪口译员和语言, PigLatin 。你在PigLatin中编写Pig脚本并使用Pig解释器处理它们。猪让我们的生活变得更轻松,否则编写MapReduce总是不容易。事实上,在某些情况下,它真的会变成一种痛苦。
前段时间我写了article on a short comparison of different tools of the Hadoop ecosystem。这不是深度比较,而是对这些工具的简短介绍,可以帮助您入门。 (只是为了补充我的答案。没有自我推销)
Hive和Pig查询都会被转换为MapReduce作业。
HTH
答案 1 :(得分:50)
我最近在我的公司实施了一个Hive数据平台,因为我是一个单独的团队,所以我可以用第一人称对话。
我对以下选项进行了基准测试:
HBase 就像一张地图。如果您知道密钥,您可以立即获得价值。但是如果你想知道Hbase中有多少整数键在1000000和2000000之间,那么单独不适合 Hbase 。
如果要汇总,汇总,跨行分析数据,请考虑 Hive 。
希望这有帮助。
Hive 实际上非常好......我知道,我已经活了12个月了......那么 HBase ......
答案 2 :(得分:25)
Hadoop是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。
Hadoop中有四个主要模块。
Hadoop Common :支持其他Hadoop模块的常用实用程序。
Hadoop分布式文件系统( HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
Hadoop YARN :作业调度和群集资源管理的框架。
Hadoop MapReduce :基于YARN的系统,用于并行处理大型数据集。
在进一步说明之前,请注意我们有三种不同类型的数据。
结构化:结构化数据具有强大的架构,并且在写入期间将检查架构。读操作。例如RDBMS系统中的数据,如Oracle,MySQL Server等。
非结构化:数据没有任何结构,可以是任何形式 - Web服务器日志,电子邮件,图像等。
半结构化:数据没有严格的结构,但有一些结构。例如XML文件。
根据要处理的数据类型,我们必须选择正确的技术。
更多项目,它们是Hadoop的一部分:
HBase™:一个可扩展的分布式数据库,支持大型表的结构化数据存储。
Hive ™:提供数据汇总和临时查询的数据仓库基础架构。
Pig™:用于并行计算的高级数据流语言和执行框架。
Hive Vs PIG 比较可以在此article和我在SE question的其他帖子找到。
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 Use Cases。
应该使用Hive 来分析查询一段时间内收集的数据。例如计算趋势,总结网站日志,但它不能用于实时查询。
HBase 适合实时查询大数据。 Facebook将其用于消息传递和实时分析。
PIG 可用于构建数据流,运行预定作业,处理大量数据,汇总/汇总数据并存储到关系数据库系统中。适用于临时分析。
Hive 可用于临时数据分析,但它不支持与PIG不同的所有非结构化数据格式。
答案 3 :(得分:22)
考虑您使用RDBMS并且必须选择要使用的内容 - 全表扫描或索引访问 - 但只能选择其中一个。
如果选择全表扫描 - 请使用配置单元。如果索引访问 - HBase。
答案 4 :(得分:5)
我致力于Lambda架构处理实时和批量加载。 如果在传感器发送火警或在银行交易的情况下进行欺诈检测,则需要进行快速决策,需要实时处理。 需要批处理来汇总可以提供给BI系统的数据。
我们将 Hadoop 生态系统技术用于上述应用程序。
实时处理
Apache Storm:流数据处理,规则应用
HBase:用于提供实时仪表板的数据存储
批处理 Hadoop:破解大量数据。 360度概览或向事件添加上下文。 Pig,MR,Spark,Hive,Shark等接口或框架有助于计算。这一层需要调度程序,Oozie是不错的选择。
事件处理图层
Apache Kafka是从传感器消耗高速事件的第一层。 Kafka通过Linkedin连接器提供实时和批量分析数据流。
答案 5 :(得分:5)
对于Hadoop与Cassandra / HBase之间的比较,请阅读post。
基本上,HBase可以实现真正快速的读写和可扩展性。速度和可扩展性如何? Facebook使用它来管理其用户状态,照片,聊天消息等.HBase是如此之快,有时候Facebook开发了堆栈,使用HBase作为Hive本身的数据存储。
As Hive更像是一个数据仓库解决方案。您可以使用类似于SQL的语法来查询Hive内容,从而导致Map Reduce作业。不适合快速的交易系统。
答案 6 :(得分:3)
深入了解
<强> Hadoop的强>
Hadoop
是Apache
基金会的开源项目。它是一个用Java
编写的框架,最初由Doug Cutting于2005年开发。它的创建是为了支持文本搜索引擎Nutch
的发布。 Hadoop
使用Google的Map Reduce
和Google文件系统技术作为其基础。
Hadoop的功能
Hadoop
用于高吞吐量而非低延迟。它是处理大量数据的批处理操作;因此,响应时间不会立竿见影。RDBMS
。Hadoop的版本
Hadoop
有两个版本:
Hadoop 1.0
它有两个主要部分:
<强> 1。数据存储框架
这是一个名为Hadoop分布式文件系统(HDFS
)的通用文件系统。
HDFS
是无架构的
它只存储数据文件,这些数据文件几乎可以是任何格式。
我们的想法是尽可能接近原始格式存储文件。
这反过来为业务部门和组织提供了急需的灵活性和灵活性,而不会过分担心它可以实现的目标。
<强> 2。数据处理框架
这是一个简单的函数式编程模型,最初由Google推广为MapReduce
。
它主要使用两个函数:MAP
和REDUCE
来处理数据。
&#34; Mappers&#34;接受一组键值对并生成中间数据(这是另一个键值对列表)。
&#34;减速机&#34;然后对此输入进行操作以生成输出数据。
这两个函数似乎彼此孤立地工作,从而使处理能够以高度并行,容错和可扩展的方式高度分布。
Hadoop 1.0的限制
第一个限制是MapReduce
编程专业知识的要求。
它仅支持批处理,虽然它适用于日志分析,大规模数据挖掘项目等任务,但几乎不适合其他类型的项目。
一个主要的限制是Hadoop 1.0
与MapReduce
紧密计算耦合,这意味着已建立的数据管理供应商留下了两个意见:
在MapReduce
中重写其功能,以便它可以
在Hadoop
或
从HDFS
提取数据或在Hadoop
之外处理数据。
这些选项都不可行,因为它导致数据移入和移出Hadoop
群集导致流程效率低下。
Hadoop 2.0
在Hadoop 2.0
中,HDFS
仍然是数据存储框架。
然而,一个新的单独的资源管理框架称为 Y et A nother R esource N egotiater( YARN )已被添加。
YARN支持任何能够将自身划分为并行任务的应用程序。
YARN协调提交的应用程序的子任务分配,从而进一步增强应用程序的灵活性,可伸缩性和效率。
通过使用应用程序主数据代替作业跟踪器,在受新节点管理器管理的资源上运行应用程序。
ApplicationMaster能够运行任何应用程序,而不仅仅是MapReduce
。
这意味着它不仅支持批处理,还支持实时处理。 MapReduce
不再是唯一的数据处理选项。
Hadoop的优势
它将数据存储在其原生地中。在键入数据或存储数据时没有强加任何结构。 HDFS
架构较少。只有在需要处理数据时才会对原始数据施加结构。
可扩展。 Hadoop
可以在数百个并行运行的廉价服务器上存储和分发非常大的数据集。
它对失败很有弹性。 Hadoop
是容错的。它努力实现数据复制,这意味着无论何时将数据发送到任何节点,相同的数据也会被复制到集群中的其他节点,从而确保在节点发生故障时,总会有另一个数据副本可供使用。
很灵活。 Hadoop
的一个主要优点是它可以处理任何类型的数据:结构化,非结构化或半结构化。此外,由于&#34;将代码移动到数据&#34;,Hadoop
处理速度非常快。范例
Hadoop生态系统
以下是Hadoop
生态系统的组成部分:
HDFS :Hadoop
分布式文件系统。它只是将数据文件存储为尽可能接近原始形式。
HBase :它是Hadoop的数据库,可与RDBMS
进行比较。它支持大型表的结构化数据存储。
Hive :它可以使用与标准ANSI SQL
非常相似的语言分析大型数据集,这意味着任何有SQL
的家庭成员都应该能够访问Hadoop
群集。
Pig :这是一种易于理解的数据流语言。它有助于分析大型数据集,这与Hadoop
完全相同。 Pig
解释程序会自动将MapReduce
个脚本转换为Pig
个作业。
ZooKeeper :它是分布式应用程序的协调服务。
Oozie :这是一个管理Apache schedular
工作的工作流Hadoop
系统。
Mahout :它是一个可扩展的机器学习和数据挖掘库。
Chukwa :这是用于管理大型分布式系统的数据收集系统。
Sqoop :它用于在Hadoop
和结构化数据存储(如关系数据库)之间传输批量数据。
Ambari :这是一个基于网络的工具,用于配置,管理和监控Hadoop
群集。
<强>蜂房强>
Hive
是一个数据仓库基础架构工具,用于处理Hadoop
中的结构化数据。它位于Hadoop
之上,用于汇总大数据,使查询和分析变得简单。
Hive不是
关系数据库
在线交易处理的设计(OLTP
)。
用于实时查询和行级更新的语言。
Hive的功能
它将数据库中的架构和处理后的数据存储到HDFS
。
专为OLAP
设计。
它提供了SQL
类型语言,用于查询名为HiveQL
或HQL
。
它比较熟悉,快速,可扩展且可扩展。
Hive Architecture
Hive Architecture中包含以下组件:
用户界面:Hive
是一个data warehouse
基础架构,可以在用户和HDFS
之间创建互动。 Hive
支持的用户界面是Hive Web UI,Hive命令行和Hive HD Insight(在Windows Server中)。
MetaStore :Hive
选择相应的database
servers
来存储架构或Metadata
表,数据库,列表,它们的数据类型和HDFS
映射。
HiveQL Process Engine :HiveQL
类似于SQL
,用于查询Metastore
上的架构信息。它是MapReduce
计划的传统方法的替代品之一。我们可以编写MapReduce
的查询并处理它,而不是在Java
中撰写MapReduce
。
Exceution Engine :HiveQL
流程引擎和MapReduce
的合并部分是Hive
执行引擎。执行引擎处理查询并生成与MapReduce results
相同的结果。它使用MapReduce
。
HDFS或HBase :Hadoop
分布式文件系统或HBase
是将数据存储到文件系统的数据存储技术。
答案 7 :(得分:1)
首先,我们应该明白 Hadoop 是作为 RDBMS 的更快替代方案而创建的。以非常快的速度处理大量数据,这在RDBMS中花了很多时间。
现在应该知道这两个术语:
结构化数据:这是我们在传统RDBMS中使用的数据,并且被划分为明确定义的结构。
非结构化数据:理解这一点非常重要,大约80%的世界数据都是非结构化或半结构化的。这些是原始形式的数据,无法使用RDMS进行处理。示例:facebook,twitter数据。 (http://www.dummies.com/how-to/content/unstructured-data-in-a-big-data-environment.html)。
因此,在过去几年中生成了大量数据,而且数据大多是非结构化的,这就产生了HADOOP。它主要用于使用RDBMS花费不可行时间的大量数据。它有许多缺点,它不能实时用于相对较小的数据,但它们已设法消除其在较新版本中的缺点。
在进一步讨论之前,我想告诉他们在以前的工具上发现错误时会创建一个新的大数据工具。因此,您将看到创建的任何工具都已经完成,以克服以前工具的问题。
Hadoop 可以简单地说两件事: Mapreduce 和 HDFS 。 Mapreduce是处理发生的地方,HDFS是存储数据的DataBase。该结构遵循 WORM 原则,即多次写入一次读取。因此,一旦我们将数据存储在HDFS中,我们就无法进行更改。这导致了 HBASE 的创建,这是一个NOSQL产品,我们可以在写完一次后对数据进行更改。
但随着时间的推移,我们看到Hadoop有很多错误,为此我们创建了不同于Hadoop结构的环境。 PIG和HIVE是两个流行的例子。
HIVE 是为 SQL 背景的人创建的。编写的查询类似于名为 HIVEQL 的SQL。开发HIVE是为了处理完全结构化数据。它不用于组织数据。
另一方面,PIG 有自己的查询语言,即 PIG LATIN 。它既可用于结构化,也可用于非结构化数据。
在使用HIVE以及何时使用PIG的过程中,我认为除了PIG的架构师之外的任何人都可以说。点击链接: https://developer.yahoo.com/blogs/hadoop/comparing-pig-latin-sql-constructing-data-processing-pipelines-444.html
答案 8 :(得分:1)
Hadoop:
HDFS代表Hadoop分布式文件系统,它使用计算处理模型Map-Reduce。
HBase:
HBase是键值存储,非常适合于近乎实时的读写。
蜂巢:
Hive用于使用类似SQL的语法从HDFS提取数据。蜂巢使用HQL语言。
猪:
Pig是用于创建ETL的数据流语言。这是一种脚本语言。
答案 9 :(得分:0)
在 Cloudera 在 CDP 中摆脱它之后,Pig 大部分都死了。 Apache 的最后一次发布是 2017 年 6 月 19 日:发布 0.17.0,因此基本上没有提交者积极工作了。使用比 Pig 更强大的 Spark 或 Python。
答案 10 :(得分:0)
我认为,该线程并没有对HBase和Pig带来特别的公正。尽管我认为Hadoop是大数据湖实施的分布式弹性文件系统的选择,但HBase和Hive之间的选择尤其合理。
同样,许多用例对类似SQL或类似No-SQL的接口有特殊的要求。在Phoenix的HBase之上,尽管可以实现类似SQL的功能,但是,性能,第三方集成,仪表盘更新是一种痛苦的体验。但是,对于需要水平扩展的数据库来说,这是一个绝佳的选择。
Pig对于非递归批处理(例如计算或ETL流水线)(在某个地方,它的性能优于Spark的地方)特别出色。而且,它的高级数据流实现是批处理查询和脚本编写的绝佳选择。 Pig和Hive之间的选择还取决于客户端或服务器端脚本的需要,所需的文件格式等。Pig支持Avro文件格式,这在Hive中是不正确的。 “过程数据流语言”与“声明性数据流语言”的选择也是在猪和蜂巢之间进行选择的强烈理由。
答案 11 :(得分:0)
这个问题的简短答案是-
Hadoop-是一种框架,它促进了分布式文件系统和编程模型的发展,与传统方法相比,该框架使我们能够以分布式方式非常有效地并且以更少的处理时间来存储庞大的数据和处理数据。
(HDFS-Hadoop分布式文件系统) (Map Reduce-用于分布式处理的编程模型)
Hive-是一种查询语言,它允许以非常流行的类似SQL的方式从Hadoop分布式文件系统读取/写入数据。对于许多非编程背景的人们来说,这使生活变得更轻松,因为他们不再需要编写Map-Reduce程序,除非非常复杂的场景中不支持Hive。
Hbase-是列式NoSQL数据库。 Hbase的底层存储层还是HDFS。该数据库最重要的用例是能够存储十亿行和一百万列。 Hbase的低延迟功能有助于更快,更随机地访问分布式数据上的记录,这是非常重要的功能,它使其对于诸如Recommender Engines之类的复杂项目很有用。此外,它的记录级别版本控制功能使用户可以非常高效地存储事务数据(这解决了更新我们使用HDFS和Hive拥有的记录的问题)
希望这有助于快速了解以上3个功能。
答案 12 :(得分:0)
Hive,Hbase和Pig的使用我在不同项目中的实时经验。
配置单元主要用于:
分析的目的是需要对历史数据进行分析
根据某些列生成业务报告
与元数据信息一起有效地管理数据
在某些使用列概念经常使用的列上联接表
使用分区概念进行有效的存储和查询
对事务/行级别的操作(如更新,删除等)无效。
猪主要用于:
对大数据的频繁数据分析
根据海量数据生成汇总值/计数
非常频繁地生成企业级关键绩效指标
Hbase最常用:
用于数据的实时处理
有效地管理复杂和嵌套模式
用于实时查询和更快的结果
使用列可轻松扩展
用于事务/行级别的操作,例如更新,删除等。
答案 13 :(得分:0)
Pig中的清理数据非常简单,一种合适的方法是通过pig清理数据,然后通过hive处理数据,然后将其上传到hdfs。
答案 14 :(得分:0)
1.我们正在使用Hadoop以txt,csv等格式文件格式存储大数据(即结构,非结构和半结构数据)。
2.如果我们想在数据中使用柱状更新,那么我们正在使用Hbase工具
3.如果是Hive,我们正在存储结构化格式的大数据 除此之外,我们还提供对该数据的分析。
4.Pig是使用Pig latin语言分析任何格式(结构,半结构和非结构)数据的工具。
答案 15 :(得分:0)
Pig:最好处理文件和清理数据 示例:删除空值,字符串处理,不必要的值 Hive:用于查询已清理的数据
答案 16 :(得分:0)
让我试着用几句话回答。
Hadoop是一个由所有其他工具组成的生态系统。所以,你无法比较Hadoop,但你可以比较MapReduce。
这是我的几分钱: