0


大数据环境搭建(一)-Hive

1 hive介绍

由Facebook开源的,用于解决海量结构化日志的数据统计的项目

本质上是将HQL转化为MapReduce、Tez、Spark等程序

Hive表的数据是HDFS上的目录和文件

Hive元数据 metastore,包含Hive表的数据库、表名、列、分区、表类型、表所在目录等。

根据Hive部署模式(嵌入、本地、远程)的不同,元数据存储的位置也不同,一般是远程方式多用户访问,元数据存储MySQL中。

用户通过客户端(CLI、JDBC/ODBC) 向Hive提交SQL语句执行任务,大致会做如下操作:

  • 提交SQL给Driver
  • 将SQL转换为抽象语法树(AST),使用Hive的元数据进行校验
  • 将抽象语法树转换为逻辑计划
  • 将逻辑计划转换为物理计划
  • 执行物理计划,返回结果给客户端

2 CentOS安装MySQL 存储Hive元数据

MySQL部署在bd-centos01节点

添加mysql的yum源

下载mysql源安装包,MySQL官网的YUM源地址(http://dev.mysql.com/downloads/repo/yum/

# wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安装mysql源

# yum localinstall mysql57-community-release-el7-8.noarch.rpm

检查mysql源是否安装成功

# yum repolist all | grep mysql
安装、启动mysql服务
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# yum -y install mysql-community-server
# systemctl start mysqld
# systemctl enable mysqld
修改root本地登录密码

获取临时密码

$ grep 'temporary password' /var/log/mysqld.log
2019-06-17T08:07:04.775619Z 1 [Note] A temporary password is generated for root@localhost: 6?qrG;ClOP7A

登录

$ mysql -u root -p

修改密码

mysql> set password = password("密码");

*5.5+版本要求密码:字母大小写、数字、特殊字符*

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> alter user 'root'@'localhost' identified by '密码';
Query OK, 0 rows affected (0.00 sec)
添加远程登录用户
mysql> grant all privileges on *.* to 'hadoop'@'%' identified by '密码' with grant option;
mysql> flush privileges;
mysql> quit;

3 hive环境搭建

先安装启动hadoop

参考 Hadoop环境安装

安装
$ tar-zxf  hive-3.1.3.tar.gz -C /opt/modules/
$ mv /opt/modules/apache-hive-3.1.3-bin/ /opt/modules/hive-3.1.3
配置
  • 配置hive-site.xml$ cd /opt/modules/hive-3.1.3/$ vi conf/hive-site.xml添加如下内容<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://bd-centos01:3306/metastore?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;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>hadoop</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>mysql中添加的hadoop用户的密码</value></property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></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>
  • 配置 hive-log4j.properties$ cp conf/hive-log4j2.properties.template conf/hive-log4j2.properties$ vi conf/hive-log4j2.propertie修改为property.hive.log.dir = /opt/modules/hive-3.1.3/${sys:user.name}
  • 配置hive-env.sh$ cp conf/hive-env.sh.template conf/hive-env.sh$ vi conf/hive-env.sh修改为HADOOP_HOME=/opt/modules/hadoop-3.3.4export HIVE_CONF_DIR=/opt/modules/hive-3.1.3/conf
  • 添加mysql驱动$ mv ~/software/mysql-connector-java-5.1.46.jar /opt/modules/hive-3.1.3/lib/
初始化metadata
$ bin/schematool -initSchema -dbType mysql -verbose
通过本地客户端访问
$ bin/hive
hive (default)>show databases;

4 开启hiveserver2服务

自己本地验证的集群可以配置

hiveserver2依赖Hadoop提供的 代理用户功能, 可以允许多个用户远程连接访问(beeline,jdbc等)

修改配置文件

  • 修改${HADOOP_HOME}/core-site.xml注意配置分发到所有节点<property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value></property><property><name>hadoop.proxyuser.hadoop.users</name><value>*</value></property>
  • 修改${HIVE_HOME}/hive-site.xml<property><name>hive.server2.thrift.bind.host</name><value>bd-centos01</value></property><property><name>hive.server2.thrift.port</name><value>10000</value></property>
  • 加载hadoop配置在${HADOOP_HOME}下执行$ bin/hdfs dfsadmin -refreshSuperUserGroupsConfiguration$ bin/yarn rmadmin -refreshSuperUserGroupsConfiguration
  • 启动hiveserver2服务$ bin/hive --service hiveserver2
  • 连接可通过jdbc、beeline等方式连接$ bin/beeline -u jdbc:hive2://bd-centos01:10000 -n hadoop

5 metastore服务

Hive的元数据服务为Hive CLI、Hiveserver2提供元数据访问。Hive的3种运行模式: 嵌入模式、本地模式元数据服务都嵌入Hive服务中,不需要额外启动,上面的配置,meatastore是本地模式。生产一般是远程模式,将metastore服务独立启动。根据hive.metastore.uris 参数值来判断,如果不为空则为远程模式,需要额外启动元数据服务。

自己本地验证的集群可以配置

下面是 metastore远程模式的配置

  • 修改配置${HIVE_HOME}/hive-site.xml<property><name>hive.metastore.uris</name><value>thrift://bd-centos01:9083</value></property>
  • 启动metastore服务后续必须启动该服务,才能访问hive$ bin/hive --service metastore
  • beeline远程连接,输入密码$ beeline -u jdbc:hive2://bd-centos01:10000 -n hadoop -p

在这里插入图片描述

标签: 大数据 hive hadoop

本文转载自: https://blog.csdn.net/qq_33256751/article/details/136013915
版权归原作者 xfchn多多学习学习 所有, 如有侵权,请联系我们删除。

“大数据环境搭建(一)-Hive”的评论:

还没有评论