> 技术文档 > Hive3.1.3-安装和部署_hive3.1.3安装

Hive3.1.3-安装和部署_hive3.1.3安装


Hive3.1.3-安装和部署

    • 背景
    • 安装前提
    • 安装hive3.1.3
      • 下载MySQL jdbc驱动
      • 安装hive3.1.3
        • 下载解压hive3.1.3 包
        • 修改配置文件
        • 复制mysql 驱动包
        • 配置日志目录
        • 启动hive
      • 遇到问题
    • 最后

背景

去年写了一篇编译ranger2.4.1 文章。有网友说部署ranger2.4.1 后,在对接hive地方老报错。所以一探究竟,为其搭建ranger 2.4.1环境。ranger 2.4.1对接hive ,需要安装hive

安装前提

(1) 安装JDK1.8

(2) 已经安装MySQL,推荐8。

(3) 已经安装Hadoop。推荐3.3.6

安装hive3.1.3

下载MySQL jdbc驱动

打开网址:https://downloads.mysql.com/archives/c-j/
Hive3.1.3-安装和部署_hive3.1.3安装
我是centos7.9 ,所以选择el7
使用rpm 命令安装

sudo rpm -ivh --replacepkgs mysql-connector-java-8.0.27-1.el7.noarch.rpm

执行完后,在/usr/share/java,有个文件:mysql-connector-java.jar,后续复制hive lib目录

安装hive3.1.3

下载解压hive3.1.3 包
tar -zxvf /setup/apache-hive-3.1.3-bin.tar.gz -C /optcd /optmv apache-hive-3.1.3-bin hive chown -R hdfs:hdfs hive 

使用hdfs用户启动hive ,所以授权/opt/hive目录给hdfs用户

修改配置文件

1./etc/profile

vi /etc/profile
export HADOOP_HOME=/opt/hadoop-3.3.6export HIVE_HOME=/opt/hiveexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HADOOP_HOME/bin

使得/etc/profile生效

source /etc/profile

2.hive-env.sh

cd $HIVE_HOME/confcp hive-env.sh.template hive-env.sh vi hive-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201export HADOOP_HOME=/opt/hadoop-3.3.6export HIVE_CONF_DIR=/opt/hive/conf

3.hive-site.xml

cd $HIVE_HOME/confcp hive-default.xml.template hive-site.xmlvi hive-site.xml
  system:java.io.tmpdir</name> /opt/hive/warehouse</value> </property>  system:user.name</name> ${user.name}</value> </property>  hive.metastore.db.type</name> mysql</value> </property>  javax.jdo.option.ConnectionURL</name> jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true</value> </property>  javax.jdo.option.ConnectionDriverName</name> com.mysql.cj.jdbc.Driver</value> </property>  javax.jdo.option.ConnectionUserName</name> root</value> </property>  javax.jdo.option.ConnectionPassword</name> XXX</value> </property>  datanucleus.schema.autoCreateAll</name> true</value> </property>  hive.metastore.schema.verification</name> false</value> </property>  hive.execution.engine</name> mr</value> </property>  hive.server2.active.passive.ha.enable</name> true</value> </property></configuration>

因为使用mysql8,这里有两个地方要注意:
1.jdbc url后面加上&allowPublicKeyRetrieval=true
2.jdbc 驱动类名改成:com.mysql.cj.jdbc.Driver

4.修改hdfs目录

# su - hdfs$ hadoop fs -mkdir -p /tmp$ hadoop fs -chmod g+w /tmp$ hadoop fs -mkdir -p /opt/hive/warehouse$ hadoop fs -chmod g+w /opt/hive/warehouse
复制mysql 驱动包
cp /usr/share/java/mysql-connector-java.jar $HIVE_HOME/lib
配置日志目录

配置日志,复制一个模板

cp hive-log4j2.properties.template hive-log4j2.propertiesvi hive-log4j2.propertiesproperty.hive.log.dir = /opt/hive/logs

创建日志目录

mkdir /opt/hive/logs

启动hive

1.启动hive
1.1 初始化hive数据库

schematool -dbType mysql -initSchema

1.2 开启metastore(&表示后台进程

nohup hive --service metastore &

1.3 启动hiveserver2服务

nohup hive --service hiveserver2 &

1.4 通过命令:jps可以看到有两个RunJar的进程。
Hive3.1.3-安装和部署_hive3.1.3安装
1.5 通过如下命令可以看到下面两个端口有监听进程。

ss -nalp | grep 9083 (metastore进程端口)

ss -nalp | grep 10000(hiveserver2进程端口)
Hive3.1.3-安装和部署_hive3.1.3安装

2.beeline客户端连接
2.1 默认配置需要使用用户名和密码连接,需要修改hadoop的配置文件core-site.xml命令:

vi $HADOOP_HOME/etc/hadoop/core-site.xml

修改属性如下:

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

原来是hadoop.proxyuser.root.hosts,hadoop.proxyuser.root.groups
分别改成hadoop.proxyuser.hdfs.hosts,hadoop.proxyuser.hdfs.groups

2.2 然后将该配置文件分发到所有节点。

scp $HADOOP_HOME/etc/hadoop/core-site.xml hdfs@slave2:~scp $HADOOP_HOME/etc/hadoop/core-site.xml hdfs@slave3:~scp $HADOOP_HOME/etc/hadoop/core-site.xml hdfs@slave4:~

然后分别切换到slave2,slave3,slave4 三台机器,使用root用户复制

cp /home/hdfs/core-site.xml $HADOOP_HOME/etc/hadoop/core-site.xml

2.3 重启hadoop后,再进行连接

stop-all.sh && start-all.sh

(2)启动beeline,进行连接测试

Hive3.1.3-安装和部署_hive3.1.3安装

3.退出hive

通过kill 进程id的方式停止Hive服务。jps | grep RunJar | awk \'{print $1}\' | xargs kill -9回车后会输出如下:[1]- 已杀死 nohup hive --service metastore[2]+ 已杀死 nohup hive --service hiveserver2

遇到问题

  1. 启动hive失败,报下面错误
    Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
    at [row,col,system-id]: [3223,96,“file:/opt/hive/conf/hive-site.xml”]
vim +3223 /opt/hive/conf/hive-site.xml

这是xml有非法字符,使用vim 定位到3223行删除即可。需要重启hive
2.beeline 连接失败,报下面错误
hadoop01 (state=08S01,code=0)
beeline> !connect jdbc:hive2://master:10000
Connecting to jdbc:hive2://master:10000
Enter username for jdbc:hive2://master:10000:
Enter password for jdbc:hive2://master:10000:
25/06/11 15:48:24 [main]: WARN jdbc.HiveConnection: Failed to connect to master:10000
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: hdfs is not allowed to impersonate anonymous (state=08S01,code=0)
这个错误表明 HiveServer2 连接失败,原因是 Hadoop 的 用户代理(Impersonation)权限 没有正确配置,导致 hdfs 用户无法以 anonymous(匿名)身份访问 Hive。

把$HADOOP_HOME/etc/hadoop/core-site.xml 中的hadoop.proxyuser.root.hosts,hadoop.proxyuser.root.groups
分别改成hadoop.proxyuser.hdfs.hosts,hadoop.proxyuser.hdfs.groups 即可

最后

hive单机部署,就写到这里。如需沟通:lita2lz