随着技术的快速变化,越来越多的数据一直在生成。
据最新的全球数据领域估计,到2025年,全世界产生的数据量将增长到175 ZB。
公司现在需要改进的软件来管理这些海量数据。 他们一直在寻找处理和存储数据并将其分布在不同服务器上的方法,以便他们可以利用它们。
在本文中,我们将讨论特定的数据管理工具系列,这些工具在讨论时经常会引起混淆和互换使用。 今天,我们将讨论Hadoop,HDFS,Hbase和Hive,以及它们如何帮助我们处理和存储大量数据。
HadoopHadoop是指几种不同技术的统称。 但是,Hadoop还是特定的软件框架。 它使用户能够轻松管理分布式计算和存储。 它通过将文档划分到多个存储区和跨机器集群的块中来实现。
为了实现容错,Hadoop将这些存储复制到集群上。 然后,它通过将作业划分为几个较小的独立任务来执行分布式处理。 然后,此任务在计算机群集上并行运行。
Hadoop通过集群服务对大型数据集进行分布式处理,以同时在多台计算机上工作。 为了在Hadoop上处理任何数据,我们使用了几种服务,我们将讨论:
· HDFS:HDFS或Hadoop分布式文件系统是一种主要-次要拓扑,具有两个运行的守护程序:DataNode和NameNode。 稍后再详细介绍。
· MapReduce:这是一种在分布式集群上并行处理大数据的算法。 然后,MapReduce可以将此数据合并为结果。
· YARN:YARN的功能是将源管理,作业监视和计划任务划分为单独的守护程序。 它可以超越数千个节点。 这是因为YARN联合允许用户将多个群集通过到一个大群集中。 我们可以在一个较大的工作中同时使用许多独立的集群,这是通过较大规模的系统实现的。
HDFS如前所述,HDFS是在两个守护程序(DataNode和NameNode)上运行的主次拓扑。
名称节点存储元数据,其中所有数据都存储在DataNodes中。 另外,如果您的NameNode发生故障并且没有任何备份,则整个Hadoop实例将无法访问。 就像在迭代链表时丢失指针一样。 如果您不知道接下来数据的存储位置,则无法访问。
另一方面,DataNode是实际存储数据的位置。 如果任何特定的DataNode关闭,这应该没问题,因为NameNode经常会跨数据节点管理同一数据块的多个实例(这在某种程度上取决于配置)。
借助Hadoop分布式文件系统,您可以在服务器上一次写入数据,然后多次读取。 HDFS是立即处理大量数据的理想选择。
原因是HDFS与硬件群集商品上的NameNode和DataNode一起使用。 实际上,这是Hadoop流行的主要原因之一。
您可以在廉价的硬件上运行HDFS并轻松地横向扩展(这意味着购买更多的机器来处理数据),这一事实使它成为非常受欢迎的选择。 以前,大多数公司都依靠垂直扩展(购买通常很昂贵但可以单独处理更多数据的服务器)。 这是昂贵的并且具有更多的计算限制。
HDFS和Hadoop与MapReduce等其他基础层组件相结合,使各种规模和能力的企业都可以扩展其数据处理,而无需购买昂贵的设备。
HbaseHDFS和Hadoop有点相同,我们可以互换使用术语来理解开发人员。
但是,Hbase是非常不同的。
Hbase是建立在Hadoop文件系统之上的开源,面向列的数据库。 在某种程度上,这是人们更熟悉的层,从某种意义上说,它与典型的数据库更加相似。
它是水平可扩展的。 Hbase的数据模型类似于Google大表设计的数据模型。 它不仅提供了对大量非结构化数据的快速随机访问,而且还利用了HDFS提供的相同的容错能力。
Hbase是Hadoop生态系统的一部分,该生态系统实时提供对Hadoop文件系统中数据的读写访问。 由于相同的原因,许多大公司都将Hbase用于其日常功能。 例如,Pinterest可与38个Hbase群集一起工作,每秒执行约500万次操作!
更重要的是,Hbase提供了对一百万条记录中的单个行的较低延迟访问。 为了正常工作,Hbase在内部使用哈希表,然后提供对索引的HDFS文件的随机访问。
Hive尽管Hadoop具有非常好的可扩展性和可靠性,并且非常适合提取数据,但是它的学习曲线过于陡峭,无法使其具有成本效益和时间效益。 另一个很好的替代方法是在MapReduce之上的Apache Hive。
Hive是一种数据仓库软件,允许用户快速轻松地编写类似SQL的查询以从Hadoop提取数据。
这个开源框架的主要目的是处理和存储大量数据。 对于Hadoop,您可以使用MapReduce Java API实施SQL查询。 对于Apache Hive,您可以轻松绕过Java,而仅使用类似SQL的查询访问数据。
Apache Hive的工作很简单。 它将用HiveQL编写的输入程序转换为一个或多个Java MapReduce和Spark作业。
然后,它将数据组织到HDFS表中,并在群集上运行作业以产生结果。 Hive是一种将结构应用于大量非结构化数据,然后对它们执行基于SQL的查询的简单方法。 由于它使用的接口熟悉JDBC(Java数据库连接),因此可以轻松地与传统数据中心技术集成。
Hive的一些最重要的组件是:
· metaStore:这是存储Hive表的架构。 Hive metastore主要用于保存有关仓库中分区和表的所有信息。 默认情况下,它运行与Hive服务相同的过程。
· SerDe:SerDe或序列化器/反序列化器是一项功能,向配置单元提供有关如何处理记录的指令
这些事情不尽相同-但它们可以协同工作我们已经讨论了Hadoop,Hive,Hbase和HDFS。 所有这些开源工具和软件都旨在帮助处理和存储大数据并从中获得有用的见解。
即使它们扮演的角色截然不同,它们也经常互换使用。
总而言之,Hadoop用作文件存储框架,该框架又将HDFS用作主要-次要拓扑,以将文件存储在Hadoop环境中。
然后,Hbase位于HDFS之上,是基于列的分布式数据库系统,类似于Google的Big Table,它对于随机访问Hadoop文件非常有用。 另一方面,Hive提供了一个基于Hadoop的类似SQL的接口,以绕过JAVA编码。