温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hive如何安装

发布时间:2021-11-25 11:40:19 来源:亿速云 阅读:148 作者:小新 栏目:大数据

小编给大家分享一下Hive如何安装,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1、Hive安装

1.1、hive安装地址

1)Hive官网地址 http://hive.apache.org/

2)文档查看地址 https://cwiki.apache.org/confluence/display/Hive/GettingStarted

3)下载地址 http://archive.apache.org/dist/hive/

4)github地址 https://github.com/apache/hive

1.2、Mysql安装

1.2.1、检查当前是否安装mysql
#rpm -qa查询 | -ivh安装 | -e --nodeps卸载(不检查依赖)
rpm -qa|grep mariadb
--> mariadb-libs-5.5.56-2.el7.x86_64  --如果存在通过如下命令卸载

sudo rpm -e --nodeps  mariadb-libs
1.2.2、解压并安装mysql
#必须按照如下顺序依次安装
#MySQl运行环境
sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
#MySQL运行jar包
sudo rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
#MySQL扩展jar包
sudo rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
#MySQL客户端
sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
#MySQL服务器
sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
1.2.3、删除datadir目录下内容
#查看datadir路径
cat /etc/my.cnf
--> datadir=/var/lib/mysql

#清空路径目录下内容
sudo rm -rf /var/lib/mysql
1.2.4、初始化数据库

sudo mysqld --initialize --user=mysql

1.2.5、启动数据库并修改相关配置
#启动mysql服务
sudo systemctl start mysqld
sudo systemctl status mysqld

#查看临时密码
sudo cat /var/log/mysqld.log

#登录数据库
mysql -uroot -p(换行中输入临时密码)

#更改密码策略
set global validate_password_length=4;
set global validate_password_policy=0;

#修改登录密码
set password = password('123456')
#修改mysql库下的user表中的root用户允许任意ip连接
updata mysql.user set host="%" where user="root"

#刷新数据库
flush privileges

1.3、Hive安装

1.3.1、安装部署
1)把apache-hive-3.1.2-bin.tar.gz上传到linux的/opt/software目录下

2)解压apache-hive-3.1.2-bin.tar.gz到/opt/module/目录下面
   --tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/

3)修改apache-hive-3.1.2-bin.tar.gz的名称为hive
   --mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive

4)修改/etc/profile.d/my_env.sh,添加环境变量
   --sudo vim /etc/profile.d/my_env.sh

5)添加内容
   #HIVE_HOME
   export HIVE_HOME=/opt/module/hive
   export PATH=$PATH:$HIVE_HOME/bin

6)解决日志Jar包冲突
   --mv $HIVE_HOME/lib/log4j2-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j2-slf4j-impl-2.10.0.bak
1.3.2、hive元数据配置到Mysql
#1.将MySQL的JDBC驱动放置在Hive的lib目录下
cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib

#2.配置Metastore到MySQL
vim /opt/module/hive/conf/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>
   
    <!-- 指定hiveserver2连接的端口号 -->
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>
    <!-- 指定hiveserver2连接的host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>hadoop102</value>
    </property>

    <!-- 指定存储元数据要连接的地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop102:9083</value>
    </property>
    <!-- 元数据存储授权  hive默认不允许去外部存储,所以得关闭授权-->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    <!-- Hive元数据存储版本的验证-->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>

    <!-- hiveserver2的高可用参数,开启此参数可以提高hiveserver2的启动速度 -->
    <property>
        <name>hive.server2.active.passive.ha.enable</name>
        <value>true</value>
    </property>
</configuration>

1.4、启动Hive

1.4.1、元素据库初始化
#登录MySQL 创建元数据库
create database metastore
#退出MySQL 初始化元数据
schematool -initSchema -dbType mysql -verbose
1.4.2、hive启动服务
#启动元数据服务(前台服务,连接mysql获取元数据)
hive --service metastore
#启动hiveserver2服务(前台服务,jdbc连接服务)
hive --service hiveserver2

#——0 标准输入	——1 标准输出	——2 错误输出	-->& 将一个句柄的输出写入到另一个句柄的输入中。
#——nohup: 命令开头,表示不挂起,也就是关闭终端进程也继续保持运行状态	——&: 命令结尾,表示后台运行
nohup hive --service metastore>log.txt 2>&1 &
nohup hive --service hiveserver2>log2.txt 2>&1 &
1.4.3、hive启动服务脚本
#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]
then
	mkdir -p $HIVE_LOG_DIR
fi
#检查进程是否运行正常,参数1为进程名,参数2为进程端口
function check_process()
{
    pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
    ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/' -f 1)
    echo $pid
    [[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}

function hive_start()
{
    metapid=$(check_process HiveMetastore 9083)
    cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"
    cmd=$cmd" sleep 4; hdfs dfsadmin -safemode wait >/dev/null 2>&1"
    [ -z "$metapid" ] && eval $cmd || echo "Metastroe服务已启动"
    server2pid=$(check_process HiveServer2 10000)
    cmd="nohup hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
    [ -z "$server2pid" ] && eval $cmd || echo "HiveServer2服务已启动"
}

function hive_stop()
{
    metapid=$(check_process HiveMetastore 9083)
    [ "$metapid" ] && kill $metapid || echo "Metastore服务未启动"
    server2pid=$(check_process HiveServer2 10000)
    [ "$server2pid" ] && kill $server2pid || echo "HiveServer2服务未启动"
}

case $1 in
"start")
    hive_start
    ;;
"stop")
    hive_stop
    ;;
"restart")
    hive_stop
    sleep 2
    hive_start
    ;;
"status")
    check_process HiveMetastore 9083 >/dev/null && echo "Metastore服务运行正常" || echo "Metastore服务运行异常"
    check_process HiveServer2 10000 >/dev/null && echo "HiveServer2服务运行正常" || echo "HiveServer2服务运行异常"
    ;;
*)
    echo Invalid Args!
    echo 'Usage: '$(basename $0)' start|stop|restart|status'
    ;;
esac
1.4.4、Hive两种启动方式
#1.Hive启动
bin/hive
#打印当前库与表头需配置hive-site.xml
<property>
    <name>hive.cli.print.header</name>
    <value>true</value>
    <description>Whether to print the names of the columns in query output.</description>
</property>
<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
    <description>Whether to include the current database in the Hive prompt.</description>
</property>

#2.JDBC启动
beeline -u jdbc:hive2://hadoop102:10000 -n luck

1.5 hive交互命令

#查看所有命令
bin/hive -help

#1. hive -e 不进入hive窗口执行sql语句
bin/hive -e "select id from student;"

#2. hive -f 执行脚本中的sql语句
echo "select * from student" >> sql.txt
bin/hive -f /opt/module/hive/datas/sql.txt  > /opt/module/datas/hive_result.txt

#3.hive中查看hdfs文件系统
hive > dfs -ls

#4.hive输入历史
/home/luck/. hivehistory  
/home/luck/.beeline/history

1.6 属性配置说明

#1.hive日志存储位置
  #修改hive-log4j.properties.template为hive-log4j.properties
  property.hive.log.dir=/opt/module/hive/logs
  
#2.JVM堆内存设置
  #修改hive-env.sh.template为hive-env.sh
  export HADOOP_HEAPSIZE=1024

#3.参数配置的优先级
 #3.1 配置文件(永久)
  #Hadoop配置文件-->默认配置文件:hive-default.xml-->用户自定义配置文件:hive-site.xml
 #3.2 命令行参数(hive启动前,仅对本次hive有效)
  beeline -u jdbc:hive2://hadoop102:10000 -n luck -hiveconf mapreduce.job.reduces=10;
 #3.3 参数声明(hive启动后,仅对本次hive有效)
  hive (default)> set mapreduce.job.reduces=10;
  
#优先级:参数声明>命令行参数>配置文件

以上是“Hive如何安装”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI