Hive 简介与安装

13 篇文章 0 订阅
10 篇文章 0 订阅

Hive

Hive的基本介绍

【概念】

  • Hive是构建在Hadoop之上的数据仓库平台
  • Hive是一个SQL解析引擎,它将SQL语句转译成MapReduce作业并在Hadoop上执行。
  • Hive表是HDFS的一个文件目录,一个表名对应一个目录名,如果有分区表的话,则分区值对应子目录名。
  • 其实质将hdfs文件内容变成了表的映射,然后通过mr查询。
  • 底层存储是HDFS,中间执行时MR,或可视为中转代理。

【官网】https://hive.apache.org/
【特点】适合处理大数据;速度一般或较慢(处理小数据);
【特性】

  1. 支持类SQL(HQL[Hiv Query Language] , 但与SQL不同);
  2. 支持大规模文件处理(MR并行计算);
  3. 没有和MR绑定,可支持MR,SPARK等框架;
  4. 存储是基于HDFS,执行基于MR,资源调度是通过yarn完成;

【拓展】 蜜蜂 ; 大象 ;
【环境】基于hadoop ;
【meta元数据库管理器】 Mysql
【版本说明】

  1. hive-2.x ------- hadoop 2.x;
  2. hive-3.x ------- hadoop 3.x

Hive 安装与部署

  1. 检查 Hadoop 环境是否正常;(hadoop version)
  2. 安装Mysql数据库及驱动(如何安装?) 备注:若安装mysql80,需重新下载对应的驱动包;
  3. Hive下载安装
    在这里插入图片描述
  • 下载并解压Hive,并简化hive的文件名
cd /home/hadoop/software     #切换到安装包的目录 
wget https://dlcdn.apache.org/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz  #下载hive
tar -zvxf apache-hive-2.3.9-bin.tar.gz #解压hive
mv apache-hive-2.3.9-bin  hive   #重命名
  1. Hive 环境变量设置
    修改环境变量
sudo vim /etc/profile
export LANG=zh_CN.UTF8  #编码支持中文
export HIVE_HOME=/home/hadoop/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/lib

让配置生效

source /etc/profile
  1. 下载mysql驱动 jar

https://dev.mysql.com/downloads/connector/j/
wget https://cdn.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.49.tar.gz

将 mysql-connector.jar放置到hive的lib目录下(驱动加载)

mv mysql-connector*.jar hive/lib
  1. 修改hive-site.xml
cd hive/conf

在mysql中创建好database:hivemeta2021

CREATE DATABASE IF NOT EXISTS hivemeta2021 # 数据库名
DEFAULT CHARACTER SET utf8; #数据哭字符编码

添加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.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value> <!-- mysql数据库密码 -->
    </property>
   <property>
        <name>javax.jdo.option.ConnectionURL</name>mysql
        <value>jdbc:mysql://192.168.16.3:3306/hivemeta2021?characterEncoding=utf-8&amp;useSSL=false</value><!-- mysql所在机器ip和数据库名称 -->
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name><!-- mysql驱动程序 -->
        <value>com.mysql.jdbc.Driver</value>
    </property>
        <!-- 到此结束代码 -->
  <property>
    <name>hive.exec.script.wrapper</name>
    <value/>
    <description/>
  </property>
</configuration>
  1. Hive启动与测试
    格式化
    启动hive前,要保证mysql,hadoop启动
start-all.sh #启动 hdfs,yarn管理器;

初始化失败检查要素:hive环境变量;hadoop是否启动;mysql是否能正常连接;

cd hive/bin
schematool -dbType mysql -initSchema  #初始化失败检查要素:hive环境变量;hadoop是否启动;mysql是否能正常连接;

成功提示

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/cyj/software/apache-hive-2.3.7-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/cyj/software/hadoop-2.7.7/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:	 jdbc:mysql://192.168.16.3:3306/hivemeta2021?characterEncoding=utf-8&useSSL=false
Metastore Connection Driver :	 com.mysql.jdbc.Driver
Metastore connection User:	 root
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.mysql.sql
Initialization script completed
schemaTool completed

启动hive,如果遇到非文件夹的报错,删除hdfs根目录中的文件

hive # 启动hive
  1. 创建hive数据库
hive>create database firsthdb;
hive>use firsthdb;
hive>create table firstable(num int ,name string);
hive>show tables;
hive>select count(*) from firstable;

打开mysql数据库,检查DBS元数据内容;
在这里插入图片描述

  • 导入数据
hive>create table employee(id int, name string,age int, tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;# ,表示分隔符
hive>load data local inpath '/home/hadoop/software/employee.txt' into table employee;
hive>select * from empolyee;
hive>load data inpath '/home/hadoop/software/employee01.txt' into table employee;#从hdfs上传文件

外部表;
内部表;
添加表分区;
复杂字段定义

# 1,Lilei,book-tv-code,beijing:chaoyang-shanghai:pudong
# 2,Hanmeimei,book-Lilei-code,beijing:haidian-shanghai:huangpu
hive>create table psn (id int,name string,hobbies ARRAY <string>,address MAP <string, string>) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '-'MAP KEYS TERMINATED BY ':'; 
  1. hive数据库操作——删除
hive>drop database testdb; #删除空数据库
hive>drop database cascade; #级联删除
hive>drop table test; #删除表
  1. 在hadoop2中查看网页中的/tmp目录出现下面的错误:
Permission denied: user=dr.who, access=READ_EXECUTE inode="/tmp"

修改hdfs的权限就好了。

$HADOOP_HOME/bin/hdfs dfs -chmod -R 755 /tmp  #chmode要有-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈勇劲

你的鼓励实我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值