上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Hive 搭建(将 MySQL 作为元数据库)

guduadmin11天前

Hive 搭建

    • 一、安装 MySQL
        • 1.卸载当前系统自带的 MySQL
        • 2.获取 MySQL 下载源
        • 3.安装 MySQL 源
        • 4.检查 MySQL 源是否安装成功
        • 5.安装 MySQL
        • 6.启动 MySQL 服务
        • 7.进入 MySQL 设置权限
        • 二、安装 Hive
            • 1.解压安装文件
            • 2.拷贝 MySQL 驱动
            • 3.添加环境变量
            • 4.解决日志 jar 包冲突
            • 5.配置 hive-site.xml 文件
            • 6. 创建元数据库
            • 7. 初始化与启动
            • 8.检测运行是否正常
            • 三、扩展
              • 配置 hiveserver2
              • 字符集乱码解决

                前言:安装 Hive 之前请先确保你当前已经安装好了 Hadoop,并且运行正常。

                本文中使用的 Hadoop 版本为 hadoop-3.1.3、Hive 版本为 hive-3.1.2、MySQL 版本为 MySQL 5.7。

                集群其它生态安装与配置:

                • Hadoop 完全分布式搭建(超详细)

                • Spark 集群搭建(多种方式)

                • Sqoop 安装配置(超详细)

                • Hudi 0.12.0 搭建——集成 Hive 与 Spark

                  一、安装 MySQL

                  1.卸载当前系统自带的 MySQL
                  rpm -qa | grep mysql
                  rpm -qa | grep mariadb
                  # 强制删除
                  rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
                  
                  Hive 搭建(将 MySQL 作为元数据库),第1张
                  2.获取 MySQL 下载源
                  curl -O https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
                  
                  Hive 搭建(将 MySQL 作为元数据库),第2张

                  如果出现错误:curl: (6) Could not resolve host: repo.mysql.com; 未知的错误,是由于 DNS 解析的问题导致的。

                  解决方法: 编辑文件 vim /etc/resolv.conf,在其中添加如下内容:

                  options timeout:2 attempts:3 rotate single-request-reopen
                  ; generated by /usr/sbin/dhclient-script
                  nameserver 8.8.8.8
                  

                  这样就可以正常获取下载源了。

                  3.安装 MySQL 源
                  yum localinstall mysql57-community-release-el7-11.noarch.rpm
                  
                  Hive 搭建(将 MySQL 作为元数据库),第3张
                  4.检查 MySQL 源是否安装成功
                  yum repolist enabled | grep "mysql.*-community.*"
                  
                  Hive 搭建(将 MySQL 作为元数据库),第4张
                  5.安装 MySQL
                  yum install mysql-community-server
                  
                  Hive 搭建(将 MySQL 作为元数据库),第5张

                  如果安装过程中出现如下错误时:

                  Hive 搭建(将 MySQL 作为元数据库),第6张

                  重新导入一个新的公钥即可:

                  rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
                  
                  6.启动 MySQL 服务
                  systemctl start mysqld
                  systemctl status mysqld
                  
                  Hive 搭建(将 MySQL 作为元数据库),第7张
                  7.进入 MySQL 设置权限
                  # 查看临时密码
                  cat /var/log/mysqld.log | grep password
                  
                  Hive 搭建(将 MySQL 作为元数据库),第8张
                  # 输入临时密码进入 MySQL
                  mysql -uroot -p
                  
                  Hive 搭建(将 MySQL 作为元数据库),第9张
                  # 进入后必须先修改密码!
                  set password = password("新密码");
                  

                  如果你的密码过于简单,会出现如下错误:

                  Your password does not satisfy the current policy requirements.

                  修改其安全等级即可:

                  # 必须按顺序执行
                  set global validate_password_policy=0;
                  set global validate_password_length=1;
                  
                  Hive 搭建(将 MySQL 作为元数据库),第10张

                  修改权限(允许所有用户连接):

                  update mysql.user set host='%' where user='root';
                  # 刷新权限
                  flush privileges;
                  

                  MySQL 安装完成!

                  二、安装 Hive

                  1.解压安装文件
                  tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
                  # 修改一下文件夹名称
                  cd /opt/module
                  mv apache-hive-3.1.2-bin/ hive-3.1.2
                  
                  2.拷贝 MySQL 驱动
                  cp mysql-connector-java-5.1.37-bin.jar /opt/module/hive-3.1.2/lib/
                  
                  3.添加环境变量
                  vi /etc/profile
                  #HIVE_HOME
                  export HIVE_HOME=/opt/module/hive-3.1.2
                  export PATH=$PATH:$HIVE_HOME/bin
                  

                  添加完成后使其立即生效:source /etc/profile

                  4.解决日志 jar 包冲突

                  这一步也可以不做,只是后面启动 Hive 时会有一堆警告信息。

                  mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak
                  
                  5.配置 hive-site.xml 文件
                  cd $HIVE_HOME/conf
                  # 创建 hive-site.xml 文件
                  vi hive-site.xml
                  

                  在文件中添加如下内容(结合自身配置的 MySQL 进行修改):

                  
                  
                  
                  	
                  	
                  		javax.jdo.option.ConnectionURL
                  		jdbc:mysql://master:3306/metastore?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true
                  	
                  	
                  	
                  	
                  		javax.jdo.option.ConnectionDriverName
                  		com.mysql.jdbc.Driver
                  	
                  	
                  	
                  	
                  		javax.jdo.option.ConnectionUserName
                  		root
                  	
                  	
                  	
                  	
                  		javax.jdo.option.ConnectionPassword
                  		000000
                  	
                  	
                  	
                  	
                  		hive.metastore.schema.verification
                  		false
                  	
                  	
                  	
                  	
                  		hive.metastore.event.db.notification.api.auth
                  		false
                  	
                  	
                  	
                  	
                  		hive.metastore.warehouse.dir
                  		/user/hive/warehouse
                  	
                  	
                  	
                  	
                      	hive.cli.print.header
                  		true
                  	
                  	
                  	
                      	hive.cli.print.current.db
                  		true
                  	
                  	
                  	  
                  		hive.metastore.uris
                  		thrift://master:9083  
                  	  
                  	
                  
                  
                  6. 创建元数据库
                  # 进入 MySQL
                  mysql -uroot -p000000
                  # 创建元数据库(注意与 hive-site.xml 配置文件中连接的库保持一致)
                  create database if not exists metastore;
                  # 退出
                  quit;
                  
                  7. 初始化与启动
                  # 初始化 Hive 元数据库
                  $HIVE_HOME/bin/schematool -initSchema -dbType mysql -verbose
                  
                  Hive 搭建(将 MySQL 作为元数据库),第11张
                  8.检测运行是否正常

                  请先启动 Hadoop 集群。

                  # 进入 Hive
                  $HIVE_HOME/bin/hive
                  # 创建任意库,检测是否正常。
                  create database if not exists test;
                  
                  Hive 搭建(将 MySQL 作为元数据库),第12张

                  可以看到运行正常,这样我们的 Hive 就已经搭建完成啦!

                  三、扩展

                  配置 hiveserver2

                  1. 在 hive 的配置文件 hive-site.xml 中添加如下两项参数:

                    指定连接地址与端口。

                  		
                  		
                         		 hive.server2.thrift.port
                       		 10000
                  		
                  		
                      	
                         		hive.server2.thrift.bind.host
                         		master
                       	
                  		
                  		
                  	        	hive.users.in.admin.role
                  	        	root
                  			
                  

                  注意更换成你自己连接的主机地址。

                  1. 在 hadoop 的核心配置文件 core-site.xml 中添加如下两项参数:

                    指定集群可以连接的用户,我这里设置为 root 用户。

                    假如我想指定用户名为 master,则配置项中的 root 必须改为 master,如:hadoop.proxyuser.master.hosts。

                      
                      
                      	hadoop.proxyuser.root.hosts
                      	*
                      
                      
                     		hadoop.proxyuser.root.groups
                      	*
                      
                  

                  添加完成后注意分发该文件到其它机器,然后重启 Hadoop。

                  Hadoop 重启完成后,启动 hive 元数据服务与 hiveserver2 服务:

                  nohup hive --service metastore &
                  nohup hive --service hiveserver2 &
                  

                  进入 Hive,选择需要操作的库,设置权限为 admin

                  set role admin;
                  

                  连接测试:

                  连接你绑定的地址并根据提示输入 Hadoop 核心配置文件中指定的用户与其密码。

                  beeline
                  !connect jdbc:hive2://master:10000
                  根据提示输入账号密码(默认都为空,直接按回车跳过即可)
                  

                  Hive 搭建(将 MySQL 作为元数据库),在这里插入图片描述,第13张

                  连接时出现错误:User: xxx is not allowed to impersonate anonymous (state=08S01,code=0),显示该用户不被允许连接,这是因为在 Hadoop 的核心配置文件 core-site.xml 中没有指定该用户(上方有添加用户模板)或者指定后 Hadoop 集群没有重启,导致配置没有生效。


                  如果你在通过 hiveserver2 服务远程插入数据时出现如下错误:FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.StatsTask

                  解决方法:

                  在插入的目标库中设置属性 set hive.stats.autogather=false;,关闭配置自动统计列的统计信息。

                  使用 hiveserver2 服务时异常停止,JVM 内存溢出:

                  FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. Java heap space Exception in thread "HiveServer2-Handler-Pool: Thread-652" java.lang.OutOfMemoryError: GC overhead limit exceeded

                  解决方法:

                  修改 Hive 中 conf 目录下的 hive-env.sh 文件,将 export HADOOP_HEAPSIZE=1024 进行调整,可以修改为 4096,视情况而定;

                  Hive 搭建(将 MySQL 作为元数据库),在这里插入图片描述,第14张

                  保存退出,重新启动服务就可以啦。

                  字符集乱码解决

                  可以看我写的这篇文章:Hive 表注释乱码解决

网友评论

搜索
最新文章
热门文章
热门标签