Hive如何安装

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

创新互联公司专业为企业提供南郑网站建设、南郑做网站、南郑网站设计、南郑网站制作等企业网站建设、网页设计与制作、南郑企业网站模板建站服务,10年南郑做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

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



    
    
        javax.jdo.option.ConnectionURL
        jdbc:mysql://hadoop102:3306/metastore?useSSL=false
    

    
    
        javax.jdo.option.ConnectionDriverName 
        com.mysql.jdbc.Driver
    

	
    
        javax.jdo.option.ConnectionUserName
        root
    

    
    
        javax.jdo.option.ConnectionPassword
        123456
    
    
    
        hive.metastore.warehouse.dir
        /user/hive/warehouse
    
   
    
    
        hive.server2.thrift.port
        10000
    
    
    
        hive.server2.thrift.bind.host
        hadoop102
    

    
    
        hive.metastore.uris
        thrift://hadoop102:9083
    
    
    
        hive.metastore.event.db.notification.api.auth
        false
    
    
    
        hive.metastore.schema.verification
        false
    

    
    
        hive.server2.active.passive.ha.enable
        true
    

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

    hive.cli.print.header
    true
    Whether to print the names of the columns in query output.


    hive.cli.print.current.db
    true
    Whether to include the current database in the Hive prompt.


#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如何安装”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


本文名称:Hive如何安装
本文路径:http://ybzwz.com/article/jidjpc.html