1、什么是hive?
Hive 是一个开源的数据仓库基础设施,用于查询和分析大规模数据集。它建立在 Hadoop 上,并提供了类似于传统数据库的查询和分析功能。 Hive 使用 HiveQL(类似于 SQL)作为查询语言,允许用户通过类 SQL 的语法编写查询语句,这些查询语句会被转换为 MapReduce 任务在 Hadoop 集群上执行。 Hive 的主要优势之一是它的可扩展性和容错性。它能够处理各种类型和格式的数据,并且能够在成百上千台机器上并行处理数据。此外,Hive 还提供了数据分区、分桶、索引等功能,以提高查询性能。 Hive 在大数据领域得到广泛应用,特别是在数据仓库、数据分析和业务智能方面。它可以帮助用户快速查询和分析大量的结构化和半结构化数据,从而提取有价值的信息和洞察力。
2、hive有什么优缺点?
优点:
- 易于使用:Hive 的查询语言 HiveQL 类似于传统的 SQL,使得用户能够使用熟悉的语法编写和执行查询语句,降低了学习成本。
- 可扩展性:Hive 能够处理大规模的数据集,并且可以在分布式环境下进行并行计算,从而实现水平扩展。
- 容错性:Hive 建立在 Hadoop 上,具备高可靠性和容错性,能够应对节点故障和数据丢失等问题。
- 多格式支持:Hive 能够处理各种类型和格式的数据,包括结构化数据和半结构化数据,以及不同的文件格式。
缺点:
- 延迟较高:由于 Hive 使用 MapReduce 进行计算,而 MapReduce 是批处理模型,所以对于实时需求和低延迟应用来说,Hive 的查询响应时间相对较长。
- 存储冗余:Hive 在执行查询时会生成中间结果,并将这些结果存储在磁盘上,这可能导致存储冗余和额外的 I/O 开销。
- 复杂的数据模型:Hive 采用类似于传统数据库的数据模型,但它并不是一个完整的数据库系统,因此对于复杂的数据模型和事务处理等场景可能无法满足需求。
- 不适合小规模数据:由于 Hive 的设计初衷是处理大规模数据集,所以在处理小规模数据时,Hive 的开销相对较高,不如传统数据库效率高。
3、hive的架构
- 用户接口(User Interface):Hive 提供了多种用户接口,包括命令行界面(CLI)、Web UI、ODBC/JDBC 接口等,使用户能够与 Hive 进行交互。
- 驱动器(Driver):驱动器负责解析和编译用户提交的 HiveQL 查询,并将其转换为适当的执行计划。驱动器还负责与底层执行引擎(如 MapReduce 或 Tez)进行交互,执行查询并返回结果。
- 元数据(Metadata):元数据存储了与 Hive 相关的结构信息,包括数据库、表、分区、列等定义。Hive 的元数据通常存储在关系型数据库中,比如 MySQL 或 Derby。
- 编译器(Compiler):编译器接收驱动器生成的执行计划,并将其转换为适当的 MapReduce 任务或 Tez DAG(有向无环图)。编译器还负责生成操作符树,以便在计划执行过程中进行优化。
- 执行引擎(Execution Engine):执行引擎负责实际执行编译后的任务或 DAG,并将结果返回给用户。Hive 可以使用多种底层执行引擎,最常用的是基于 Hadoop MapReduce 的执行引擎,也可以使用 Tez、Spark、Flink 等。
- 存储(Storage):Hive 支持多种数据存储格式,包括文本文件、序列文件、ORC(Optimized Row Columnar)文件和 Parquet 文件等。这些文件通常存储在分布式文件系统(如 HDFS)上。
- 扩展库(Extensions):Hive 提供了一些扩展库,使用户能够自定义和扩展 Hive 的功能,如添加自定义函数、自定义存储处理器等。
4、hive和mysql数据库的区别?
- 应用场景:Hive 适合于数据仓库和大规模数据处理领域,而 MySQL 更适合作为传统关系型数据库进行事务处理。
- 数据规模:Hive 处理大规模数据,可以处理 PB 级别的数据,而 MySQL 主要用于中小规模数据存储和处理。
- 查询语言:Hive 使用 HiveQL,类似 SQL,支持更多复杂的数据分析和处理操作,而 MySQL 使用原生 SQL,语法相对简单。
- 存储格式:Hive 支持多种数据存储格式,如文本文件、ORC 和 Parquet,而 MySQL 通常使用关系型数据库存储机制。
- 扩展性:Hive 支持水平扩展,可以通过添加节点来实现更高性能和更大存储容量,而 MySQL 更多是通过垂直扩展来提升性能
5、hive本地模式的安装嵌入式的模式(元数据在Derby数据库中,通常用于开发测试时使用)
1) 解压
tar -xf apache-hive-3.1.2-bin.tar.gz -C /opt
2) 改名字
mv /opt/apache-hive-3.1.2-bin /opt/hive
3)环境变量 /etc/profile
export HIVE_HOME=/opt/hive export PATH=$PATH:$HIVE_HOME/bin
- 刷新一下
source /etc/profile hive --version
5) 配置各种配置文件
hive-env.sh 系统是没有这个文件的, 使用hive-env.sh.template进行拷贝
cp hive-env.sh.template hive-env.sh chmod 777 hive-env.sh
修改这个文件内容:
export HIVE_CONF_DIR=/opt/hive/conf export JAVA_HOME=/opt/jdk export HADOOP_HOME=/opt/hadoop export HIVE_AUX_JARS_PATH=/opt/hive/lib
配置hive-site.xml
cp hive-default.xml.template hive-site.xml 1、从hive-default.xml.template 拷贝一份过来 删除3215行的特殊字符 
- 检查 hdfs以及yarn是否启动,如果没有启动,手动启一下。
7)修改dir
在这个文件hive-site.xml中替换两个重要的东西
把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替换成/opt/hive/iotmp
如果系统默认没有指定系统用户名,那么要把配置${system:user.name}替换成当前用户名root
创建这个配置文件中没有的路径,并且赋权限。
hdfs dfs -mkdir -p /user/hive/warehouse hdfs dfs -mkdir -p /tmp/hive hdfs dfs -chmod 777 /user/hive/warehouse hdfs dfs -chmod 777 /tmp/hive
8) 创建本地的临时目录 io.tmpdir
在hive 安装路径下 hive_home 下,创建文件夹 mkdir /opt/hive/iotmp chmod 777 iotmp
9)初始化hive
在hive 的家路径下,执行该命令
schematool -initSchema -dbType derby
10) 简单的操作
show databases; show talbes; create table stu(id int,name string); insert into stu values(1,"zhangsan"); select * from stu; 退出使用quit;
以上就是我们的Derby模式,Derby 作为一种轻量级的嵌入式数据库具有一些优点,但它也存在一些性能、扩展性、高可用性和生态系统支持方面的缺点.
版权归原作者 bigdata从入门到放弃 所有, 如有侵权,请联系我们删除。