一:Apache Hive 元数据
Hive Metadata
- Hive Metadata即Hive的元数据。
- 包含用Hive创建的database、table、表的位置、类型、属性、字段顺序类型等元数据。
- 元数据存储在关系型数据库中。如hive内置的Derby、或者第三方如MySQL等。
Hive Metastore
- Metastore即元数据服务。Metastore服务的作用是管理metadata元数据,对外暴露服务地址,让各种客户端通过连接metastore服务,由Metastore再去连接MySQL数据库来存取元数据。
- 有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore服务即可。某种程度上也保证了hive元数据的安全。
Metastore远程模式
- 在生产环境中,建议用远程模式来配置Hive Metastore。在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive。由于还可以完全屏蔽数据库层,因此这也带来了更好的可管理性、安全性。
二:Apache Hive 部署实战
安装前准备
- 由于Apache Hive 是一款基于Hadoop的数据仓库软件,通常部署运行在Linux系统之上。因此不管使用何种方式配置Hive Metastore,必须要先保证服务器的基础环境正常,Hadoop集群健康可用。
- 服务器基础环境:集群时间同步、防护墙关闭、主机Host映射、免密登录、JDK安装。
- Hadoop集群健康可用:启动Hive之前必须先启动Hadoop集群。特别要注意,需等待HDFS安全模式关闭之后再启动运行Hive。
- Hive不是分布式安装运行的软件,其分布式的特性主要借由Hadoop完成。包括分布式存储、分布式计算。
Hadoop与Hive整合
- 因为Hive需要把数据存储在HDFS上,并且通过MapReduce作为执行引擎处理数据。
- 因此需要在Hadoop中添加相关配置属性,以满足Hive在Hadoop上运行。
- 修改Hadoop中core-site.xml,并且Hadoop集群同步配置文件,重启生效。
<!-- 整合Hive --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property>
Mysql 安装
- 注意mysql只需要在一台机器安装并且需要授权远程访问。
- 卸载Centos7自带的mariadb
rpm -qa|grep mariadb rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
- 安装mysql
Mysql 下载地址 MySQL :: Download MySQL Community Server
选择 Red Hat Enterprise Linux / Oracle Linux
Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)
上传至服务器任意目录并解压 执行安装:yum -y install libaio 执行:rpm -ivh mysql-community-common-5.7.41-1.el7.x86_64.rpm mysql-community-libs-5.7.41-1.el7.x86_64.rpm mysql-community-client-5.7.41-1.el7.x86_64.rpm mysql-community-server-5.7.41-1.el7.x86_64.rpm - mysql初始化设置
#初始化 mysqld --initialize #变更所属组 chown mysql:mysql /var/lib/mysql -R #启动mysql systemctl start mysqld.service #查看生成的临时root密码 cat /var/log/mysqld.log [Note] A temporary password is generated for root@localhost:o+TU+KDOm004
-
修改root密码 授权远程访问 设置开机自启动
-
上传解压Hive安装包(node1安装即可)
Hive 下载地址 :Index of /apache/hive
解压:tar -zxf apache-hive-3.1.3-bin.tar.gz mv apache-hive-3.1.3-bin /usr/local/apache-hive-3.1.3-bin cd /usr/local/apache-hive-3.1.3-bin/lib rm -f guava-19.0.jar cp /usr/local/hadoop-3.3.4/share/hadoop/common/lib/guava-27.0-jre.jar ./ -
修改配置文件
hive-env.sh cd /usr/local/apache-hive-3.1.3-bin/conf/ mv hive-env.sh.template hive-env.sh vim hive-env.sh 底部插入: export HADOOP_HOME=/usr/local/hadoop-3.3.4 export HIVE_CONF_DIR=/usr/local/apache-hive-3.1.3-bin/conf export HIVE_AUX_JARS_PATH=/usr/local/apache-hive-3.1.3-bin/lib
hive-site.sh <configuration> <!-- 存储元数据mysql相关配置--> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>111111</value> </property> <!-- H2S运行绑定host--> <property> <name>hive.server2.thrift.bind.host</name> <value>node1</value> </property> <!-- 远程模式部署metastore metastore地址--> <property> <name>hive.metastore.uris</name> <value>thrift://node1:9083</value> </property> <!-- 关闭元数据存储授权--> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> </configuration>
-
上传mysql jdbc驱动到hive安装包lib下
Mysql驱动包下载 https://downloads.mysql.com/archives/c-j/ 下载: mysql-connector-java-5.1.49.tar.gz
-
初始化元数据
cd /usr/local/apache-hive-3.1.3-bin/bin ./schematool -initSchema -dbType mysql -verbos #初始化成功会在mysql中创建74张表
-
在hdfs创建hive存储目录
hadoop fs -mkdir /tmp hadoop fs -mkdir -p /user/hive/warehouse hadoop fs -chmod g+w /tmp hadoop fs -chmod g+w /user/hive/warehouse
-
启动hive
1.启动metastore服务 #前台启动 关闭ctrl+c /usr/local/apache-hive-3.1.3-bin/bin/hive --service metastore #前台启动开启debug日志 /usr/local/apache-hive-3.1.3-bin/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console #后台启动 进程挂起 关闭使用jps+kill -9 nohup /usr/local/apache-hive-3.1.3-bin/bin/hive --service metastore & 2.启动hiveserver2服务 nohup /usr/local/apache-hive-3.1.3-bin/bin/hive --service hiveserver2 & #注意 启动hiveserver2需要一定时间 不要启动之后立即beeline连接 可能连接不上 3.beeline 客户端连接 >拷贝node1安装包到beeline客户端机器上(node3) scp -r /usr/local/apache-hive-3.1.3-bin/ root@node3:/usr/local/ >连接访问 /usr/local/apache-hive-3.1.3-bin/bin/beeline beeline> ! connect jdbc:hive2://node1:10000 beeline> root beeline> 直接回车不要密码
三:Apache Hive 客户端使用
<1>Hive自带客户端