Hive安装进阶(远程模式搭建&工具分享)

Hive没远程,等于hive没远程

一、材料

已经安装hive本地模式虚拟机

二、搭建准备

1.创建临时文件        在hive安装位置
cd /opt/installs/hive/    #hive安装地址

mkdir iotmp               #创建临时文件
chmod 777 iotmp

2.修改hive-site.xml

将下列配置添加到<configuration>之中,追加到其它配置的后边

<!--Hive工作的本地临时存储空间-->
<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/opt/installs/hive/iotmp/root</value>
</property>

<!--如果启用了日志功能,则存储操作日志的顶级目录-->
<property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/opt/installs/hive/iotmp/root/operation_logs</value>
</property>

<!--Hive运行时结构化日志文件的位置-->
<property>
    <name>hive.querylog.location</name>
    <value>/opt/installs/hive/iotmp/root</value>
</property>

<!--用于在远程文件系统中添加资源的临时本地目录-->
<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/opt/installs/hive/iotmp/${hive.session.id}_resources</value>
</property>
3.修改 Hadoop 的 core-site.xml,【Hadoop】

依旧添加到添加到<configuration>之中,追加到其它配置的后边

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

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

<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>

<!-- 不开启权限检查 -->
<property>
   <name>dfs.permissions.enabled</name>
   <value>false</value>
</property>
4.修改集群后的core-site.xml【Hadoop】,需要同步到集群的全部虚拟机
xsync.sh core-site.xml  #一个小脚本,可以把文件发送的集群的全部虚拟机相同位置
                        #没有可以使用 scp 命令,我别的文档有总结

stop-dfs.sh             #重启一下集群
start-dfs.sh

三、配置测试远程服务

1.修改hive-site.xml 【在hive文件夹下】

依旧添加到<configuration>之中,追加到其它配置的后边

<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>bigdata01</value>
  </property>
  <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
  </property>
2.测试**启动hiveserver2**

这里向讲解最基础的一种,有别的简便方法后边会替换

# 开启一个新的连接启动服务,服务启动窗口就不能使用了

hiveserver2        #启动命令
ctrl + c           #终止命令,窗口恢复

有 4 个Hive Session ID 就可以连接了,需要慢慢等待,新开一个窗口测试登录

3.新窗口 beeline 登录
beeline   #登录界面

!connect jdbc:hive2://mybd:10000        #mybd要替换你自己的数据库名

username:root        #用户名
password:            #不用输入直接回车

*****可能会出现的登录小问题*****

登录失败,我这个问题是我配置过了metastore,已经配置过的metastore,之后每次启动服务必须开启

开启一下metastore服务就能  解决  ,下面会教你怎么开,第一次一般不会出现这个问题

解决:


4.配置metastore 服务

这个不是必须,目的是为了解决内存问题,一般都会顺手配置,配了之后必须每次启动

第一步:修改hive-site.xml,追加配置


   注意:想要连接metastore服务的客户端必须配置如下属性和属性值
    <property>
        <name>hive.metastore.uris</name> 
        <value>thrift://mydb:9083</value>
    </property>

    解析:thrift是协议名称
         ip为metastore服务所在的主机ip地址
         9083是默认端口号

配好,保存退出

第二步:启动

方法1:
		hive --service metastore &
方法2:
    	nohup hive --service metastore 2>&1 >/dev/null &  #信息送入黑洞
         解析:2>&1 >/dev/null   意思就是把错误输出2重定向到标准输出1,也就是屏幕,标准输出进了“黑洞”,错误输出打印到屏幕
              

朴实无华,就两步


四、常用的远程数据库工具

常见的Hive连接工具有:IDEA、DBeaver、DataGrap、Beeline

推荐使用DataGrap

原因:好用

一跃从元谋人升级为21世纪新青年

使用方法不赘述,需要安装驱动

一般安不了,可以离线安装

补偿你一个插件包,文章开头下载(歪日today,我自己上传的下载还要钱呢,好样的CSDN)

解压放在C:\Users\Administrator\AppData\Roaming\JetBrains\DataGrip2023.1\jdbc-drivers

良心交一下,点赞(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤


补充:脚本 hive-server-manager.sh

给经常反复启动 metastore 以及hiveserver2这两个服务的小伙伴的福利,方便使用

cd /usr/local/bin                #进目录

vi hive-server-manager.sh        #创建

chmod u+x hive-server-manager.sh                #授权

#!/bin/bash

# hive 服务控制脚本,可以控制 Hive 的 metastore 和 hiveserver2 服务的启停
# 使用方式: hive-server-manager.sh [start|stop|status] [metastore|hiveserver2]
#   - start  : 一键开启metastore和hiveserver2服务,也可以指定服务开启
#   - stop   : 一键停止metastore和hiveserver2服务,也可以指定服务停止
#   - status : 一键查看metastore和hiveserver2服务,也可以指定服务查看

help_info() {
    echo "+---------------------------------------------------------------------------------+"
    echo "|             本脚本可以一键控制 Hive 的 metastore 和 hiveserver2 服务            |"
    echo "| 使用方式: hive-server-manager.sh [start|stop|status] [metastore|hiveserver2]    |"
    echo "+---------------------------------------------------------------------------------+"
    echo "| 第一个参数用来指定操作命令,可以选择 开始(start)、停止(stop)、状态查看(status)  |"
    echo "| 第二个参数用来指定操作的服务,可以选择 metastore、hiveserver2,默认为全部       |"
    echo "+---------------------------------------------------------------------------------+"
    echo "|     - start  : 一键开启metastore和hiveserver2服务,也可以指定服务开启           |"
    echo "|     - stop   : 一键停止metastore和hiveserver2服务,也可以指定服务停止           |"
    echo "|     - status : 一键查看metastore和hiveserver2服务,也可以指定服务查看           |"
    echo "+---------------------------------------------------------------------------------+"
    exit -1
}


# 获取操作命令
op=$1
# 获取操作的服务
server=$2


# 检查参数是否正确
if [ ! $op ]; then
    help_info
elif [ $op != "start" -a $op != "stop" -a $op != "status" ]; then
    help_info
fi

# 检查进程状态
metastore_pid=`ps aux | grep org.apache.hadoop.hive.metastore.HiveMetaStore | grep -v grep | awk '{print $2}'`
hiveserver2_pid=`ps aux | grep proc_hiveserver2 | grep -v grep | awk '{print $2}'`

# 检查日志文件夹的存在情况,如果不存在则创建这个文件夹
log_dir=/var/log/my_hive_log
if [ ! -e $log_dir ]; then
    mkdir -p $log_dir
fi
# 开启服务
start_metastore() {
    # 检查是否开启,如果未开启,则开启 metastore 服务
    if [ $metastore_pid ]; then
        echo "metastore   服务已经开启,进程号: $metastore_pid,已跳过"
    else
        nohup hive --service metastore >> $log_dir/metastore.log 2>&1 &
        echo "metastore   服务已经开启,日志输出在 $log_dir/metastore.log"
    fi
}
start_hiveserver2() {
    # 检查是否开启,如果未开启,则开启 hiveserver2 服务
    if [ $hiveserver2_pid ]; then
        echo "hiveserver2 服务已经开启,进程号: $hiveserver2_pid,已跳过"
    else
        nohup hive --service hiveserver2 >> $log_dir/hiveserver2.log 2>&1 &
        echo "hiveserver2 服务已经开启,日志输出在 $log_dir/hiveserver2.log"
    fi 
}

# 停止服务
stop_metastore() {
    if [ $metastore_pid ]; then
        kill -9 $metastore_pid
    fi
    echo "metastore   服务已停止" 
}
stop_hiveserver2() {
    if [ $hiveserver2_pid ]; then 
        kill -9 $hiveserver2_pid
    fi
    echo "hiveserver2 服务已停止"
}

# 查询服务
status_metastore() {
    if [ $metastore_pid ]; then
        echo "metastore   服务已开启,进程号: $metastore_pid"
    else
        echo "metastore   服务未开启"
    fi
}
status_hiveserver2() {
    if [ $hiveserver2_pid ]; then
        echo "hiveserver2 服务已开启,进程号: $hiveserver2_pid"
    else
        echo "hiveserver2 服务未开启"
    fi
}

# 控制操作
if [ ! $server ]; then
    ${op}_metastore
    ${op}_hiveserver2
elif [ $server == "metastore" ]; then
    ${op}_metastore
elif [ $server == "hiveserver2" ]; then
    ${op}_hiveserver2
else
    echo "服务选择错误"
    help_info
fi

真的好用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值