大数据之Hive<一>

本文详细介绍了Hive的基本概念、优缺点、架构原理以及与数据库的比较。Hive是由Facebook开源,作为基于Hadoop的数据仓库工具,提供类SQL查询功能,适合大数据分析。文章还涵盖了Hive的安装环境准备,包括安装部署步骤和数据导入案例。

 Hive基本概念

1.1 什么是Hive

Hive:由Facebook开源用于解决海量结构化日志的数据统计。

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。

本质是:将HQL转化成MapReduce程序

1Hive处理的数据存储在HDFS

2Hive分析数据底层的实现是MapReduce

3)执行程序运行在Yarn

1.2 Hive的优缺点

1.2.1 优点

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

2)避免了去写MapReduce,减少开发人员的学习成本。

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

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

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

1.2.2 缺点

1HiveHQL表达能力有限

1)迭代式算法无法表达

2)数据挖掘方面不擅长

2Hive的效率比较低

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

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

1.3 Hive架构原理


大数据之Hive一 - morexyoung - morexyoung的博客
 

如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。

1)用户接口:Client

CLIhive shell)、JDBC/ODBC(java访问hive)WEBUI(浏览器访问hive

2)元数据:Metastore

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;

默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore

3Hadoop

使用HDFS进行存储,使用MapReduce进行计算。

4)驱动器:Driver

1)解析器(SQL Parser):将SQL字符串转换成抽象语法树

### 配置Hive组件以支持大数据处理 在大数据环境中配置Hive组件,需要对Hive的配置文件进行修改,并确保Hive与Hadoop等其他组件协同工作。以下是配置Hive的关键步骤和参数说明。 #### 1. 修改Hive配置文件 进入Hive的配置目录,通常位于`$HIVE_HOME/conf`或`$HIVE_HOME/etc/hive/conf`,找到`hive-site.xml`文件并进行修改。以下是些关键配置项: - **本地临时目录设置**: ```xml <property> <name>hive.exec.local.scratchdir</name> <value>/data/hive/iotmp</value> <description>Local scratch space for Hive jobs</description> </property> ``` 此配置项定义了Hive作业运行时的本地临时目录[^2]。 - **查询日志存储路径**: ```xml <property> <name>hive.querylog.location</name> <value>/data/hive/iotmp</value> <description>Location of Hive run time structured log file</description> </property> ``` 该路径用于存储Hive运行时生成的日志文件[^2]。 - **远程资源下载的临时目录**: ```xml <property> <name>hive.downloaded.resources.dir</name> <value>/data/hive/iotmp</value> <description>Temporary local directory for added resources in the remote file system.</description> </property> ``` 此配置项指定了从远程文件系统下载资源时使用的临时目录[^2]。 #### 2. 配置Hive与HDFS的集成 为了使Hive能够访问HDFS上的数据,需要确保Hive能够正确连接到HDFS集群。这通常通过Hadoop的`core-site.xml`文件实现。例如,在Hadoop的配置文件中添加如下内容: ```xml <property> <name>fs.default.name</name> <value>hdfs://spark1:9000</value> <description>The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation.</description> </property> ``` 此配置项定义了HDFS集群对外提供的目录地址[^1]。 #### 3. 配置Hive与Metastore的集成 Hive使用Metastore来存储元数据信息。可以通过以下配置项指定Metastore的数据库连接信息: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive_user</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive_password</value> <description>Password to use against metastore database</description> </property> ``` 这些配置项指定了Metastore使用的数据库类型、连接地址、用户名和密码[^2]。 #### 4. 启动Hive服务 完成上述配置后,启动Hive服务并验证其是否正常工作。可以使用以下命令启动Hive CLI或Beeline客户端: ```bash # 启动Hive CLI(较旧版本) hive # 启动Beeline客户端(推荐) beeline -u jdbc:hive2://localhost:10000 ``` #### 5. 测试Hive功能 创建个简单的表并插入数据,验证Hive是否能够正常工作: ```sql CREATE TABLE test_table (id INT, name STRING); INSERT INTO test_table VALUES (1, 'test'); SELECT * FROM test_table; ``` 如果切正常,应该能够看到插入的数据。 ### 注意事项 - 确保Hadoop集群已正常运行,并且Hive能够访问HDFS。 - 如果使用外部Metastore,请确保数据库服务已启动,并且Hive有权限访问数据库。 - 配置完成后,建议重启所有相关服务以使更改生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值