前言

在上篇《Spark集群建立超详细教程》提到了Hive装置,那么今日就带领咱们进行Hive的装置,闲言少叙,撸起袖子加油干!

初始预备

还是需求预备3台虚拟机,并且还需求做如下预备作业:

  1. 需求装置好java 运行环境 JDK
  2. 需求建立装备好Hadoop集群并发动,假如有不熟悉Hadoop集群建立的朋友,能够参考我的另一篇文章《Hadoop集群建立装备教程》
  3. hadoop1这个虚拟机节点上装置MySQL服务,能够参考《Ubuntu18.04 MySQL5.7 装置过程详解》

装置Hive的具体过程

1、下载hive装置包

cd /opt/module
# 下载hive装置包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

2、解压

tar -zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin hive

3、增加Hive核心装备,挑选长途MySQL模式

cd /opt/module/hive/conf
vim hive-site.xml

增加如下内容:

<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop1:3306/hivedb?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;serverTimezone=GMT</value>
</property>
<property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- 修正为你自己的Mysql账号 -->
<property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
</property>
<!-- 修正为你自己的Mysql暗码 -->
<property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
</property>
<!-- 疏忽HIVE 元数据库版别的校验,假如非要校验就得进入MYSQL升级版别 -->
<property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
</property>
<property> 
     <name>hive.cli.print.current.db</name>
     <value>true</value>
</property>
<property> 
         <name>hive.cli.print.header</name>
         <value>true</value>
</property>
<!-- hiveserver2 -->
<property>
         <name>hive.server2.thrift.port</name>
         <value>10000</value>
</property>
<property>
	<name>hive.server2.thrift.bind.host</name>
	<value>hadoop1</value>
</property>

4、下载衔接MySQL的驱动包到hive的lib目录下

cd /opt/module
# 下载MySQL驱动包
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar

5、在MySQL上创建Hive的元数据存储

create database hivedb;

6、履行Hive的初始化作业

cd /opt/module/hive/bin
./schematool -initSchema -dbType mysql

7、验证初始化是否成功

初始化完成后,在MySQLhivedb数据库中检查是否初始化成功:

# 若展现多个数据表,即代表初始化成功
show tables;

8、运用hive

# 发动hive
cd /opt/module/hive/bin
./hive
# 发动后
# 建表
create table student(id int, name string);
# 刺进数据
insert into table student(1, 'abc');
# 刺进成功后,查询
select * from student;

9、运用beeline

首要发动hiveserver2服务:

nohup ./bin/hiveserver2>> hiveserver2.log 2>&1 &

hiveserver2服务发动后,运用beeline客户端访问hiveserver2服务:

cd /opt/module/hive
# 进入beeline客户端
bin/beeline
# 履行衔接hiveserver2操作
beeline> !connect jdbc:hive2://hadoop1:10000/default
# 或许
bin/beeline -u jdbc:hive2://hadoop1:10000/default -n root

注意:hive的默认引擎为MR!!!

至此,咱们就完成了Hive的装置。

装置过程中,咱们可能会遇到以下问题:

  • 问题 1com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;) 错误原因:体系找不到这个类所在的jar包或许jar包的版别不一样体系不知道运用哪个。hive发动报错的原因是后者。 解决办法: 1)com.google.common.base.Preconditions.checkArgument这个类所在的jar包为:guava.jar 2)hadoop-3.1.3(途径:hadoop/share/hadoop/common/lib)中该jar包为 guava-27.0-jre.jar;而hive-3.1.2(途径:hive/lib)中该jar包为guava-19.0.jar 3)将jar包变成一致的版别:删除hive中低版别jar包,将hadoop中高版别的复制到hivelib中。 再次发动问题得到解决!

  • 问题2: Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop1:10000/default: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous (state=08S01,code=0)

    解决办法: 1)修正hadoop 装备文件 /opt/module/hadoop/etc/hadoop/core-site.xml 增加如下内容:

    <property>
    	<name>hadoop.proxyuser.root.hosts</name>     
    	<value>*</value> </property> 
    <property>     
    	<name>hadoop.proxyuser.root.groups</name>     
    	<value>*</value> 
    </property>
    

    然后将core-site.xml 分发到集群的其他节点。

    2)重启hadoop集群

  • 问题3:用beeline操作hive时,怎么封闭打印的info日志信息? 解决办法: 1)在运用beeline时参加以下设置即可--hiveconf hive.server2.logging.operation.level=NONE

    2)在hive-site.xml中修正如下装备也能够禁用在beeline中显示额外信息

    <property>
        <name>hive.server2.logging.operation.level</name>
        <value>NONE</value>
        <description>
          Expects one of [none, execution, performance, verbose].
          HS2 operation logging mode available to clients to be set at session level.
          For this to work, hive.server2.logging.operation.enabled should be set to true.
            NONE: Ignore any logging
            EXECUTION: Log completion of tasks
            PERFORMANCE: Execution + Performance logs 
            VERBOSE: All logs
        </description>
    </property>
    

——————— end ————————

微信大众号:扫描下方二维码 或 搜索 笑看风云路 关注

Hive安装超详细教程