大数据相关概念了解

news2024/11/16 15:44:42

Hadoop生态及Hive、HBase、Impala、HDFS之间的关系

Hadoop生态(什么是 Hadoop)

Apache Hadoop软件库是一个框架,允许使用简单的编程模型在计算机集群之间对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。库本身不是依靠硬件来提供高可用性,而是旨在检测和处理应用程序层的故障,因此在计算机群集(每台计算机都可能容易出现故障)之上提供高可用性服务。

适用场景:离线数据开发与存储

Hadoop 中有3个核心组件:

分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上
分布式运算编程框架:MapReduce —— 实现在很多机器上分布式并行运算
分布式资源调度平台:YARN —— 帮用户调度大量的 MapReduce 程序,并合理分配运算资源

什么是 HDFS

HDFS的英文全称是Hadoop Distributed File System,即Hadoop分布式文件系统,它是Hadoop的核心子项目。HDFS被设计成适合运行在通用和廉价硬件上的分布式文件系统。HDFS是为了处理大型数据集而设计的,主要是为达到高的数据吞吐量而设计的,延迟时间通常是在分钟乃至小时级别。

HDFS,是 Hadoop Distributed File System 的简称,是 Hadoop 抽象文件系统的一种实现。Hadoop 抽象文件系统可以与本地系统、Amazon S3 等集成,甚至可以通过 Web 协议(webhsfs)来操作。

HDFS 的文件分布在集群机器上,同时提供副本进行容错及可靠性保证。

大数据文件:非常适合上 T 级别的大文件或者一堆大数据文件的存储,如果文件只有几个 G 甚至更小就不太适用。
文件分块存储:HDFS 会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多。
流式数据访问:一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。
廉价硬件:HDFS 可以应用在普通 PC 机上,这种机制能够让一些公司用几十台廉价的计算机就可以撑起一个大数据集群。
硬件故障:HDFS 认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。

适用场景:作为数据的底层存储,以高可用的方式存储大文件

MapReduce

MapReduce是Google公司的核心计算模型,它将运行于大规模集群上的复杂并行计算过程高度地抽象为两个函数:Map和Reduce。Hadoop是Doug Cutting受到Google发表的关于MapReduce的论文的启发而开发出来的。Hadoop中的MapReduce是一个使用简单的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并能可靠容错地并行处理TB级别的数据集。

适用场景:对响应时间要求低的大数据量计算

什么是 Hive

Hive 它依赖分布式文件系统 HDFS 存储数据,依赖分布式并行计算模型 MapReduce 处理数据。是一个构建于 Hadoop 顶层的数据仓库工具,支持大规模数据存储、分析,具有良好的可扩展性。

Hive 定义了简单的类似 SQL 的查询语言——HiveQL,用户可以通过编写的 HiveQL 语句运行 MapReduce 任务,可以很容易把原来构建在关系数据库上的数据仓库应用程序移植到 Hadoop 平台上。

Hive 在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高;另外一个导致 Hive 执行延迟高的因素是 MapReduce 框架,由于 MapReduce 本身具有较高的延迟。

Hive 是一个构建于 Hadoop 顶层的数据仓库工具,支持对接查询存储在HDFS、HBase中文件,具有良好的可扩展性。某种程度上可以看作是用户编程接口,本身不存储和处理数据。实际的数据保存在HDFS文件中,真正的计算和执行则由MapReduce完成(也可以通过 Apache Tez、Apache Spark执行查询)。Hive 定义了简单的类似 SQL 的查询语言——Hive SQL,用户通过编写的 Hive SQL 语句运行 MapReduce 任务,其许多语法兼容Oracle、DB2、MySQL、SQL Server等,所以用户在某些场景下用户可以快速将构建在关系数据库上的数据仓库应用程序移植到 Hadoop 平台上。

关于分区:Hive Select查询时,一般会扫描整个表内容。随着系统运行的时间越来越长,表的数据量越来越大,而hive查询做全表扫描,会消耗很多时间,降低效率。而有时候,我们需求的数据只需要扫描表中的一部分数据即可。这样,hive在建表时引入了分区(partition)概念。即在建表时,将整个表存储在不同的子目录中,每一个子目录对应一个分区。在查询时,我们就可以指定分区查询,避免了hive做全表扫描,从而提高查询效率。

原理:Hive是建立在Hadoop体系架构上的一层SQL抽象,使得数据相关人员使用他们最为熟悉的SQL语言就可以进行海量数据的处理、分析和统计工作,而不是必须掌握Java等编程语言和具备开发MapReduce程序的能力。Hive SQL实际上先被SQL解析器进行解析然后被Hive框架解析成一个MapReduce可执行计划,并按照该计划生成MapReduce任务后交给Hadoop集群处理的。

注意:Hive 并不是一个关系数据库。Hive 中没有定义专门的数据格式,需要由用户指定三个属性:列分隔符、行分隔符 、读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 ORCFile)。Hive 在查询数据的时候,由于没有索引,需要扫描整个表Hive SQL,因此延迟较高;另外一个导致 Hive 执行延迟高的因素是 MapReduce 框架,由于 MapReduce 本身具有较高的延迟,因此在利用 MapReduce 执行 Hive 查询时,也会有较高的延迟(相对的,数据库的执行延迟较低,当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive 的并行计算显然能体现出优势)。

适用场景:长时间的批处理查询分析

什么是 HBase

HBase 是 Hadoop Database 即Hadoop数据库,数据通常存储在 HDFS 上,HDFS 为 HBase 提供了高可靠性的底层存储支持。
它是一个适合于非结构化数据存储的数据库,基于列的而不是基于行的模式,同样利用 Hadoop MapReduce 来处理其中的海量数据。

HDFS 为 HBase 提供了高可靠性的底层存储支持
Hadoop MapReduce 为 HBase 提供了高性能的计算能力
Zookeeper 为 HBase 提供了稳定服务和 failover 机制
Pig 和 Hive 为 HBase 提供了高层语言支持,使得在 HBase 上进行数据统计处理变的非常简单

使用场景对比:
对于经常需要修改原有的数据的场景,使用 Hbase 进行存储
对于需要经常进行全表扫描、进行大批量的查询的场景,选择 HDFS

HBase是一个开源的、分布式的、持久的、强一致性的数据存储系统(NoSQL数据库),可以在HDFS或Alluxio(VDFS)之上运行,具有近似最优的写性能和出色的读性能,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等,此开源项目的目标是在商品硬件集群上托管非常大的表——数十亿行X数百万列。

HBase不是关系型数据库,而是一个在HDFS上开发的面向列的分布式数据库,不支持SQL。

HBase为查询而生的,它通过组织起节点内所有机器的内存,提供一個超大的内存Hash表 。

HBase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。

HBase是列存储。

对于那些有低延时要求的应用程序,HBase是一个好的选择,尤其适用于对海量数据集进行访问并要求毫秒级响应时间的情况,但HBase的设计是对单行或者少量数据集的访问,对HBase的访问必须提供主键或者主键范围。访问接口:Hive、Pig、REST Gateway、HBase Shell、Native Java API、Thrift Gateway

适用场景:对具有高吞吐量和低输入/输出延迟的大型数据集进行快速读写操作

什么是 Impala

Impala 是一个运行在 Hadoop 之上的大规模并行处理(MPP)查询引擎,提供对 Hadoop 集群数据的高性能、低延迟的 SQL 查询,使用 HDFS 作为底层存储。

Impala可以直接对接存储在HDFS、HBase 或亚马逊S3中的Hadoop数据,提供快速、交互式的 SQL 查询,提高 APACHE Hadoop 上的SQL查询性能。Impala 使用与 Hive 相同的元数据、SQL 语法(Hive SQL)、ODBC 驱动程序和用户界面(Hue Beeswax),因此,Hive用户只需很少的设置成本,即可使用Impala。

原理:为了避免延迟,Impala绕过MapReduce,通过一个专门的分布式查询引擎直接访问数据,该引擎与商业并行RDBMS中的查询引擎非常相似。结果是性能比 Hive 快几个数量级,具体取决于查询类型和配置。

Impala 是对大数据查询工具的补充。Impala不会取代在MapReduce上构建的批处理框架(例如Hive)。Impala 可以读取和写入 Hive 表,从而使用 Impala 实现简单的数据交换,从而对 Hive 生成的数据进行分析。

注:安装impala的话,必须先安装hive,保证hive安装成功,并且还需要启动hive的metastore服务。

适用场景:大数据实时交互式 SQL 查询

为什么用 Impala

Impala 可以使用 SQL 访问存储在 Hadoop 上的数据,而传统的 MapReduce 则需要掌握 Java 技术
Impala 提供 SQL 直接访问 HDFS 文件系统、HBase 数据库系统或 Amazon S3 的数据
Impala 大都能在几秒或几分钟内返回查询结果,而相同的 Hive 查询通常需要几十分钟甚至几小时完成
Impala 的实时查询引擎非常适合对 Hadoop 文件系统上的数据进行分析式查询

Impala适用场景

a.需要低延迟得到查询结果
b.快速分析型查询
c.实时查询
d.需要多次处理相同类型的查询

HDFS与Hive、HBase三者之间的关系:

  1. HDFS是Hadoop的一个模块,主要负责数据存储,而Hadoop另一个模式是MapReduce,用于离线数据计算。
  2. Hive依赖于Hadoop,实际存储是依赖于Hadoop的HDFS模块,计算依赖于Hadoop的Mapreduce模块。
  3. Hive的数据源既可以来自HDFS,也可以来自于HBase。
  4. HBase则只是依赖于Hadoop的HDFS模块, 优势在于实时计算,通过API直接访问HBase,实现实时计算,由于使用的是nosql模式(列式结构),从而提高了查找性能,使其能运用于大数据场景,这是它跟MapReduce的区别。

基于以上的研究,对Hive、HBase、Impala、HDFS之间的关系做一个简单的分析总结:

1、Hive的使用虽然和关系型数据库类似,但是其本质上是建立在Hadoop体系架构上的一层SQL抽象,自身不存储和处理数据,实际数据保存在HDFS文件中,真正的计算和执行则由MapReduce完成;

2、Impala是Hive的补充,可以读取和写入 Hive 表,依赖Hive的元数据,自身不存储数据。Impala提供的有一个分布式查询引擎;

3、HBase是列存储的NoSQL数据库,主要提供接口的形式与外界交互,数据保存在HDFS上,也支持使用Hive直接访问HBase;

4、HDFS是Hadoop生态最底层的存储,Hive、Impala、HBase都建立在HDFS之上。

最后-应用场景

在大数据架构中,Hive和HBase是协作关系,数据流一般如下:
通过ETL工具将数据源抽取到HDFS存储;通过Hive清洗、处理和计算原始数据;HIve清洗处理后的结果,如果是面向海量数据随机查询场景的可存入Hbase, 数据应用从HBase查询数据。

Hive与MySQL关系

Hive可以分析结构化数据,它提供了一种HiveSQL来帮助用户处理数据,HiveSQL会转化成MapReduce程序,因为MapReduce效率是基于磁盘的,所以效率会比较低。但是它在离线数据处理方面还是有优势的,可以处理数据量非常大的数据,所以数据仓库的离线部分还是会基于Hive做计算的。

Hive与MySQL关系:在配置Hive之后一般都会安装和配置MySQL,那它们到底什么关系呢?如果默认不配置mysql的话,hive的元数据是存储在微型数据库Derby中,真正的数据是存储在HDFS上。

先来说一下Derby,derby是使用Java语言编写的一个微型,常用于内嵌在Java中的数据库!derby同一个数据库的实例文件不支持多个客户端同时访问!也就是说在操作hive的时候只能通过一个客户端来操作hive,显然在真正的生产中是不合适的,所以我们会联想到其他数据库如mysql,因为mysql是多用户而且还是免费的,所以Hive的元数据存储到mysql比较适合。

MapReduce

Hive架构优点及使用场景

在大数据的发展当中,大数据技术生态的组件,也在不断地拓展开来,而其中的Hive组件,作为Hadoop的数据仓库工具,可以实现对Hadoop集群当中的大规模数据进行相应的数据处理。今天我们的大数据入门分享,就主要来讲讲,Hive应用场景。

关于Hive,首先需要明确的一点就是,Hive并非数据库,Hive所提供的数据存储、查询和分析功能,本质上来说,并非传统数据库所提供的存储、查询、分析功能。

e数据仓库工具将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。通过类SQL语句实现快速MapReduce统计,使MapReduce编程变得更加简单易行。

Hive应用场景

总的来说,Hive是十分适合数据仓库的统计分析和Windows注册表文件。

Hive在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS(Hive superimposes structure on data in HDFS),并允许使用类似于SQL语法进行数据查询。

Hive更适合于数据仓库的任务,主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使其成为Hadoop与其他BI工具结合的理想交集。

Hive使用

Hive在Hadoop之上,使用Hive的前提是先要安装Hadoop。

Hive要分析的数据存储在HDFS,Hive为数据创建的表结构(schema),存储在RDMS(relevant database manage system关系型数据库管理系统,比如mysql)。

Hive构建在基于静态批处理的Hadoop之上,Hadoop通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive在几百MB的数据集上执行查询一般有分钟级的时间延迟。

Hive查询操作过程严格遵守Hadoop MapReduce的作业执行模型,Hive将用户的HiveQL语句通过解释器转换为MapReduce作业提交到Hadoop集群上,Hadoop监控作业执行过程,然后返回作业执行结果给用户。Hive的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。

ive优缺点

优点:

操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。

Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。

Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

缺点:

1.Hive的HQL表达能力有限

(1)迭代式算法无法表达递归算法

(2)数据挖掘方面不擅长(数据挖掘和算法机器学习)

2.Hive的效率比较低

(1)Hive自动生成的MapReduce作业,通常情况下不够智能化

(2)Hive调优比较困难,粒度较粗(快)

关于大数据入门,Hive应用场景,以上就为大家做了大致的介绍了。在大数据应用场景下,Hive更多是作为Hadoop的一个数据仓库工具,并不直接存储数据,但是却不可或缺。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【雕爷学编程】Arduino动手做(112)---2.4G24L01无线模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

chatgpt赋能python:Python怎么调整黑色的SEO?

Python怎么调整黑色的SEO? 在当今互联网的大环境下,各种搜索引擎的存在具有巨大的价值,特别是Google,百度等常用搜索引擎的SEO排名对于企业、个人品牌的宣传有着极其重要的意义。但是,如果出现黑色SEO的情况&#xff…

Spark操作HBase的数据,实现列值的计算

本文将介绍如何使用Spark操作HBase的数据,实现列之间的计算,以特征值计算为例。特征值是指从原始数据中提取出来的具有代表性或判别性的数值,可以用于数据分析或机器学习等领域。本文将使用hbase-spark连接器,通过Spark RDD的方式…

深度解析:圣湘生物的数字化转型升级之路(附方案详情)

随着“互联网”医疗技术在医疗行业的应用不断深化,数字化正在加速推进IVD行业的创新。 当前,IVD企业应对机遇和挑战的核心是提升竞争力。 IVD企业基于企业资源,提升综合竞争力主要分【硬实力】和【软实力】。 一方面:需要企业不…

跟李沐学AI;Meta可能让其开源AI模型商业化,让开发者赚钱

🦉 AI新闻 🚀 Meta可能让其开源AI模型商业化,让开发者赚钱 摘要:Meta正考虑将其开源大语言模型(LLM)的下一个版本用于商业用途,这可以为聊天机器人等提供支持。此举可能会让更多开发者使用替代…

张量分解(Cp、Tuker、Block-Term)

张量 张量是向量或矩阵在维度空间上的高阶扩展。 一个 ( p , q ) (p,q) (p,q)型的张量 T T T被定义为一个多重线性映射。 T : V ∗ ⋯ V ∗ V ⋯ V ↦ R , T:V^* \times \dots \times V^* \times V \times \dots \times V \mapsto \R, T:V∗⋯V∗V⋯V↦R, 其中 V V V 是…

用GPT4写2023高考语文作文,新课标I卷,Ⅱ卷

文章目录 新课标Ⅰ卷新课标Ⅱ卷总结 每年的高考语文题目都会是热议的话题,今年同样也不例外。但是今年讨论的话题除了作文题目本身之外,对于chatgpt写出的作文会是什么样子的也​让广大网友同样期待 新课标Ⅰ卷 好的故事,可以帮我们更好地表达…

chatgpt赋能python:Python怎么让结果同行输出

Python怎么让结果同行输出 在Python编程中,我们经常需要打印出一系列的结果并在同一行输出。这对于输出更为整洁的结果和提高代码清晰度都是非常有帮助的。下面就让我们来介绍一些实现这一功能的方法。 方法一:使用 end 参数 在Python的 print() 函数…

机器视觉_HALCON_模板匹配_1.CreateScaledShapeModel

文章目录 一、前言二、create_scaled_shape_model 算子2.1 名称2.2 算子签名2.3 描述2.3.1 输入参数详述2.3.2 完整的预生成模型 2.4 执行信息2.5 参数2.6 执行结果2.7 可能的前驱算子2.8 可能的后继算子2.9 替代选择 一、前言 在HALCON算子手册中,对算子的介绍通常…

chatgpt赋能python:Python访问数据库

Python访问数据库 Python是一种高级编程语言,在数据分析、科学计算和Web开发等领域都有广泛的应用。Python还有一个很强的优势就是它能够方便地访问数据库。在本文中,我们将介绍Python如何与数据库交互以及Python数据库API的使用。 Python的数据库API …

chatgpt赋能python:Python如何访问数组中的元素

Python如何访问数组中的元素 Python是一种高级编程语言,访问数组中的元素也非常简单。 它提供了一种简单而灵活的方式访问数组中的元素,这使得在Python中使用数组变得非常容易。在本文中,我们将介绍如何在Python中访问数组中的元素以及如何使…

DecimalFormat基本用法

1.保留两位小数(截断) 下面展示一些 内联代码片。 double num 11.256;DecimalFormat df new DecimalFormat("#.##");//指定RoundingModedf.setRoundingMode(RoundingMode.DOWN);String str df.format(num);double formatNum Double.parseDouble(str)…

2023年05月份青少年软件编程Scratch试卷三级真题

2023-05 Scratch三级真题 分数:100 题数:38 测试时长:60min 一、单选题(共25题,共50分) 1. 关于变量,下列描述错误的是?(A)(2分) (变量那一栏…

对于ChatGPT,马化腾、马斯克等科技大佬竟然这么说!

ChatGPT一夜爆火之后,国内几乎是各大互联网公司都在摩拳擦掌,跃跃欲试,从百度的文心一言,到阿里的通义千问,还有360的智脑,讯飞的星火,语言大模型如雨后春笋一般涌出,犹如2014年新能…

代码审计——未授权访问详解

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 未授权访问漏洞,是在攻击者没有获取到登录权限或未授权的情况下,或者不需要输入密码,即可通…

express 基础知识实战

1 Express框架介绍与安装 1.1 Express 安装 生成配置文件package.json npm init --yes安装 Express 框架,就是使用 npm 的命令。 npm install express --save yarn add express --save初次使用 const express require(express) //实例化express const app ex…

全志V3S嵌入式驱动开发(u盘写读)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于现在的soc来说,基本上usb是标配的。它一般需要支持usb host、device和otg三种模式。简单解释下,host模式,就…

数据库原理与应用第2章作业

数据库原理与应用第2章作业 一.单选题(共15题,45分)二.填空题(共5题,25分)三.简答题(共1题,10分)四.计算题(共1题,20分) 一.单选题(共15题,45分) 1.(单选题,3分)关系数据库管理系统应能实现的专门关系运算…

chatgpt赋能python:Python怎么让输出换行?

Python怎么让输出换行? 对于有10年python编程经验的工程师,输出换行是一项基本的操作。在本篇文章中,我们将讨论Python中的换行方法,以便您可以更好地控制输出。 什么是Python的换行符? 在Python中,换行…

SPI总线

目录 声明 1、 SPI简介 2、 SPI特点 2.1采用主-从模式(Master-Slave) 的控制方式 2.2采用同步方式(Synchronous)传输数据 2.3数据交换(Data Exchanges) 2.4 SPI有四种传输模式 2.5 SPI只有主模式和从模式之分。 3、 工作机制 3.1概述 3.2 Timing 声明 转自&#xf…