1.Hive基本信息

  • 1.官网:http:// hive.apache.org
  • 2. Facebook(开源) : 去解决海量
  • 3. 构建在hadoop之上的数据仓库
  • hdfs :hive的数据是存储在hdfs之上的
  • yarn :hive的作业可以跑在yarn之上的
  • mapreduce :hive的作业可以用MR的方式去运行
  • 4. 如何使用
  • 1. 定义了一种类sql的语言 : 类似sql又不完全相同
  • 2. 适用于离线/批处理
  • 3. 开发就是sql => mr作业 =>yarn上去运行
  • Hive底层引擎
  • MR : SQL  => MR  (默认)
  • Tez : SQL  => Tez
  • Spark : SQL  => Spark

    spqrkaql 去处理hive里面的数据

    hive on spark  => hive的引擎是spark (生产上不多用)
    spark on hive  => sparksql 查询 hive 里面的表
  • 4. 
  • 5.版本介绍
  • x.y.x
  • x 大版本
  • y  小版本
  • z  小版本的bug fix
  • 6.hive的特点
  • 1.简单易用
  • 2. 扩展性好
  • 1. sql功能角度 :udf
  • 2. 数据存储 和 计算角度:hadoop进行拓展
  • 3. Metastore 【Hive的元数据管理】
  • sparksql presto impala 只要能够访问hive Metastore 就可以访问Hive表中的数据【可以共享Metastore】

2.Hive的架构

hive设置字段默认值时间戳_hive

hive设置字段默认值时间戳_hive_02

  • 元数据 :描述数据的数据
  • 表的名字
  • 字段的名i在
  • 字段的类型
  • 创建这
  • 数据存储地方
  • 常见问题
  • 1.共同点 : sql
  • 2. 延时性 : hive适用于离线计算 慢
  • 3. 事物 : 都支持
  • 4. 不用updata delete  (hive里面有 但不用)
  • 5. 分布式 都支持
  • 6. 成本 :廉价 
  • 数据体量 :量很大

3.Hive部署

hive设置字段默认值时间戳_大数据_03

  • 1.上传 rz
  • 2.解压 [hadoop@bigdata13 software]$ tar -zxvf ./apache-hive-3.1.2-bin.tar.gz -C ~/app/
  • 3.软连接:[hadoop@bigdata13 app]$ ln -s ./apache-hive-3.1.2-bin/ hive
  • 3.配置环境变量
  • 路径:/home/hadoop/app/hive/bin
    
    [hadoop@bigdata13 bin]$ vim ~/.bashrc
    #HIVE_HOME
    export HIVE_HOME=/home/hadoop/app/hive
    export PATH=${PATH}:${HIVE_HOME}/bin
    •  source ~/.bashrc
  • 配置 hive 元数据库 【hive 整合MySQL】
    • 路径:/home/hadoop/app/hive/conf
      [hadoop@bigdata13 conf]$ cp hive-default.xml.template hive-site.xml  
      [hadoop@bigdata13 conf]$ vim hive-site.xml  【清空其他内容 只留下面diamante】
    • <configuration>
      <property>
              <name>javax.jdo.option.ConnectionURL</name>
              <value>jdbc:mysql://bigdata13:3306/hive?createDatabaseIfNotExist=true</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>123456</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>
  • 把mysql驱动包 放置 hive lib下面
  • hive设置字段默认值时间戳_大数据_04


  • 初始化元数据库 
            schematool -dbType mysql -initSchema
  • Hive 默认是有一个数据库(hive)存在的 :default
  • hive设置字段默认值时间戳_大数据_05


4.入门

  • 1.mysql> select *  from VERSION;
  • 2.创建一张表
  • 创建表:create table test(name string);
  • 插入数据:insert into test values ('罗子岱');
  • hive 数据有两种:
  • 1.元数据 =》 MySQL 
  • TBLS 存的是Hive里面表的信息
  • DBS  存的是Hive 数据库相关的信息
  • COLUMNS_V2 存的是Hive table里面的字段信息
  • DATABASE_PARAMS 存的是Hive 数据库相关的信息
  • 2.table 数据 =》 存在hdfs 
  • hdfs://bigdata13:9000/user/hive/warehouse
  • 一个hive表 会被拆分成N个表在mysql里面进行存储
  • hive 运行的日志在 /tmp/hadoop/hive.log 中
路径:/home/hadoop/app/hive
[hadoop@bigdata13 hive]$ mkdir logs

路径:/home/hadoop/app/hive/conf
[hadoop@bigdata13 conf]$ cp hive-log4j2.properties.template hive-log4j2.properties
[hadoop@bigdata13 conf]$ vim hive-log4j2.properties
修改路径
property.hive.log.dir = /home/hadoop/app/hive/logs/
  • 3. 配置Hive参数 
  • 1.Command Line Interface 【命令行显示相关参数】
  • hive.cli.print.header
  • hive.cli.print.current.db
    显示数据库名
  • hive.metastore.warehouse.dir 【了解 default数据库默认存储位置】
  • 2.如何查看参数默认值?
            set key; 查看参数默认值
            set key=value; 设置参数的值
  • 3.参数配置优先级: 
  • 1.session  设置参数 【仅仅是当前session有效】
  • 2.hive-site.xml 【全局生效的】
<property>
        <name>hive.cli.print.header</name>
        <value>true</value>
</property>
<property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
</property>
  • 3.hive --hiveconf hive.cli.print.current.db=false;  => 【当前session有效】
  •   hive -help : 
            -e sql 语句
            -f sql文件
//无需进入hive内就可以查询表格
[hadoop@bigdata13 ~]$ hive -e "select *  from test"
//编辑脚本查询表
[hadoop@bigdata13 ~]$ vim test1.sql
select * from test;
[hadoop@bigdata13 ~]$ hive -f ./test1.sql
  • 调度平台:crontab 、azkanban、xxl
  • DDL:Data Definition Language
  • Database: 
        hive 默认有一个数据库 default  路径:/user/hive/warehouse
  • 1.创建数据库
  • CREATE [REMOTE] (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
     [COMMENT database_comment]
     [LOCATION hdfs_path]
     [MANAGEDLOCATION hdfs_path]
     [WITH DBPROPERTIES (property_name=property_value, ...)];
//创建数据库
hive (default)> create database bigdata_hive;
  • 创建到其他路径
     create database  bigdata_hive2  LOCATION '/data/bigdata_hive2';
  • 创建表 加参数
    create database  bigdata_hive3 WITH DBPROPERTIES ('creator'='doublehappy', 'create_dt'="2099-11-29");
  • 2.查看数据库
  • show databases;
  • show databases like "bigdata_hive*"
  • desc database  bigdata_hive3;
  • desc database EXTENDED bigdata_hive3;