使用Hadoop或HBase或Hive有什么好处?
据我了解,HBase避免使用 map-reduce,并且在 HDFS 之上具有面向列的存储。Hive是Hadoop和HBase的类似 sql 的接口。
我也想知道Hive与Pig的比较。
使用Hadoop或HBase或Hive有什么好处?
据我了解,HBase避免使用 map-reduce,并且在 HDFS 之上具有面向列的存储。Hive是Hadoop和HBase的类似 sql 的接口。
我也想知道Hive与Pig的比较。
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 Interpreter和语言PigLatin。您在 PigLatin 中编写 Pig 脚本并使用 Pig 解释器处理它们。Pig 让我们的生活轻松了很多,否则写 MapReduce 总是不容易。事实上,在某些情况下,它真的会成为一种痛苦。
不久前,我写了一篇文章,对 Hadoop 生态系统的不同工具进行了简短的比较。这不是深度比较,而是对这些工具的简短介绍,可以帮助您入门。(只是为了补充我的答案。无意自我推销)
Hive 和 Pig 查询都在后台转换为 MapReduce 作业。
高温高压
我最近在我的公司实施了一个 Hive Data 平台,因为我是一个单人团队,所以我可以用第一人称与它交谈。
我对以下选项进行了基准测试:
HBase就像一个地图。如果您知道密钥,您可以立即获得价值。但是如果你想知道 Hbase 中有多少个整数键在 1000000 到 2000000 之间,那是不适合单独使用Hbase的。
如果您有需要跨行聚合、汇总、分析的数据,请考虑Hive。
希望这会有所帮助。
Hive实际上很摇滚……我知道,我已经住了 12 个月了…… HBase也是如此……
考虑到您使用 RDBMS 并且必须选择要使用的内容 - 全表扫描或索引访问 - 但只能选择其中一种。
如果您选择全表扫描 - 使用 hive。如果索引访问 - HBase。
深入了解
Hadoop
Hadoop
Apache
是基金会的一个开源项目。它是一个用 编写的框架Java
,最初由 Doug Cutting 在 2005 年开发。创建它是为了支持Nutch
文本搜索引擎的分发。Hadoop
使用 GoogleMap Reduce
和 Google 文件系统技术作为其基础。
Hadoop的特点
Hadoop
是为了高吞吐量而不是低延迟。它是处理海量数据的批处理操作;因此响应时间不是即时的。RDBMS
.Hadoop 的版本
有两个版本Hadoop
可用:
Hadoop 1.0
它有两个主要部分:
1. 数据存储框架
它是一种通用文件系统,称为 Hadoop 分布式文件系统 ( HDFS
)。
HDFS
是无模式的
它只是存储数据文件,这些数据文件可以是几乎任何格式。
这个想法是尽可能接近其原始形式存储文件。
这反过来又为业务部门和组织提供了急需的灵活性和敏捷性,而不必过度担心它可以实施什么。
2. 数据处理框架
这是一个简单的函数式编程模型,最初由 Google 推广为MapReduce
.
它本质上使用两个功能:MAP
和REDUCE
处理数据。
“映射器”接收一组键值对并生成中间数据(这是另一个键值对列表)。
“Reducers”然后作用于这个输入以产生输出数据。
这两个功能似乎彼此隔离工作,从而使处理能够以高度并行、容错和可扩展的方式高度分布。
Hadoop 1.0 的局限性
第一个限制是对MapReduce
编程专业知识的要求。
它只支持批处理,虽然适用于日志分析、大规模数据挖掘项目等任务,但几乎不适合其他类型的项目。
一个主要限制是Hadoop 1.0
在计算上与 紧密耦合MapReduce
,这意味着已建立的数据管理供应商留下了两种意见:
要么重写它们的功能,MapReduce
以便它可以执行,Hadoop
要么
从. HDFS
_Hadoop
这些选项都不可行,因为它会导致数据移入和移出Hadoop
集群导致流程效率低下。
Hadoop 2.0
在Hadoop 2.0
,HDFS
继续是数据存储框架。
但是,添加了一个新的独立资源管理框架,称为Y et A other Resource N egotiater ( YARN )。
YARN 支持任何能够将自身划分为并行任务的应用程序。
YARN 协调提交应用程序的子任务分配,从而进一步提高应用程序的灵活性、可扩展性和效率。
它的工作原理是使用Application Master代替Job Tracker ,在新节点管理器管理的资源上运行应用程序。
ApplicationMaster 能够运行任何应用程序,而不仅仅是MapReduce
.
这意味着它不仅支持批处理,还支持实时处理。MapReduce
不再是唯一的数据处理选项。
Hadoop的优势
它将数据存储在其本机中。在键入数据或存储数据时没有强加结构。HDFS
少模式。只有稍后需要处理数据时,才会将结构强加于原始数据。
它是可扩展的。Hadoop
可以在数百台并行运行的廉价服务器上存储和分发非常大的数据集。
它对失败具有弹性。Hadoop
是容错。它勤奋地实践数据的复制,这意味着每当数据发送到任何节点时,相同的数据也会被复制到集群中的其他节点,从而确保在节点发生故障时,总会有另一个数据副本可供使用。
它是灵活的。其主要优势之一Hadoop
是它可以处理任何类型的数据:结构化、非结构化或半结构化。Hadoop
此外,由于“将代码移动到数据”范例,处理速度非常快。
Hadoop生态系统
以下是Hadoop
生态系统的组成部分:
HDFS:Hadoop
分布式文件系统。它只是尽可能接近原始形式存储数据文件。
HBase:它是 Hadoop 的数据库,与RDBMS
. 它支持大表的结构化数据存储。
Hive:它可以使用与 standard 非常相似的语言来分析大型数据集ANSI SQL
,这意味着任何熟悉该语言的人都SQL
应该能够访问Hadoop
集群上的数据。
Pig:它是一种易于理解的数据流语言。它有助于分析大型数据集,这与Hadoop
. Pig
解释器会自动将脚本转换为MapReduce
作业Pig
。
ZooKeeper:它是分布式应用程序的协调服务。
Oozie:这是一个schedular
管理 ApacheHadoop
作业的工作流系统。
Mahout:它是一个可扩展的机器学习和数据挖掘库。
Chukwa:它是用于管理大型分布式系统的数据收集系统。
Sqoop:用于在Hadoop
关系数据库等结构化数据存储之间传输批量数据。
Ambari:它是一个基于 Web 的工具,用于配置、管理和监控Hadoop
集群。
蜂巢
Hive
是一种数据仓库基础设施工具,用于处理Hadoop
. 它位于总结大数据的基础之上,Hadoop
使查询和分析变得容易。
蜂巢不是
关系数据库
在线事务处理设计 ( OLTP
)。
一种用于实时查询和行级更新的语言。
蜂巢的特点
它将模式存储在数据库中,并将处理后的数据存储到HDFS
.
它专为OLAP
.
它提供SQL
类型语言用于查询称为HiveQL
or 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
在Metastore
. 它是传统MapReduce
程序方法的替代方法之一。我们可以编写查询并处理它,而不是写MapReduce
in 。Java
MapReduce
执行引擎HiveQL
:流程引擎的结合部分,MapReduce
是Hive
执行引擎。执行引擎处理查询并生成与 相同的结果MapReduce results
。它使用MapReduce
.
HDFS 或 HBase:Hadoop
分布式文件系统,或者HBase
是将数据存储到文件系统中的数据存储技术。
我从事 Lambda 架构处理实时和批量加载。如果需要在传感器发送火灾警报或在银行交易的情况下检测欺诈时需要做出快速决策,则需要实时处理。需要批处理来汇总可以输入 BI 系统的数据。
我们将Hadoop生态系统技术用于上述应用程序。
实时处理
Apache Storm:流数据处理,规则应用
HBase:用于服务实时仪表板的数据存储
批处理 Hadoop:处理大量数据。360 度概览或为事件添加上下文。Pig、MR、Spark、Hive、Shark 等接口或框架有助于计算。这一层需要调度程序,Oozie 是个不错的选择。
事件处理层
Apache Kafka 是从传感器消耗高速事件的第一层。Kafka 通过 Linkedin 连接器提供实时和批量分析数据流。
首先,我们应该清楚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:
HDFS 代表 Hadoop 分布式文件系统,它使用计算处理模型 Map-Reduce。
HBase:
HBase 是 Key-Value 存储,适合近乎实时的读写。
蜂巢:
Hive 用于使用类似 SQL 的语法从 HDFS 中提取数据。Hive 使用 HQL 语言。
猪:
Pig 是一种用于创建 ETL 的数据流语言。它是一种脚本语言。
让我试着用几句话来回答。
Hadoop 是一个包含所有其他工具的生态系统。因此,您无法比较 Hadoop,但可以比较 MapReduce。
这是我的几分钱:
Pig:最好处理文件和清理数据示例:删除空值,字符串处理,不必要的值 Hive:用于查询已清理的数据
1.我们使用 Hadoop 存储大数据(即结构、非结构和半结构数据),格式为 txt、csv 等格式文件。
2.如果我们想要在我们的数据中进行列更新,那么我们正在使用 Hbase 工具
3.在 Hive 的情况下,我们以结构化格式存储大数据,除此之外,我们还提供对该数据的分析。
4.Pig是使用Pig拉丁语言分析任何格式(结构、半结构和非结构)数据的工具。
在 Pig 中清理数据非常简单,一个合适的方法是通过 pig 清理数据,然后通过 hive 处理数据,然后将其上传到 hdfs。
根据我在不同项目中的实时经验,我使用 Hive、Hbase 和 Pig。
Hive 主要用于:
需要对历史数据进行分析的分析目的
根据某些列生成业务报告
有效地管理数据和元数据信息
使用分桶概念在某些经常使用的列上连接表
使用分区概念进行高效存储和查询
对于更新、删除等事务/行级操作无用。
猪主要用于:
海量数据的频繁数据分析
在海量数据上生成聚合值/计数
非常频繁地生成企业级关键绩效指标
Hbase主要用于:
用于实时处理数据
用于有效管理复杂和嵌套模式
实时查询和更快的结果
使用列轻松扩展
对于更新、删除等事务/行级操作很有用。
这个问题的简短回答是——
Hadoop - 是促进分布式文件系统和编程模型的框架,与传统方法相比,它允许我们以分布式方式非常有效地存储大量数据和处理数据,并且处理时间非常短。
(HDFS - Hadoop 分布式文件系统) (Map Reduce - 分布式处理的编程模型)
Hive - 是一种查询语言,它允许以非常流行的类似 SQL 的方式从 Hadoop 分布式文件系统读取/写入数据。这使许多非编程背景的人的生活更轻松,因为他们不再需要编写 Map-Reduce 程序,除非是不支持 Hive 的非常复杂的场景。
Hbase - 是列式 NoSQL 数据库。Hbase 的底层存储层还是 HDFS。该数据库最重要的用例是能够存储数十亿行和数百万列。Hbase 的低延迟特性有助于更快、更随机地访问分布式数据上的记录,这是使其对推荐引擎等复杂项目有用的非常重要的特性。此外,它的记录级别版本控制功能允许用户非常有效地存储事务数据(这解决了我们使用 HDFS 和 Hive 更新记录的问题)
希望这有助于快速理解以上 3 个特性。
我相信这个线程对 HBase 和 Pig 并没有特别公正。虽然我认为 Hadoop 是用于大数据湖实施的分布式、弹性文件系统的选择,但 HBase 和 Hive 之间的选择尤其是隔离良好的。
例如,许多用例对类似 SQL 或类似非 SQL 的接口有特殊要求。Phoenix 在 HBase 之上,虽然可以实现类似 SQL 的功能,但是性能、第三方集成、仪表板更新是一种痛苦的体验。但是,对于需要水平扩展的数据库来说,它是一个很好的选择。
Pig 特别适用于非递归批处理,如计算或 ETL 流水线(在某处,它的性能优于 Spark)。此外,它的高级数据流实现是批量查询和脚本的绝佳选择。Pig 和 Hive 之间的选择还取决于客户端或服务器端脚本的需要、所需的文件格式等。Pig 支持 Avro 文件格式,而 Hive 则不支持。“过程数据流语言”与“声明性数据流语言”的选择也是猪和蜂巢之间选择的有力论据。
在 Cloudera 在 CDP 中摆脱它之后,Pig 基本上已经死了。Apache 上的最后一个版本也是 2017 年 6 月 19 日:发布 0.17.0,所以基本上没有提交者在积极工作了。使用比 Pig 更强大的 Spark 或 Python 方式。