Hive安装部署

目录

hive-env.sh配置

hive-site.xml配置

初始化元数据库

Hive环境变量配置

启动Hive


Hive是一个构建于Hadoop之上的一个数据仓库工具,其底层存储使用的HDFS,能够将结构化的数据映射成表,并提供SQL能力,这些SQL可以转化成MapReduce执行,用户只用写SQL就能够分析大规模数据,大大简化了MapReduce的使用难度,减少了开发周期。

Hive一般只用部署Metastore和HiveServer2进程,Metastore底层依赖关系型数据作为元数据库(一般选择MySQL或者PostgreSQL),本次部署采用Apache Hive 3.1.2版本,默认以root用户进行操作,将Hive的两个进程部署在master机器上。

hive-env.sh配置

在master机器上下载或者上传Apache Hive 3.1.2安装包,解压至合适的目录,将解压后得到的目录作为HIVE_HOME目录。

修改${HIVE_HOME}/conf/hive-env.sh文件,修改内容如下:

# 设置Hive使用的Java
export JAVA_HOME=/opt/jdk-8u301

# 设置Hive依赖的Hadoop安装目录
export HADOOP_HOME=/opt/hadoop-3.2.2

# Hive Metastore服务的JVM参数配置
if [ "$SERVICE" = "metastore" ]; then
  if [ -z "$DEBUG" ]; then
    export HIVE_METASTORE_HADOOP_OPTS=" -XX:+PrintCommandLineFlags -Xms2g -Xmx2g -XX:+UseParNewGC -XX:-UseGCOverheadLimit -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=128M -Xloggc:/data/hive/logs/gc-metastore.log"
  else
    export HIVE_METASTORE_HADOOP_OPTS=" -XX:+PrintCommandLineFlags -Xms2g -Xmx2g -XX:+UseParNewGC -XX:-UseGCOverheadLimit -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=128M -Xloggc:/data/hive/logs/gc-metastore.log"
  fi
  export HADOOP_CLIENT_OPTS=" -Xmx2g -Xss512k $HADOOP_CLIENT_OPTS"
fi

# Hive HiveServer2服务的JVM参数配置
if [ "$SERVICE" = "hiveserver2" ]; then
  if [ -z "$DEBUG" ]; then
    export HIVE_SERVER2_HADOOP_OPTS="$HADOOP_OPTS -XX:+PrintCommandLineFlags -Xms2g -Xmx2g -XX:+UseParNewGC -XX:-UseGCOverheadLimit -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=128M -Xloggc:/data/hive/logs/gc-hiveserver2.log"
  else
    export HIVE_SERVER2_HADOOPO_PTS="$HADOOP_OPTS -XX:+PrintCommandLineFlags -Xms2g -Xmx2g -XX:+UseParNewGC -XX:-UseGCOverheadLimit -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=128M -Xloggc:/data/hive/logs/gc-hiveserver2.log"
  fi
  export HADOOP_CLIENT_OPTS=" -Xmx2g -Xss512k $HADOOP_CLIENT_OPTS"
fi

hive-site.xml配置

修改${HIVE_HOME}/conf/hive-site.xml文件,修改内容如下:

<configuration>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://master:9083</value>
    <description>Hive元数据服务uri配置</description>
  </property>
  <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    <description>Hive thrift服务端口配置</description>
  </property>
  <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>master</value>
    <description>Hive thrift服务绑定机器配置</description>
  </property>

  <property>
    <name>hive.exec.scratchdir</name>
    <value>/hive/tmp</value>
    <description>Hive临时文件目录配置,HDFS目录</description>
  </property>
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/hive/data</value>
    <description>Hive数据存储目录配置,HDFS目录</description>
  </property>
  <property>
    <name>hive.querylog.location</name>
    <value>/data/hive/logs</value>
    <description>Hive查询日志目录,本地目录</description>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://master:3306/hivemeta?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
    <description>Hive元数据库连接串</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
    <description>Hive元数据库驱动类</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>Hive元数据库用户名</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>Hive元数据库用户密码</description>
  </property>
</configuration>

初始化元数据库

首次安装部署Hive时需要进行元数据库的初始化操作,命令如下:

# 将MySQL驱动jar文件加入${HIVE_HOME}/lib目录

# 拷贝或软连接${HADOOP_HOME}/etc/hadoop目录下的core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml到${HIVE_HOME}/conf目录下
# 推荐使用软连接的方式

# 在${HIVE_HOME}/bin目录下执行以下命令
./schematool -dbType mysql -initSchema

执行以上命令时,可能会遇到因为Hive和Hadoop使用的guava包不兼容导致初始化失败,异常摘要如下所示:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

# 解决方法
# 备份${HIVE_HOME}/lib目录下的guava包
# 拷贝${HADOOP_HOME}/share/hadoop/common/lib目录下的guava包到${HIVE_HOME}/lib目录下
# 重新执行初始化命令

Hive环境变量配置

在master机器上修改/etc/profile文件,追加如下内容:

export HIVE_HOME=/opt/hive-3.1.2
export PATH=${HIVE_HOME}/bin:$PATH

# 保存退出后,执行以下命令使环境变量生效
source /etc/profile

启动Hive

完成元数据库初始化之后,可以启动并简单测试Hive,命令如下:

# 后台启动Metastore进程
# 该命令同时指定了Metastore进程的日志文件
nohup hive --service metastore >> /data/hive/log/metastore.log 2>&1 &

# 后台启动HiveServer2进程
# 该命令同时指定了HiveServer2进程的日志文件
nohup hive --service hiveserver2 >> /data/hive/log/hiveserver2.log 2>&1 &

# 上面两个命令所指定的日志文件不会自动回滚,不能删除或重命名日志文件
# 目前我是通过定时脚本,定期清空日志文件的内容
# 希望有大佬可以指点一下,该如何去配置Metastore和HiveServer2的日志文件



# 推荐使用${HIVE_HOME}/bin/beeline工具连接Hive
# beeline连接上Hive之后,就可以像使用MySQL一样使用Hive了,大部分命令都兼容
beeline -u jdbc:hive2://master:10000 -n root

# 退出beeline
!quit

在使用beeline连接Hive时可能会出现报错,异常摘要信息如下:

Error: Could not open client transport with JDBC Uri: jdbc:hive2://master:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous (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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值