大数据环境搭建(一)-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环境安装

安装
shell 复制代码
$ 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

    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.4
    export 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

    注意配置分发到所有节点

    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

    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

    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
相关推荐
fredinators15 分钟前
数据库专家
大数据·数据库
Q264336502325 分钟前
【有源码】基于Python与Spark的火锅店数据可视化分析系统-基于机器学习的火锅店综合竞争力评估与可视化分析-基于用户画像聚类的火锅店市场细分与可视化研究
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计
潘达斯奈基~1 小时前
spark性能优化1:通过依赖关系重组优化Spark性能:宽窄依赖集中处理实践
大数据·性能优化·spark
JosieBook1 小时前
【数据库】时序数据库选型指南:在大数据与工业4.0时代,为何 Apache IoTDB 成为智慧之选?
大数据·数据库·时序数据库
熊猫钓鱼>_>1 小时前
AI驱动的专业报告撰写:从信息整合到洞察生成的全新范式
大数据·人工智能·百度
TDengine (老段)10 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)10 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
字节数据平台11 小时前
火山引擎Data Agent再拓新场景,重磅推出用户研究Agent
大数据·人工智能·火山引擎
starfalling102411 小时前
【hive】一种高效增量表的实现
hive
顧棟13 小时前
【Yarn实战】Yarn 2.9.1滚动升级到3.4.1调研与实践验证
hadoop·yarn