hive安装

Hive安装

hive的安装有三种模式:

  1. 直接使用内置的内存数据库Derby来安装
  2. 使用关系型数据库(mysql)作为元数据存储来安装
  3. 使用mateServer+mysql来安装

远程关系型数据库安装

部署结构图

在这里插入图片描述

安装步骤

hadoop相关环境需要先安装

  1. 安装mysql

    • 使用yum安装mysql服务

      yum install mysql-server -y
      

      如果出现没有可用软件包 mysql-server错误的时候,则需要添加mysql社区的yum源

      wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 
      rpm -ivh mysql-community-release-el7-5.noarch.rpm
      
    • 启动mysql服务

      service mysqld start
      
    • mysql设置成开机启动

      chkconfig mysqld on
      
    • 修改root密码

      ```
      --切换数据库
         use mysql
      --查看表
         show tables
      --查看表的数据
         select host,user,authentication_string from user; 
      --插入权限数据
         grant all privileges on *.* to 'root'@'%' identified by '123' with grant option
      --删除本机的用户访问权限(可以执行也可以不执行)  
         delete from user where host!='%'
      --刷新权限或者重启mysqld的服务
         service mysqld restart;--(重启mysql服务)
         flush privileges;--(刷新权限)  
      ```
      
  2. 安装Hive

    • 上传解压

      tar -Zxvf apache-hive-2.3.9-bin.tar.gz
      mv apache-hive-2.3.9-bin hive-2.3.9
      
    • 配置环境变量

      vi /etc/profile
      #配置HIVE_HOME
      #同时将bin目录添加到path
      export HIVE_HOME=/usr/local/hive-2.3.9
      $HIVE_HOME/bin
      
    • 修改配置文件

      cd hive-2.3.9/conf
      mv hive-default.xml.template hive-site.xml
      vi hive-site.xml
      #修改内容如下
      #光标到<configuration>这一行然后输入:.,$-1d
      #以上命令表示从当前行删除到倒数第二行
      

      添加一下配置(根据自己服务器情况调整配置路径以及密码),保存

      <property>
          <name>hive.metastore.warehouse.dir</name>
          <value>/user/hive/warehouse</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://hadoop-node04:3306/hive?createDatabaseIfNotExist=true</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>root</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>123456</value>
      </property>
      
    • 初始化数据库

      #初始化之前一定要将mysql的连接驱动jar包放到hive的lib目录下
      schematool -dbType mysql -initSchema
      

      初始化完之后,我们可以看到mysql中新增了对应的数据库

    在这里插入图片描述

  3. 验证测试

    • 进入命令行hive

在这里插入图片描述

  • 创建表

    create table psn(id int,name string);
    

在这里插入图片描述

  • 插入数据

    insert into psn(id,name) values(1,"张三");
    

在这里插入图片描述
从上图我们可以看出实际上数据的插入就是一次MR操作

  • 查询表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oflRlay8-1653297658296)(F:\study\bigdata\hive\hive安装\images\image-20210726143637078.png)]

    从上图我们可以看出整个的操作跟操作普通是sql是一模一样的

  • 删除表

![在这里插入图片描述](https://img-blog.csdnimg.cn/4ffd487357bd45cfb97272bf3d0e7d84.png#pic_center)

元数据服务+关系型数据库模式

部署结构图

在这里插入图片描述

安装步骤

  1. 规划机器

    ip用途
    192.168.56.154数据库
    192.168.56.152启动MetaStoreServer
    192.168.56.151MetaStroreClient
  2. 安装mysql

    与上面相同

  3. 安装Hive

    • 192.168.56.152上安装HIVE,方法与上面相同,只需将hive-site.xml配置文件修改成:

      <configuration>
      
      <property>
          <name>hive.metastore.warehouse.dir</name>
          <value>/user/hive_romote/warehouse</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://hadoop-node04:3306/hive_remote?createDatabaseIfNotExist=true</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>root</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>123456</value>
      </property>
      
      </configuration>
      
    • 192.168.56.151上安装HIVE,方法与上面相同,只需将hive-site.xml配置文件修改成:

      <configuration>
          <property>
              <name>hive.metastore.warehouse.dir</name>
              <value>/user/hive_remote/warehouse</value>
          </property>
          <property>
              <name>hive.metastore.uris</name>
              <value>thrift://hadoop-node02:9083</value>
          </property>
      </configuration>
      
  4. 启动MetaServer

    hive --service metastore
    
  5. 验证

    在192.168.56.151上执行hive命令,我们可以看到也可以正常连接,同时也可以完成我们以上的所有建表、查询、删除等操作

    Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.c从这句描述我们可以看到,hive2.x之后就不建议使用MR作为执行引擎,而是建议采用sprak这样的执行引擎。

高可用

现在不管什么服务都追求高可用,同理hive也是不例外,也需要保证高可用,而hive的高可用的思路:

  1. 引入hiveserver2来对MateServer进行一层封装,不让元数据服务和HDFS直接暴露给客户端
  2. 保证mateserver的高可用

高可用部署架构图

在这里插入图片描述

Hiveserver2简介

HiveServer2是一个服务接口,能够允许远程的客户端去执行SQL请求且得到检索结果。HiveServer2的实现,依托于Thrift RPC,是HiveServer的提高版本,它被设计用来提供更好的支持对于open API例如JDBC和ODBC。

高可用搭建

Hiveserver2高可用搭建

Hiveserver2的高可用需要依赖zookeeper,所以搭建之前先安装好zookeeper集群,不过能hive,zookeeper集群肯定已经搭建完了。_

  1. 修改hive-site.xml配置文件

    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive_romote/warehouse</value>
    </property>
    
    <!--该部分主要配置mateserver的高可用-->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop-node01:9083,thrift://hadoop-node02:9083</value>
     </property>
    <!--该部分主要配置mateserver数据存储方式-->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop-node04:3306/hive_remote?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
    <!--以下的配置是用于配置hiveserver2高可用的配置-->
    <property>
      <name>hive.server2.support.dynamic.service.discovery</name>
      <value>true</value>
    </property>
    <property>
      <name>hive.server2.zookeeper.namespace</name>
      <value>hiveserver2_zk</value>
    </property>
    <property>
      <name>hive.zookeeper.quorum</name>
      <value>hadoop-node04:2181,hadoop-node02:2181,hadoop-node03:2181</value>
    </property>
    <property>
      <name>hive.zookeeper.client.port</name>
      <value>2181</value>
    </property>
    <property>
      <name>hive.server2.thrift.bind.host</name>
      <value>hadoop-node01</value>
    </property>
    <property>
      <name>hive.server2.thrift.port</name>
      <value>10001</value> 
    </property>
    

    以上我是将元数据高可用和hiveserver2高可用的配置放在一起,实际环境也可以拆开,部署到不同的机器上。

  2. 在两台机器机器上分别启动mateserver和hiveserver2

    mkdir -p /data/logs/hive
    nohup hive --service metastore >> /data/logs/hive/metastore.log 2>&1 &
    nohup hive --service hiveserver2 >> /data/logs/hive/hiveserver.log 2>&1 &
    
  3. 使用beeline来测试链接

    beeline
    !connect jdbc:hive2://hadoop-node04,hadoop-node02,hadoop-node03/default;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk root 123
    
  4. 验证高可用

    通过netstat命令来查看对应的进程号,然后用kill -9 进程号的方式将服务杀死,然后观察客户端链接的变化;不过需要注意的是:通过beeline来练级如果客户端已经链接到具体的hiveserver2服务之后,你把对应hiveserver2杀掉,他是不会自动重新链接另外一台hiveserver2的,需要我们重新进入beeline重新链接一下。

  5. 验证高可用

    通过netstat命令来查看对应的进程号,然后用kill -9 进程号的方式将服务杀死,然后观察客户端链接的变化;不过需要注意的是:通过beeline来练级如果客户端已经链接到具体的hiveserver2服务之后,你把对应hiveserver2杀掉,他是不会自动重新链接另外一台hiveserver2的,需要我们重新进入beeline重新链接一下。
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值