Answers:
MapReduce只是一个计算框架。HBase与它无关。也就是说,您可以通过编写MapReduce作业高效地将数据放入HBase或从HBase提取数据。或者,您可以使用其他HBase API(例如Java)编写顺序程序来放置或获取数据。但是我们使用Hadoop,HBase等来处理大量数据,所以这没有多大意义。当您的数据太大时,使用常规的顺序程序将效率很低。
回到问题的第一部分,Hadoop本质上是两件事:分布式文件系统(HDFS) + 计算或处理框架(MapReduce)。像所有其他FS一样,HDFS也为我们提供存储,但是以容错的方式提供了高吞吐量和较低的数据丢失风险(由于复制)。但是,作为FS,HDFS缺乏随机的读写访问权限。这就是HBase发挥作用的地方。它是一个分布式的,可扩展的大数据存储,以Google的BigTable为模型。它将数据存储为键/值对。
来到蜂巢。它在现有Hadoop集群之上为我们提供了数据仓库设施。除此之外,它还提供类似SQL的界面,以防您来自SQL背景,从而使您的工作更加轻松。您可以在Hive中创建表并在其中存储数据。除此之外,您甚至可以将现有的HBase表映射到Hive并对其进行操作。
Pig基本上是一种数据流语言,它使我们能够非常轻松,快速地处理大量数据。Pig主要包含两部分:Pig 解释器和语言PigLatin。您可以在PigLatin中编写Pig脚本,并使用Pig解释器对其进行处理。Pig使我们的生活更加轻松,否则编写MapReduce总是不容易。实际上,在某些情况下,它可能真的很痛苦。
前一段时间,我写了一篇关于Hadoop生态系统不同工具的简短比较的文章。这不是深入的比较,而是对每个工具的简短介绍,可以帮助您入门。(只需添加我的答案即可。无意自我提升)
Hive和Pig查询都将转换为后台的MapReduce作业。
高温超导
yarn
在Hadoop生态系统:(。
我最近在我的公司中实施了Hive Data平台,并且由于我是一个人的团队,因此可以第一人称与它交谈。
我对以下选项进行了基准测试:
HBase就像一张地图。如果您知道密钥,就可以立即获得价值。但是,如果您想知道Hbase中有多少个整数键在1000000和2000000之间,则这不适合单独使用Hbase。
如果您有需要汇总,汇总,跨行分析的数据,请考虑使用Hive。
希望这会有所帮助。
Hive实际上是岩石...我知道,我已经住了12个月... HBase也是如此 ...
Hadoop是一个框架,它允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。
Hadoop中有四个主要模块。
Hadoop Common:支持其他Hadoop模块的通用实用程序。
Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
Hadoop YARN:用于作业调度和集群资源管理的框架。
Hadoop MapReduce:基于YARN的系统,用于并行处理大数据集。
在继续之前,让我们注意一下,我们有三种不同类型的数据。
结构化:结构化数据具有强大的架构,并且在读写操作期间将检查架构。例如RDBMS系统中的数据,例如Oracle,MySQL Server等。
非结构化:数据没有任何结构,并且可以是任何形式-Web服务器日志,电子邮件,图像等。
半结构化:数据不是严格结构化的,而是具有某种结构的。例如XML文件。
根据要处理的数据类型,我们必须选择正确的技术。
更多项目,它们是Hadoop的一部分:
HBase™:可扩展的分布式数据库,支持大型表的结构化数据存储。
Hive ™:一种数据仓库基础结构,可提供数据汇总和即席查询。
Pig™:用于并行计算的高级数据流语言和执行框架。
Hive与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用例。
蜂房应用于一段时间内收集的数据的分析查询。例如,计算趋势,汇总网站日志,但不能用于实时查询。
HBase适合于大数据的实时查询。Facebook将其用于消息传递和实时分析。
猪可用于构造数据流,运行计划的作业,处理大量数据,对其进行汇总/汇总并存储到关系数据库系统中。适用于临时分析。
Hive可以用于临时数据分析,但它不能像PIG一样支持所有非结构化数据格式。
考虑到您使用RDBMS,必须选择使用什么(全表扫描或索引访问),但只能选择其中一种。
如果选择全表扫描-请使用配置单元。如果索引访问-HBase。
我从事Lambda体系结构处理实时和批处理负载的工作。在需要通过快速决策来进行快速决策的情况下,需要实时处理,如果通过传感器发送火灾警报,或者在进行银行交易时可以进行欺诈检测。需要批处理来汇总可馈入BI系统的数据。
我们将Hadoop生态系统技术用于上述应用程序。
实时处理
Apache Storm:流数据处理,规则应用
HBase:用于服务实时仪表板的数据存储
批量处理 Hadoop:大量数据。360度概览或向事件添加上下文。诸如Pig,MR,Spark,Hive,Shark之类的接口或框架有助于计算。该层需要调度程序,Oozie是很好的选择。
事件处理层
Apache Kafka是消耗传感器高速事件的第一层。Kafka通过Linkedin连接器提供实时和批处理分析数据流。
深入了解
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
处理数据。
“映射器”采用一组键值对并生成中间数据(这是键值对的另一个列表)。
然后,“减速器”对该输入进行操作以产生输出数据。
这两个功能看似彼此隔离,从而使处理能够以高度并行,容错和可扩展的方式高度分布。
Hadoop 1.0的局限性
第一个限制是需要MapReduce
编程专家。
它仅支持批处理,尽管该批处理适合诸如日志分析,大规模数据挖掘项目之类的任务,但几乎不适合其他类型的项目。
一个主要限制是与Hadoop 1.0
紧密结合MapReduce
,这意味着已建立的数据管理供应商留下了两种意见:
要么重写它们的功能中MapReduce
,这样它可以在被执行Hadoop
或
从中提取数据HDFS
或在之外处理数据Hadoop
。
没有一种选择是可行的,因为它会导致由于将数据移入和移出Hadoop
集群而导致流程效率低下。
Hadoop 2.0
在Hadoop 2.0
,HDFS
继续是数据存储框架。
然而,被称为新的和独立的资源管理框架ý等甲诺特尔ř esource Ñ egotiater(YARN已添加)。
YARN支持任何能够将自己划分为并行任务的应用程序。
YARN协调提交的应用程序的子任务的分配,从而进一步增强了应用程序的灵活性,可伸缩性和效率。
它可以通过使用应用程序主控器代替Job Tracker来工作,并在新的节点管理器控制的资源上运行应用程序。
ApplicationMaster能够运行任何应用程序,而不仅仅是MapReduce
。
这意味着它不仅支持批处理,而且还支持实时处理。MapReduce
不再是唯一的数据处理选项。
Hadoop的优势
它将数据存储在其本机中。键入数据或存储数据时不施加任何结构。HDFS
模式少了。仅在稍后需要处理数据时,才将结构强加于原始数据。
它是可扩展的。Hadoop
可以在数百个并行运行的廉价服务器上存储和分发非常大的数据集。
它可以抵抗失败。 Hadoop
是容错能力。它努力地进行数据复制,这意味着每当将数据发送到任何节点时,相同的数据也会被复制到集群中的其他节点,从而确保在发生节点故障的情况下,总会有另一个可用的数据副本。
它很灵活。Hadoop
它的主要优点之一是它可以处理任何类型的数据:结构化,非结构化或半结构化。同样,Hadoop
由于“将代码移动到数据”范例,处理速度非常快。
Hadoop生态系统
以下是Hadoop
生态系统的组成部分:
HDFS:Hadoop
分布式文件系统。它只是存储数据文件,使其尽可能接近原始格式。
HBase:这是Hadoop的数据库,可以与进行比较RDBMS
。它支持大型表的结构化数据存储。
Hive:它可以使用与standard非常相似的语言来分析大型数据集ANSI SQL
,这意味着熟悉该语言的任何人都SQL
应该能够访问Hadoop
集群上的数据。
猪:这是一种易于理解的数据流语言。它有助于分析大型数据集,这与的顺序相当Hadoop
。Pig
脚本MapReduce
由Pig
解释器自动转换为作业。
ZooKeeper:这是用于分布式应用程序的协调服务。
Oozie:这是一个schedular
用于管理Apache Hadoop
作业的工作流系统。
Mahout:这是一个可扩展的机器学习和数据挖掘库。
Chukwa:这是用于管理大型分布式系统的数据收集系统。
Sqoop:用于在批量数据Hadoop
和结构化数据存储(如关系数据库)之间传输。
Ambari:这是一个基于Web的工具,用于供应,管理和监视Hadoop
集群。
蜂巢
Hive
是一个数据仓库基础设施工具,用于处理Hadoop
。它位于Hadoop
总结大数据的顶部,使查询和分析变得容易。
蜂巢不是
关系数据库
在线交易处理(OLTP
)的设计。
一种用于实时查询和行级更新的语言。
蜂巢的功能
它将模式存储在数据库中,并将处理后的数据存储到中HDFS
。
它是专为OLAP
。
它提供了SQL
用于查询的类型语言,称为HiveQL
或HQL
。
它更加熟悉,快速,可扩展和可扩展。
蜂巢架构
Hive体系结构中包含以下组件:
用户界面:Hive
是一种data warehouse
基础设施,可以在用户和用户之间建立互动HDFS
。Hive
支持的用户界面包括Hive Web UI,Hive命令行和Hive HD Insight(在Windows Server中)。
MetaStore:Hive
选择各自database
servers
存储模式或Metadata
表,数据库,表中的列,其数据类型和HDFS
映射。
HiveQL流程引擎:HiveQL
类似于在SQL
.NET上查询架构信息Metastore
。它是传统MapReduce
程序方法的替代之一。而不是写的MapReduce
中Java
,我们可以写一个查询MapReduce
并处理它。
Exceution Engine:HiveQL
流程引擎的结合部分,MapReduce
是Hive
Execution Engine。执行引擎处理查询并生成与相同的结果MapReduce results
。它使用的味道MapReduce
。
HDFS或HBase:Hadoop
分布式文件系统,还是HBase
将数据存储到文件系统中的数据存储技术。
首先,我们应该清楚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是存储数据的数据库。此结构遵循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
让我尝试用几句话回答。
Hadoop是一个包含所有其他工具的生态系统。因此,您无法比较Hadoop,但可以比较MapReduce。
这是我的几分钱:
在Pig中清理数据非常容易,一种合适的方法是通过Pig清理数据,然后通过蜂巢处理数据,然后将其上传到hdfs。
这个问题的简短答案是-
Hadoop-Is Framework有助于分布式文件系统和编程模型,与传统方法相比,该模型使我们能够以分布式方式非常高效地以庞大的方式存储庞大的数据和处理数据,并且处理时间更少。
(HDFS-Hadoop分布式文件系统)(Map Reduce-分布式处理的编程模型)
Hive-一种查询语言,它允许以非常流行的类似SQL的方式从Hadoop分布式文件系统读取/写入数据。对于许多非编程背景人员来说,这使生活变得更加轻松,因为他们不再需要编写Map-Reduce程序,除了不支持Hive的非常复杂的场景。
Hbase-是柱状NoSQL数据库。Hbase的底层存储层还是HDFS。此数据库最重要的用例是能够存储十亿行和一百万列。Hbase的低延迟功能有助于更快,随机地访问分布式数据上的记录,这是非常重要的功能,使其对于诸如Recommender Engines之类的复杂项目很有用。此外,它的记录级别版本控制功能使用户可以非常有效地存储事务数据(这解决了更新我们使用HDFS和Hive拥有的记录的问题)
希望这有助于快速了解以上三个功能。
我相信这个线程并没有特别针对HBase和Pig。尽管我认为Hadoop是大数据湖实施的分布式,有弹性的文件系统的选择,但HBase和Hive之间的选择尤其合理。
与之类似,许多用例对类似SQL或类似No-SQL的接口有特定的要求。使用Phoenix在HBase之上,虽然可以实现类似SQL的功能,但是,性能,第三方集成,仪表板更新是一种痛苦的体验。但是,对于需要水平扩展的数据库来说,这是一个绝佳的选择。
Pig对于非递归批处理(例如计算或ETL流水线)(在某个地方,它的性能优于Spark的地方)特别出色。而且,它的高级数据流实现是批处理查询和脚本编写的绝佳选择。Pig和Hive之间的选择还取决于客户端或服务器端脚本的需求,所需的文件格式等。Pig支持Avro文件格式,而Hive则不然。“过程数据流语言”与“声明性数据流语言”的选择也是在猪和蜂巢之间进行选择的强烈理由。