Hive - [02] 安装部署

 

一、相关链接地址

 

二、准备工作

Hive版本:apache-hive-3.1.2,角色规划如下

节点 node01 node02 node03
server    
client

 

三、Local模式

以derby作为hive的元数据库

1、将 apache-hive-3.1.2-bin.tar.gz上传到 node03节点的 /opt/software 目录下,并解压到 /opt/module目录

[root@node03 software]# tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
[root@node03 software]# cd /opt/module/apache-hive-3.1.2-bin
[root@node03 apache-hive-3.1.2-bin]# ll
total 56
drwxr-xr-x 3 root root   157 Jun  7 00:19 bin
drwxr-xr-x 2 root root  4096 Jun  7 00:19 binary-package-licenses
drwxr-xr-x 2 root root  4096 Jun  7 00:19 conf
drwxr-xr-x 4 root root    34 Jun  7 00:19 examples
drwxr-xr-x 7 root root    68 Jun  7 00:19 hcatalog
drwxr-xr-x 2 root root    44 Jun  7 00:19 jdbc
drwxr-xr-x 4 root root 12288 Jun  7 00:19 lib
-rw-r--r-- 1 root root 20798 Aug 23  2019 LICENSE
-rw-r--r-- 1 root root   230 Aug 23  2019 NOTICE
-rw-r--r-- 1 root root  2469 Aug 23  2019 RELEASE_NOTES.txt
drwxr-xr-x 4 root root    35 Jun  7 00:19 scripts

2、修改配置文件 hive-env.sh,配置HADOOP_HOME

# 查看解压后的hive目录
[root@node03 apache-hive-3.1.2-bin]# cd conf/
[root@node03 conf]# ll
total 332
-rw-r--r-- 1 root root   1596 Aug 23  2019 beeline-log4j2.properties.template
-rw-r--r-- 1 root root 300482 Aug 23  2019 hive-default.xml.template
-rw-r--r-- 1 root root   2365 Aug 23  2019 hive-env.sh.template
-rw-r--r-- 1 root root   2274 Aug 23  2019 hive-exec-log4j2.properties.template
-rw-r--r-- 1 root root   3086 Aug 23  2019 hive-log4j2.properties.template
-rw-r--r-- 1 root root   2060 Aug 23  2019 ivysettings.xml
-rw-r--r-- 1 root root   3558 Aug 23  2019 llap-cli-log4j2.properties.template
-rw-r--r-- 1 root root   7163 Aug 23  2019 llap-daemon-log4j2.properties.template
-rw-r--r-- 1 root root   2662 Aug 23  2019 parquet-logging.properties

# 备份 hive-env.sh
[root@node03 conf]# cp -a hive-env.sh.template hive-env.sh
# 配置HADOOP_HOME
[root@node03 conf]# vim hive-env.sh
# 已配置HADOOP_HOME路径
[root@node03 conf]# cat hive-env.sh | grep -i HADOOP_HOME
# Set HADOOP_HOME to point to a specific hadoop install directory
# HADOOP_HOME=${bin}/../../hadoop
HADOOP_HOME=/opt/module/hadoop-2.5.2
[root@node03 conf]#

3、启动Zookeeper、HDFS(ZKFC、JournalNode、NameNode、DataNode)、Yarn(ResourceManager、NodeManager)

# 启动Zookeeper
cd /opt/module/zookeeper-3.4.5
bin/zkServer.sh restart
# 启动HDFS&Yarn
cd /opt/module/hadoop-2.5.2
sbin/start-all.sh

4、初始化配置(dbType=derby)

cd /opt/module/apache-hive-3.1.2-bin
bin/schematool -dbType derby -initSchema

初始化时,遇到如下报错,经过分析,是hadoop和hive的jar包冲突。

解决方法:从hadoop的guava-27.0-jre.jar拷贝到hive的lib目录中,guava-19.0.jar可以mv到其他地方。

具体操作命令如下

[root@node03 ~]# ll /opt/module/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar 
-rw-r--r-- 1 root root 2747878 9月  10 2019 /opt/module/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar
[root@node03 ~]# 
[root@node03 ~]# ll /opt/module/apache-hive-3.1.2-bin/lib/guava-19.0.jar 
-rw-r--r-- 1 root root 2308517 9月  27 2018 /opt/module/apache-hive-3.1.2-bin/lib/guava-19.0.jar
[root@node03 ~]# 
[root@node03 ~]# mkdir /home/bak_hive
[root@node03 ~]# mv /opt/module/apache-hive-3.1.2-bin/lib/guava-19.0.jar /home/bak_hive/
[root@node03 ~]# cp -a /opt/module/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/apache-hive-3.1.2-bin/lib/

重新进行初始化

5、访问hive

 

四、单用户模式

以mysql作为hive的元数据库

1、如果在此之前部署并运行了Local模式,需要先将Local模式产生的文件(日志和元数据)清除掉

2、配置conf/hive-site.xml(hive-default.xml.template是hive配置的很多参数,可以清空,只写入下面demo的配置。)

<configuration>
    <!-- Hive数据仓库存储的位置;Hadoop中HDFS的位置 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/data/hive/data/</value>
    </property>
    <!-- 本地单用户启动 -->
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
   </property>
   <!-- ------------------JDBC数据源配置------------------- -->
   <!-- 连接路径 -->
   <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.1.131:3306/hive?createDatabaseIfNotExist=true</value>
        <!-- 创建数据库(true)、SSL(false)、时区(GMT)、批量执行(true)、返回主键(true) -->
    </property>
    <!-- 驱动包 -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <!-- 数据库账号 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <!-- 数据库密码 -->    
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>!QAZ2wsx..</value>
    </property>    
</configuration>

3、将mysql的jdbc jar包放到/opt/module/apache-hive-3.1.2-bin/lib下(我的mysql是8.0.28,所以是mysql-connector-java-8.0.28.jar

4、在MySQL中授权root用户可以从任意主机连接

# 登录 MySQL(使用新设置的密码)
mysql -u root -p

# 授权 root 用户可以从任何 IP 访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_new_password' WITH GRANT OPTION;

# 如果你想限制特定的远程主机访问,可以替换 '%' 为具体的 IP 地址或网段
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_remote_ip_or_subnet' IDENTIFIED BY 'your_new_password' WITH GRANT OPTION;

# 刷新权限以应用更改
FLUSH PRIVILEGES;

5、初始化元数据,之后可以在mysql数据库中发现有一个hive的数据库,并且该数据库下有74张表。

bin/schematool -dyType mysql -initSchema

6、启动metastore(已测无效)

bin/hive -service metastore

7、访问hive,进行建库建表,然后观察hdfs上对应目录下的变化

bin/hive

8、向测试表插入几条数据,观察hdfs上该目录下的变化

 

 

 

五、多用户模式

 

 

 

 

 

 

— 要养成终生学习的习惯 —

posted @ 2023-06-07 00:35  HOUHUILIN  阅读(22)  评论(0编辑  收藏  举报