HDFS、HBase、Pig、Hive 和 Azkaban 之间的关系?

Relationship between HDFS, HBase, Pig, Hive and Azkaban?

我对 Apache 比较陌生 Hadoop. I have seen this and this 有关 Hadoop、HBase、Pig、Hive 和 HDFS 的问题。他们都描述了上述技术之间的比较。

但是,我已经看到,通常 Hadoop 环境包含所有这些组件(HDFSHBase蜂巢阿兹卡班)。

有人能以架构工作流的方式解释一下 components/technologies 与他们在 Hadoop 环境中的职责之间的关系吗?最好有例子?

总览:

HDFS 是 Hadoop 的分布式文件系统。直观上,您可以将其视为跨越许多服务器的文件系统。

HBASE 是一个面向列的数据存储。它以 Google 的 Big Table 为蓝本,但如果您对此一无所知,则可以将其视为提供实时 read/write 数据访问的非关系数据库。它已集成到 Hadoop 中。

Pig 和 Hive 是 Hadoop 生态系统中查询数据的方式。主要区别在于 Hive 比 Pig 更像 SQL。 Pig 使用所谓的 Pig Latin。

Azkaban 是一座监狱,我的意思是批处理工作流作业调度程序。所以基本上它与 Oozie 相似,因为您可以将 运行 map/reduce、猪、蜂巢、bash 等作为一项工作。

在最高级别上,您可以将 HDFS 视为您的文件系统,将 HBASE 作为数据存储。 Pig 和 Hive 将是您从数据存储中查询的方式。那么 Azkaban 将是您安排工作的方式。

扩展示例:

如果您熟悉 Linux 用于文件系统的 ext3 或 ext4,MySQL/Postgresql/MariaDB/etc 用于数据库,SQL 用于访问数据,以及 cron 用于安排作业。 (您可以在 Windows 上将 NTFS 的 ext3/ext4 和 Task Scheduler 的 cron 交换)

HDFS 取代了 ext3 或 ext4(并且是分布式的),HBASE 扮演了数据库角色(并且是非关系型的!),Pig/Hive 是一种访问数据的方式,而 Azkaban 是一种安排作业的方式。

注意:这不是同类比较。它只是为了证明 Hadoop 组件是一种抽象,旨在为您提供您可能已经熟悉的工作流。

我强烈建议您进一步研究这些组件,因为您会从中获得很多乐趣。 Hadoop 有太多可互换的组件(Yarn、Kafka、Oozie、Ambari、ZooKeeper、Sqoop、Spark 等),您会经常问自己这个问题。

编辑:您发布的链接更详细地介绍了 HBase 和 Hive/Pig 所以我试图给出一个直观的图片来说明它们是如何组合在一起的。

Hadoop 环境包含所有这些组件(HDFS、HBase、Pig、Hive、Azkaban)。它们的简短描述可以是:-

HDFS -hadoop 框架中的存储。

HBase - 它是列式数据库。您以列的形式存储数据以便更快地访问。是的,它确实使用 hdfs 作为其存储。

Pig - 数据流语言,其社区提供了内置函数来加载和处理半结构化数据,如 json 和 xml 以及结构化数据.

Hive - 查询语言 运行 在 table 秒内查询,table 此处需要挂载才能使用 HDFS 数据。

Azkaban - 如果您有 hadoop 作业管道,您可以将它们安排到 运行 在特定时间和某些依赖项之前或之后。