《Hadoop权威指南》 第17章 (上): Hive是啥 、Hive运行实例

------------恢复内容开始------------

《Hadoop权威指南》 第17章 关于Hive

定义: 信息平台可以描述为 "企业吸收、处理、生成信息的行为"与“帮助企业自身加速从经验数据中学习”的“中心”。

Hive简介

  1. Hive是一个建立在Hadoop集群上的数据仓库框架,方便对大规模HDFS数据集进行查询
  2. Hive是Apache项目之一,开源自FaceBook,可以作为一个通用、可伸缩的数据处理平台
  3. Hive可以把SQL查询转换成一系列在Hadoop集群上运行的作业,Hive把数据组织为表,通过这个方式为存储在HDFS上的数据赋予结构,比如元数据(表结构)就存储在metastore数据库中。

17.1 安装Hive

  • hive.apache.org/downloads.html 选择镜像下载 版本和Hadoop的大版本号一致即可
  • 解压,加进路径
tar xzf .....tar.gz
pwd
export HIVE_HOME=~/...-bin
export PATH=$PATH:$HIVE_HOME/bin

17.1.2 Hive的shell环境

  • 基本与mysql一致, hive 启动
  • 小插曲, hadoop需要先启动, ,sbin/hadoop-daemon.sh start ,然后 关闭安全模式hdfs dfsadmin -safemode leave
  • 然后还要先启动hive元数据服务,不然会报错
    HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  • 启动metadata, bin/hive --service metastore &
  • 发生新的异常 MetaException
    MetaException(message:Version information not found in metastore. )
  • 到 hive-site.xml中修改: hive.metastore.schema.verification设置成false
  • 发生新的问题,需要配置mysql,发生授权异常/版本兼容升级问题
    ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 42. The table is probably corrupted
    • 管理员身份启动nysql,mysql_upgrade -u root -p 13456 ,执行升级
  • 后续又是各种问题, 一路百度报错信息
  • 运行成功
hive> show tables;
OK
Time taken: 4.56 seconds
hive> show tables;
OK
Time taken: 0.022 seconds
hive> 

17.2 hive本地加载sql示例

  • 建表 create
  • 加载数据 load input
  • 查询 select

17.3.1 配置Hive

  • hive --service help 获取服务提示

17.3.2 Hive服务

17.3.3 Metastore

  • Metastore是hive元数据的集中存放地,包括服务和后台数据的存储。

17.4.1 读时模式和写时模式

  • 写时模式: 传统数据库, 表的模式在数据加载时候强制确定的,数据写入时会要求对照模式进行检查。有利于提升查询性能,可以方便对表中的列建立索引。
  • 读时模式: hive对数据的验证,放到了查询的时候进行验证; 加载速度很快,数据加载仅仅只是文件复制或者移动.

17.4.2 hive 更新、事务和索引

  • Hive更新,把新数据替换后放入新表实现
  • Hive 不使用索引:“全表扫描” 是常态,hive本就被设计为用MapReduce操作的HDFS数据
  • Hive 0.7.0 发布版本使用了标记锁和分区级锁,show locks获取一查询那些锁的信息
  • 目前hive的索引分为两类,紧凑型索引和位图型索引

猜你喜欢

转载自www.cnblogs.com/zhazhaacmer/p/12340307.html