Hive部署

1. 最小化安装Hive

本次安装的版本是Hive的3.1.3版本

  1. 解压缩Hive压缩包

    shell 复制代码
    # 解压缩
    tar -zxvf apache-hive-3.1.3-bin.tar.gz、
    # 修改文件夹名称(看个人习惯,可以不执行)
    mv apache-hive-3.1.3-bin apache-hive-3.1.3
  2. 在conf目录下,新增hive-env.sh,添加如下配置

    shell 复制代码
    # 修改hive-env.sh
    vim hive-env.sh
    export HADOOP_HOME=/home/hadoop/hadoop-3.1.3
    export HIVE_CONF_DIR=/home/hadoop/apache-hive-3.1.3/conf
    export HIVE_AUX_JARS_PATH=/home/hadoop/apache-hive-3.1.3/lib
    # source一下
    source /home/hadoop/apache-hive-3.1.3/conf/hive-env.sh
  3. 初始化元数据库

    shell 复制代码
    bin/schematool -dbType derby -initSchema -verbose

    执行过程中报错,这是因为Hive和Hadoop的guava版本冲突导致的

解决方法:

shell 复制代码
# 进入Hive的lib目录
rm guava-19.0.jar
# 将Hadoop的share/hadoop/hdfs/lib目录下的guava拷贝到hive的lib目录下
cp guava-27.0-jre.jar /home/hadoop/apache-hive-3.1.3/lib/
# 拷贝完成后重新执行初始化元数据操作
bin/schematool -dbType derby -initSchema

如果看到下面的输出,表示初始化完成:

  1. 启动Hive

    shell 复制代码
    /bin/hive
  2. 使用Hive

    shell 复制代码
    hive> show databases;
    hive> show tables;
    hive> create table stu(id int, name string);
    hive> insert into stu values(1,"ss");
    hive> select * from stu;


  3. 观察HDFS的路径/user/hive/warehouse/stu

​ 至此,完成了Hive的最小化安装

2. 配置Hive元数据存储到MySQL

MySQL需要提前安装,我这里使用的是之前云服务器上安装好的MySQL数据库

  1. 新建Hive元数据库

  2. 将MySQL的 JDBC 驱动拷贝到Hive的lib目录下

    shell 复制代码
    cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib
  3. 在Hive的conf目录下新建 hive-site.xml文件

    shell 复制代码
    # 新建hive-site.xml文件
    vim hive-site.xml
    # 添加如下内容
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
        <!-- jdbc连接的URL -->
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
        </property>
        
        <!-- jdbc连接的Driver-->
        <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.jdbc.Driver</value>
        </property>
        
    	<!-- jdbc连接的username-->
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>root</value>
        </property>
    
        <!-- jdbc连接的password -->
        <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>123456</value>
        </property>
    
        <!-- Hive默认在HDFS的工作目录 -->
        <property>
            <name>hive.metastore.warehouse.dir</name>
            <value>/user/hive/warehouse</value>
        </property>
    </configuration>

  1. 初始化Hive元数据库

    shell 复制代码
    bin/schematool -dbType mysql -initSchema -verbose

    观察到如下输出,表示初始化完成:


  2. 启动Hive

    shell 复制代码
    bin/hive
  3. 使用Hive

    shell 复制代码
    hive> show databases;
    hive> show tables;
    hive> create table stu(id int, name string);
    hive> insert into stu values(1,"ss");
    hive> select * from stu;

3. 部署HiveServer2

Hive的hiveserver2服务的作用是提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2。

3.1 配置模拟用户功能

hivesever2的模拟用户功能,依赖于Hadoop提供的proxy user(代理用户功能),只有Hadoop中的代理用户才能模拟其他用户的身份访问Hadoop集群。因此,需要将hiveserver2的启动用户设置为Hadoop的代理用户,配置方式如下:

修改Hadoop的core-site.xml文件,然后将文件分到其他机器

shell 复制代码
# 修改core-site.xml
vim core-site.xml
# 增加如下配置
<!--配置所有节点的hadoop用户都可作为代理用户-->
<property>
    <name>hadoop.proxyuser.hadoop.hosts</name>
    <value>*</value>
</property>

<!--配置hadoop用户能够代理的用户组为任意组-->
<property>
    <name>hadoop.proxyuser.hadoop.groups</name>
    <value>*</value>
</property>

<!--配置hadoop用户能够代理的用户为任意用户-->
<property>
    <name>hadoop.proxyuser.hadoop.users</name>
    <value>*</value>
</property>

修改Hive配置,在hive-site.xml文件中添加如下配置信息

shell 复制代码
<!-- 指定hiveserver2连接的host -->
<property>
	<name>hive.server2.thrift.bind.host</name>
	<value>hadoop1</value>
</property>

<!-- 指定hiveserver2连接的端口号 -->
<property>
	<name>hive.server2.thrift.port</name>
	<value>10000</value>
</property>

3.2 启动HiveServer2

  1. 启动

    shell 复制代码
    bin/hive --service hiveserver2
  2. 使用图形化客户端访问hive

  3. 测试Hive是否可以正常执行

    ​ 至此,就完成了Hive的安装部署

相关推荐
计艺回忆路12 分钟前
Hive自定义函数(UDF)开发和应用流程
hive·自定义函数·udf
万能小锦鲤14 小时前
《大数据技术原理与应用》实验报告三 熟悉HBase常用操作
java·hadoop·eclipse·hbase·shell·vmware·实验报告
天翼云开发者社区20 小时前
数据治理的长效机制
大数据·数据仓库
王小王-1231 天前
基于Hadoop与LightFM的美妆推荐系统设计与实现
大数据·hive·hadoop·大数据美妆推荐系统·美妆商品用户行为·美妆电商
一切顺势而行1 天前
hadoop 集群问题处理
大数据·hadoop·分布式
万能小锦鲤2 天前
《大数据技术原理与应用》实验报告七 熟悉 Spark 初级编程实践
hive·hadoop·ubuntu·flink·spark·vmware·实验报告
项目題供诗2 天前
Hadoop(二)
大数据·hadoop·分布式
Leo.yuan2 天前
ETL还是ELT,大数据处理怎么选更靠谱?
大数据·数据库·数据仓库·信息可视化·etl
万能小锦鲤2 天前
《大数据技术原理与应用》实验报告五 熟悉 Hive 的基本操作
hive·hadoop·ubuntu·eclipse·vmware·实验报告·hiveql
張萠飛2 天前
flink sql如何对hive string类型的时间戳进行排序
hive·sql·flink