您的位置 首页 java

hive安装、配置mysql元数据及启动脚本

HIVE 安装

 # 下载
 wget  
# 解压
tar -xvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin hive
mv hive /usr/local/
# 配置环境变量
echo "export HIVE_HOME=/usr/local/hive" >> ~/.bashrc
source ~/.bashrc
echo "export PATH=$PATH:$HIVE_HOME/bin" >> ~/.bashrc 
source ~/.bashrc
# 解决日志冲突
mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $ hive _HOME/lib/log4j-slf4j-impl-2.10.0.jar.bak
# 解决guava.jar版本冲突(hadoop和hive)
mv $HIVE_HOME/lib/guava-19.0.jar $HIVE_HOME/lib/guava-19.0.jar.bak
cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib/  
  • 初始化元数据 bin/schematool -dbType derby -initSchema

mysql安装

 # 拉取mysql镜像
docker pull mysql:5.7.35
# 运行mysql容器
docker run -itd --name mysql-server -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.35
# 进入容器
docker exec -it mysql-server bash
# 连接mysql
mysql -h localhost -u root -p  

Hive的元数据配置到mysql

  • 拷贝mysql驱动到hive的lib下
 # 拷贝mysql驱动到hive的lib下
cp /opt/software/mysql-connector-java-5.1.21.jar $HIVE_HOME/lib
  
  • 在$HIVE_HOME/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://192.168.10.105: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 元数据存储版本的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <!--元数据存储授权-->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    <!-- Hive 默认在  HDFS  的工作目录 -->
    <property>
        <name>hive. Meta store.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
</configuration>  
  • 在mysql中,创建hive的元数据库metastore
 create database metastore;  

初始化hive元数据库

 schematool -initSchema -dbType mysql -verbose  

启动hive

 bin/hive  
  • 测试
 create table test (id string);
insert into test values(1);  

使用元数据服务的方式访问 Hive

  1. hive-site.xml配置如下:
 <!-- 指定存储元数据要连接的地址 -->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://nn:9083</value>
</property>  
  1. 启动metastore
 hive --service metastore  

注意: 启动后窗口不能再操作,需打开一个新的 shell 窗口做别的操作

  1. 启动 hive
 bin/hive  

使用JDBC访问hive

  1. 修改hive-site.xml配置
 # hive-site.xml中添加如下配置:
<!-- 指定 hiveserver2 连接的 host -->
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>nn</value>
</property>
<!-- 指定 hiveserver2 连接的端口号 -->
<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
</property>  
  1. 启动hive的元数据服务:hive –service metastore
  2. 启动hiveserver2服务:hive –service hiveserver2
  3. beeline连接hive:beeline -u jdbc:hive2://nn:10000 -n root
  4. 错误: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache. hadoop .security.authorize.AuthorizationException): User: root is not allowed to impersonate aaa (state=08S01,code=0)

修改hadoop的core-site.xml文件

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

重启hdfs服务

hive启动脚本

编写脚本:vim $HIVE_HOME/bin/hiveservices.sh

 #!/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
&"
    [ -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  

打印当前库和表头

hive-site.xml中添加如下配置:

 <property>
    <name>hive.cli.print.header</name>
    <value>true</value>
</property>
<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
</property>  

hive配置优先级

session内的set命令 > 命令行-hiveconf > hive-site.xml > hive-default.xml

文章来源:智云一二三科技

文章标题:hive安装、配置mysql元数据及启动脚本

文章地址:https://www.zhihuclub.com/199541.shtml

关于作者: 智云科技

热门文章

网站地图