hive cli 启动缓慢问题

本文分析了hive-0.13.1启动缓慢的原因,主要时间消耗在hadoop jar上传jar包到hdfs、初始化HiveMetaStore创建默认数据库等以及加载.hiverc文件。还给出了解决方案,如注释不必要的创建代码,设置mysql服务自动启动等。

hive-0.13.1启动缓慢的原因

发现时间主要消耗在下面3个地方:

1. hadoopjar的时候要把相关的jar包上传到hdfs中(这里大概消耗5s,hive0.11一样,这个地方不太好优化)

2. 在每次hive cli启动的时候,初始化HiveMetaStore时,在init时,会调用下面3个方法,创建default db,role ,admin。

具体代码:

synchronized(HMSHandler.class) {

  createDefaultDB();

  createDefaultRoles();

  addAdminUsers();

}synchronized(HMSHandler.class) {

  createDefaultDB();

  createDefaultRoles();

  addAdminUsers();

}

生成环境这些都是有的,不需要每次都创建,这里可以直接注释掉.

3. 还有5s是在加载.hiverc的文件时造成的。

在做Create function的analyze时,会通过FunctionSemanticAnalyzer类的addEntities方法操作元数据。在hive0.11中是没有这个方法的。

 

关于这个方法,看说明是和function的权限有关系的,我们目前不需要。

Add writeentities to the semantic analyzer to restrict function creation to priviligedusers.

 

在测试环境直接注释掉没有发现什么影响。

具体实现放在后面分析。

 

解决方案:

14/09/0116:06:12 INFO Configuration.deprecation: mapred.reduce.tasks is deprecated.Instead, use mapreduce.job.reduces

14/09/0116:06:12 INFO Configuration.deprecation: mapred.min.split.size is deprecated.Instead, use mapreduce.input.fileinputformat.split.minsize

14/09/0116:06:12 INFO Configuration.deprecation:mapred.reduce.tasks.speculative.execution is deprecated. Instead, usemapreduce.reduce.speculative

14/09/0116:06:12 INFO Configuration.deprecation: mapred.min.split.size.per.node isdeprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.node

14/09/0116:06:12 INFO Configuration.deprecation: mapred.input.dir.recursive isdeprecated. Instead, use mapreduce.input.fileinputformat.input.dir.recursive

14/09/0116:06:12 INFO Configuration.deprecation: mapred.min.split.size.per.rack isdeprecated. Instead, use mapreduce.input.fileinputformat.split.minsize.per.rack

14/09/0116:06:12 INFO Configuration.deprecation: mapred.max.split.size is deprecated.Instead, use mapreduce.input.fileinputformat.split.maxsize

14/09/0116:06:12 INFO Configuration.deprecation:mapred.committer.job.setup.cleanup.needed is deprecated. Instead, usemapreduce.job.committer.setup.cleanup.needed

 

Logginginitialized using configuration infile:/usr/local/hive-0.13.0/conf/hive-log4j.properties

hive>

上面的一些启动信息就是:

Mysql的初始化信息,

需要设置mysql服务自动启动

<think>好的,用户的问题是关于在CentOS系统上进入HiveCLI命令行的操作步骤。我需要先回忆一下Hive的安装和配置流程,然后结合提供的引用内容来整理正确的步骤。首先,根据引用[4],Hive依赖Hadoop,所以在进入HiveCLI之前必须确保Hadoop已经正确安装并启动。这可能包括检查Hadoop的服务状态,比如NameNode和DataNode是否运行正常。如果Hadoop没有启动Hive CLI可能无法正常工作。 接下来,引用[3]中提到在CentOS7下安装Hive3后,用户通过命令行执行hive命令进入交互界面。这里需要注意的是,不同版本的Hive可能有不同的启动方式,比如Hive1.x和Hive3.x的命令是否一致。根据示例中的代码,用户直接输入hive即可进入CLI,所以可能需要确认Hive的安装路径是否已经添加到环境变量中,否则可能需要使用完整路径来执行命令,例如/usr/local/hive/bin/hive。 另外,引用[1]指出在HiveCLI中执行命令更高效,因为不需要每次启动新的JVM实例。这也提醒用户应该直接在终端输入hive命令,而不是通过其他间接方式,比如hadoop dfs命令,这可能会影响性能。 还有需要注意的配置部分,引用[4]提到需要配置MySQL作为Hive的元数据存储。所以在进入Hive CLI之前,必须确保MySQL服务已经启动,并且Hive的配置文件(如hive-site.xml)正确设置了JDBC连接参数。如果元数据存储配置不正确,Hive CLI可能无法启动或者报错。 此外,引用[3]中的示例显示用户执行hive命令后成功进入了交互界面,并执行了showdatabases;命令。这说明安装和配置正确的情况下,直接输入hive命令是可行的。但如果在安装过程中遇到问题,比如环境变量未配置,可能需要使用绝对路径或者添加环境变量。 用户可能遇到的常见问题包括:Hadoop未启动Hive的环境变量未配置、MySQL服务未运行或配置错误。在回答中需要提及这些可能的故障点,并提供相应的解决建议,例如检查服务状态、验证配置文件等。 最后,生成相关问题时,需要考虑用户可能的后续需求,比如如何执行HiveQL语句、配置优化或日志查看等,这有助于用户进一步使用HiveCLI进行开发或管理。</think>### CentOS系统进入Hive CLI的操作步骤 #### 1. **前置条件** - **Hadoop集群已启动** Hive依赖Hadoop的HDFS和YARN服务,需确保以下服务正常运行(通过`jps`命令检查): ```bash # 示例输出应包含以下关键进程 $ jps 1234 NameNode 5678 DataNode 9012 ResourceManager ``` 若未启动,需执行`start-all.sh`或分步启动Hadoop服务[^4]。 - **Hive已正确安装** 确保Hive安装路径已添加到系统环境变量(如`/usr/local/hive/bin`),可通过`echo $PATH`验证。若未配置,需手动添加或使用绝对路径执行命令[^3][^4]。 --- #### 2. **进入Hive CLI的两种方式** - **直接启动交互式命令行** 在终端输入`hive`命令即可进入Hive CLI: ```bash $ hive hive> show databases; --测试命令 OK default test Time taken: 0.45 seconds ``` 若提示`hive: command not found`,需检查环境变量或使用绝对路径(如`/usr/local/hive/bin/hive`)[^3]。 - **执行Hive脚本文件** 通过`-f`参数指定SQL脚本文件: ```bash $ hive -f /path/to/script.hql ``` --- #### 3. **常见问题排查** - **MySQL元数据库未启动** Hive默认使用MySQL存储元数据,需确保MySQL服务已启动: ```bash $ systemctl status mysqld # 检查状态 $ systemctl start mysqld # 启动服务 ``` 若配置错误,需修改`hive-site.xml`中的JDBC连接参数[^4]。 - **日志级别调整** 若日志输出过多,可通过修改`conf/hive-log4j.properties`调整日志级别为`ERROR`[^3]。 --- #### 4. **操作示例** ```bash # 步骤1:启动Hadoop $ start-all.sh # 步骤2:进入Hive CLI $ hive hive> CREATE TABLE test (id INT); hive> INSERT INTO test VALUES (1); hive> SELECT * FROM test; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值