Hive(1)——安装

概念

基于Hadoop的一个数据仓库工具,可以将 结构化的数据文件 映射为一张表(类似于RDBMS中的表),并提供类SQL查询功能

Hive是由Facebook开源,用于解决海量结构化日志的数据统计。
Hive本质是:将 SQL 转换为 MapReduce 的任务进行运算,底层由HDFS来提供数据存储
可以将Hive理解为一个:将 SQL 转换为 MapReduce 任务的工具 ;

Hive的优缺点

  1. 优点
    学习成本低。Hive提供了类似SQL的查询语言,开发人员能快速上手;
    处理海量数据。底层执行的是MapReduce 任务;
    系统可以水平扩展。底层基于Hadoop;
    功能可以扩展。Hive允许用户自定义函数;
    良好的容错性。某个节点发生故障,HQL仍然可以正常完成;
    统一的元数据管理。元数据包括:有哪些表、表有什么字段、字段是什么类型

  2. 缺点
    HQL表达能力有限;
    迭代计算无法表达;
    Hive的执行效率不高(基于MR的执行引擎);
    Hive自动生成的MapReduce作业,某些情况下不够智能;
    Hive的调优困难

hivd架构图

解析器 (SQLParser) :使用第三方工具(antlr)将HQL字符串转换成抽象语法树(AST);对AST进行语法分析,比如字段是否存在、SQL语义是否有误、表是否存在;


编译器 (Compiler) :将抽象语法树编译生成逻辑执行计划;


优化器 (Optimizer) :对逻辑执行计划进行优化,减少不必要的列、使用分区等;


执行器 (Executr) :把逻辑执行计划转换成可以运行的物理计划;

Hive安装与配置

下载网址:http://archive.apache.org/dist/hive/

环境图解

软件linux126linux127linux128
Hadoop
MySql
Hive

MySQL安装

1、删除MariaDB

# 查询是否安装了mariadb
rpm -aq | grep mariadb
# 删除mariadb。-e 删除指定的套件;--nodeps 不验证套件的相互关联性
rpm -e --nodeps mariadb-libs

2、安装依赖
yum install perl -y
yum install net-tools -y

3、安装MySQL

# 接压缩
tar xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
# 依次运行以下命令
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm

4、启动数据库
systemctl start mysqld

5、查找root密码
grep password /var/log/mysqld.log



6、修改 root 口令

# 进入MySQL,使用前面查询到的口令
mysql -u root -p
# 设置口令强度;将root口令设置为12345678;刷新
set global validate_password_policy=0;
set password for 'root'@'localhost' =password('12345678');
flush privileges;


7、创建 hive 用户

-- 创建用户设置口令、授权、刷新
CREATE USER 'hive'@'%' IDENTIFIED BY '12345678';
GRANT ALL ON *.* TO 'hive'@'%';
FLUSH PRIVILEGES;

Hive 安装

安装步骤:
1、下载、上传、解压缩
2、修改环境变量
3、修改hive配置
4、拷贝JDBC的驱动程序
5、初始化元数据库

详情

#下载Hive软件,并解压缩
cd /opt/software
tar zxvf apache-hive-2.3.7-bin.tar.gz -C ../servers/
cd ../servers
mv apache-hive-2.3.7-bin hive-2.3.7

修改环境变量

# 在 /etc/profile 文件中增加环境变量

export HIVE_HOME=/opt/servers/hive-2.3.7
export PATH=$PATH:$HIVE_HOME/bin
# 执行并生效
source /etc/profile

设置属性

cd $HIVE_HOME/conf vi hive-site.xml 增加以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hive元数据的存储位置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://linux126:3306/hivemetadata?
createDatabaseIfNotExist=true&amp;useSSL=false</value>
<description>JDBC connect string for a JDBC
metastore</description>
</property>


<!-- 指定驱动程序 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC
metastore</description>
</property>

<!-- 连接数据库的用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore
database</description>
</property>

<!-- 连接数据库的口令 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>12345678</value>
<description>password to use against metastore
database</description>
</property>
<property>

<!-- 数据默认的存储位置(HDFS) -->
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the
warehouse</description>
</property>
<property>

<!-- 在命令行中,显示当前操作的数据库 -->
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Whether to include the current database in the
Hive prompt.</description>
</property>

<property>
<!-- 在命令行中,显示数据的表头 -->
<name>hive.cli.print.header</name>
<value>true</value>
</property>

<property>
<!-- 操作小规模数据时,使用本地模式,提高效率 -->
<name>hive.exec.mode.local.auto</name>
<value>true</value>
<description>Let Hive determine whether to run in local
mode automatically</description>
</property>
</configuration>

上述最后一个属性配置备注:当 Hive 的输入数据量非常小时,Hive 通过本地模式在单台机器上处理所有的
任务。对于小数据集,执行时间会明显被缩短。当一个job满足如下条件才能真正使
用本地模式:
job的输入数据量必须小于参数:hive.exec.mode.local.auto.inputbytes.max
(默认128MB)
job的map数必须小于参数:hive.exec.mode.local.auto.tasks.max (默认4)
job的reduce数必须为0或者1

验证安装成功

linux命令 输入hive

hive

初始化hive数据

登录mysql

create database hivemetadata;

linux126上执行linux命令

schematool -dbType  mysql -initSchema

改变Hive的日志文件位置

Hive的log默认存放在 /tmp/root 目录下(root为当前用户名);这个位置可以修改

vi $HIVE_HOME/conf/hive-log4j2.properties
# 添加以下内容:
property.hive.log.dir = /opt/servers/hive-2.3.7/logs

添加第三方用户使用hive(Hadoop)

生产环境中你很少有机会用root用户操作

groupadd hadoop

# -m:自动建立用户的登入目录
# -g:指定用户所属的起始群组
# -G<群组>:指定用户所属的附加群组
# -s:指定用户登入后所使用的shell

useradd -m hadoop -g hadoop -s /bin/bash
passwd hadoop


visudo
# 在100行后添加。允许用户执行sudo,免密
hadoop ALL=(ALL) NOPASSWD:ALL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值