赞
踩
目录
1、将hive安装包解压至/home/hadoop,解压完成后将文件夹重名为hive3
2、准备MySQL对应版本的驱动包,并将Java驱动拷贝至hive的jar包文件夹下(lib)
4)由于hive中的guava.jar包与hadoop中的guava.jar包的版本不一致,会导致版本冲突,这里将高版本替换低版本
5)配置环境变量(因为我的环境基本上都是用户级别的环境变量~/.bash_profile,如果是系统环境变量的朋友,那就配置/etc/profile)
1、进入hive安装目录下的配置文件目录,然后修改配置文件(cd /home/hadoop/software/hive3.1.2/conf)
2、然后在改目录下配置hive-env.sh和hive-default.xml
3、配置hive-env.sh,修改之后source一下进行刷新
前提,有对应的Hadoop分布式环境(这里由于我最近需要使用到伪分布式,所以我的演示环境为伪分布式的环境),并且版本必须要兼容,我Hadoop的版本为3,所以这里选择的版本也是3,这个是大数据环境必须要关注到的。还必须要有一个元数据管理的宿主,这里的话我们使用MySQL来管理我们hive元数据,相关链接:
Hadoop分布式的安装
1、创建MySQL用户,这里就myhive
- 在 MySQL 5 中,可以使用以下步骤创建用户:
-
- 1. 连接到 MySQL 数据库服务器,可以使用如下命令进行连接:
- ```
- mysql -u root -p
- ```
- 这将要求你输入 MySQL 的 root 用户的密码。
-
- 2. 执行以下 SQL 语句来创建一个新用户:
- ```
- CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
- ```
- 将 `username` 替换为你要创建的用户名,将 `password` 替换为用户的密码。`localhost` 表示该用户只能从本地连接,如果要允许从远程连接,请将 `localhost` 更改为允许的主机名或 IP 地址。
-
- 3. 授予用户适当的权限。例如,如果你想将用户授予对特定数据库的全部权限,可以使用以下命令:
- ```
- GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
- ```
- 将 `database_name` 替换为你要授予权限的数据库名。
-
- 4. 最后,使用以下命令刷新权限以使更改生效:
- ```
- FLUSH PRIVILEGES;
- ```
-
-
-
- 在 MySQL 8 版本中,创建用户并为其远程赋权的步骤如下:
-
- 1. 连接到 MySQL 数据库服务器,可以使用以下命令进行连接:
- ```
- mysql -u root -p
- ```
- 这将要求你输入 MySQL 的 root 用户的密码。
-
- 2. 执行以下 SQL 语句来创建一个新用户:
- ```
- CREATE USER 'username'@'%' IDENTIFIED BY 'password';
- ```
- 将 `username` 替换为你要创建的用户名,将 `password` 替换为用户的密码。`%` 表示该用户可以从任何主机连接。
-
- 3. 授予用户适当的权限。例如,如果你想将用户授予对所有数据库的全部权限,可以使用以下命令:
- ```
- GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
- ```
- 如果你只想给予用户对特定数据库的权限,可以使用以下命令:
- ```
- GRANT ALL PRIVILEGES ON `database_name`.* TO 'username'@'%';
- ```
- 将 `database_name` 替换为你要授予权限的数据库名。
-
- 4. 最后,使用以下命令刷新权限以使更改生效:
- ```
- FLUSH PRIVILEGES;
- ```
-
- 请注意,默认情况下,MySQL 8 版本的新安装不允许远程连接,你可能需要进行一些额外的配置来确保你的 MySQL 服务器可以接受远程连接。如果有需要,请参考 MySQL 官方文档或者基于你使用的操作系统的相关文档进行配置。
-
-
- 在 MySQL 8 版本中,要允许远程连接,需要执行以下步骤:
-
- 1. 连接到 MySQL 数据库服务器,可以使用以下命令进行连接:
- ```
- mysql -u root -p
- ```
- 这将要求你输入 MySQL 的 root 用户的密码。
-
- 2. 运行以下 SQL 语句以创建一个新用户并授予其远程连接权限:
- ```
- CREATE USER 'username'@'%' IDENTIFIED BY 'password';
- GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
- ```
- 将 `'username'` 替换为你想要创建的用户名,将 `'password'` 替换为用户的密码。
-
- 3. 在配置文件中更新绑定地址(如果需要):
- - 打开 MySQL 配置文件,在 Linux 上通常是 `/etc/mysql/mysql.conf.d/mysqld.cnf`,在 Windows 上通常是 `C:\ProgramData\MySQL\MySQL Server 8.0\my.ini`。
- - 查找 `bind-address` 参数,并将其设置为数据库服务器所在的 IP 地址或 `0.0.0.0` 表示允许所有 IP 连接。例如:`bind-address = 0.0.0.0`。
- - 保存并关闭配置文件。
-
- 4. 重启 MySQL 服务器以使配置更改生效。在 Linux 上可以使用以下命令进行重启:
- ```
- sudo service mysql restart
- ```
- 在 Windows 上可以通过服务管理器重启 `MySQL80` 服务。
-
- 完成以上步骤后,你已经成功允许 MySQL 8 版本的远程连接。请确保通过防火墙配置允许从远程主机访问 MySQL 服务器的端口(默认为 3306)。同时,为了安全起见,请注意控制用户的权限,并仔细审查授权。
-
- 如果你还遇到其他问题,请提供更多的具体信息,我将尽力帮助你。
-
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
操作如下
检测:
创建专门存放元数据的数据库
创建数据库:
解压:tar -zxvf 压缩包文件包
重命名:mv 旧文件名 新文件名
可以直接进行上传到文件夹下
查看hive这边的版本
查看hadoop这边的版本(/home/hadoop/software/hadoop-3.3.0/share/hadoop/common/lib)
删除hive端的低版本
复制hadoop端的到hive端( cp guava-27.0-jre.jar /home/hadoop/software/hive3/lib)
查看
退出编辑模式,之后:wq保存之后,刷新环境变量:source ~/.bash_profile
1)配置元数据的管理方式
2)配置mysql的驱动
注意:
mysql 5版本的设置为:com.mysql.jdbc.Driver
mysql 8版本的设置为:com.mysql.cj.jdbc.Driver
3)配置连接mysql的用户名
4)配置连接mysql的密码
5)配置mysql登录密码
6)配置hive的模式
7)配置是否显示当前表的表头信息
8)配置是否显示当前数据名称
总配置文件:
- <?xml version="1.0"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <configuration>
- <!-- 选择当前的模式-->
- <property>
- <name>hive.metastore.local</name>
- <value>true</value>
- </property>
-
- <!-- 配置存储元数据mysql相关配置 -->
- <property>
- <name>javax.jdo.option.ConnectionURL</name>
- <value>jdbc:mysql://hadooptest:3306/hive_metadata?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
- </property>
-
- <!-- useSSL=false和true的区别:
- SSL(Secure Sockets Layer 安全套接字协议),在mysql进行连接的时候,如果mysql的版本是5.7之后的版本必须要加上useSSL=false,mysql5.7以及之前的版本则不用进行添加useSSL=false,会默认为false,一般情况下都是使用useSSL=false,尤其是在将项目部署到linux上时,一定要使用useSSL=false!!!,useSSL=true是进行安全验证,一般通过证书或者令牌什么的,useSSL=false就是通过账号密码进行连接,通常使用useSSL=false!!! -->
-
- <!-- 配置mysql的驱动 -->
- <property>
- <name>javax.jdo.option.ConnectionDriverName</name>
- <value>com.mysql.cj.jdbc.Driver</value>
- </property>
-
- <!-- 配置mysql用户名-->
- <property>
- <name>javax.jdo.option.ConnectionUserName</name>
- <value>myhive</value>
- </property>
-
- <!-- 配置mysql登录的密码-->
- <property>
- <name>javax.jdo.option.ConnectionPassword</name>
- <value>123456</value>
- </property>
-
- <!--配置hive的环境为本地模式-->
- <property>
- <name>hive.exec.mode.local.auto</name>
- <value>true</value>
- <description>Let Hive determine whether to run in local mode automatically</description>
- </property>
-
- <!--是否显示当前的表头-->
- <property>
- <name>hive.cli.print.header</name>
- <value>true</value>
- </property>
-
- <!--是否显示当前的数据库名称-->
- <property>
- <name>hive.cli.print.current.db</name>
- <value>true</value>
- </property>
- </configuration>
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
- 初始化metadata
- cd /usr/local/bigdata/apache-hive-3.1.2-bin
- bin/schematool -initSchema -dbType mysql -verbos
- #初始化是否成功验证标准:初始化成功会在mysql中创建74张表
报错:
Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8)。根据引用中的信息,解决这个问题的方法是进入hive-site.xml文件,找到对应行数,删除里面的特殊字符""即可。
这里我将其进行注释(如何快速定位)
再次执行!
结果!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。