Hive数据库项目搭建

打印 上一主题 下一主题

主题 548|帖子 548|积分 1644

目次

一、Apache Hive 概述(重要)
二、 模拟实现Hive功能(明白)
hive
如何将hdfs上的数据转为结构化的表数据?
三、 Hive根本架构(重要)
四、Hive部署(了解)
Hive的三种安装模式
五、 Hive初体验(了解)
六、Hive客户端(重要)
6-1 本地使用
6-2 远程使用
七、 Datagrip使用(掌握)
使用Datagrip连接Hive
八、hive
的数据库操纵
数据库创建
九、hive
的数据表操纵
9-1 建表语句


一、Apache Hive 概述(重要)

Hive是一个SQL转化转化工具,将SQL的计算转为MapReduce的计算,让开辟人员更加方便进行大数据开辟
  1. select count(*) from stu
复制代码

二、 模拟实现Hive功能(明白)

hive
如何将hdfs上的数据转为结构化的表数据?


   一张表的数据构成
  1-表的元数据 描述表的根本信息
  表名字,字段名,字段范例,字段约束
  2-表的行数据
  表中每一行的数据内容
  表名:tb_stu
id intname varchar(20)gander varchar(20)1张三男2李四男3王五男   在mysql,oracle等数据库中,表的元数据和行数是数据库同一管理
    在hive
中表的元数据和行数据由metastore和hdfs共同管理
  表的元数据由metastore管理存储
  行数据由hdfs管理存储
  三、 Hive根本架构(重要)


   

  • 三种客户端模式:
  

  • 命令行模式 hive

  • 第三方服务(要遵照jdbc协议) : java database connection datagrip beeline

  • web页面: 几乎不用
  


  

  • 帮助我们查询元数据
  

  • HiveDriver hive
    驱动
  

  • 分析sql语句
  • 制定实利用命
  • 提交mr使命
  • 优化实验方案
  

  • 实验计算使命
  

  • 向yarn申请资源
  • 从hdfs中提取数据
  留意: hive
driver支持多种计算引擎, 例如 MapReduce Tez Spark
  四、Hive部署(了解)

前提 : hadoop 服务 和 mysql 服务可以正常使用.
Hive的三种安装模式



  • ==内嵌模式==(体验)
    1. 1、元数据存储在内置的derby
    2. 2、不需要单独配置metastore 也不需要单独启动metastore服务
    3. 安装包解压即可使用。
    4. 适合测试体验。实际生产中没人用。适合单机单人使用。
    复制代码

  • ==本地模式==(测试)
    1. 1、元数据使用外置的RDBMS,常见使用最多的是MySQL。
    2. 2、不需要单独配置metastore 也不需要单独启动metastore服务
    3. 缺点:
    4. 如果使用多个客户端进行访问,就需要有多个Hiveserver服务,此时会启动多个Metastore
    5. 有可能出现资源竞争现象
    复制代码

  • ==远程模式==(开辟) 知道这种模式就可以了
    1. 1、元数据使用外置的RDBMS,常见使用最多的是MySQL。
    2. 2、metastore服务单独配置  单独手动启动  全局唯一。
    3. 这样的话各个客户端只能通过这一个metastore服务访问Hive.
    4. 企业生产环境中使用的模式,支持多客户端远程并发操作访问Hive.
    5. 也是我们课程中使用的模式。
    复制代码

  • 对比
       metadata存储在哪metastore服务如何内嵌模式Derby不必要配置启动本地模式MySQL不必要配置启动==远程模式====MySQL====单独配置、单独启动==
在公共服务中已经将hive
部署完成
Hive服务是单机服务,但是,可以进行分布式存储和分布式计算 (基于hdfs和MapReduce)

hive
部署完成后,只有node1可以启动服务,但是node2,node3....都可以使用hive
服务,由于其可以使用客户端远程链接node1上的服务.



五、 Hive初体验(了解)

先将同一大数据环境读取快照到07位置

hive
依靠于hadoop的功能才气正常使用,所以启动hive
前必须先启动hadoop.
  1. start-all.sh
复制代码
查抄mysql服务是否可以使用
  1. systemctl status mysqld
复制代码
六、Hive客户端(重要)

6-1 本地使用

   使用一代客户端在本地服务器上连接hive
完成sql操纵
  必要先把metastore的元数据管理服务启动起来
  

  • 启动metastore服务
  1. hive
  2. --service metastore
复制代码

   现实开辟中让服务后台运行
  1. nohup hive
  2. --service metastore &
复制代码

   hive
使用java开辟,服务运行后可以jps查察java运行的程序
  


   使用一代客户端连接,不必要输入账号暗码
  1. hive
复制代码

6-2 远程使用

   可以在其他服务器中连接hive
进行相关操纵
  可以使用二代客户端进行连接,二代客户端支持jdbc,而且必要使用账号进行登录
  

  • 1-启动metastore服务

    • 管理元数据

  • 2-启动hive
    server2服务

    • 底层调用thriftserver
    • 运行服务支持jdbc连接

  1. nohup hive
  2. --service hive
  3. server2 &
复制代码
  留意不要重复启动
  

   hive
server2的启动时间会比力长,可以通过端口查察确认hive
server2是否真的启动
  hive
server2运行时会绑定10000端口
  1. lsof  -i:10000
复制代码


   使用hive
自带的二代客户端,通过jdbc方式连接hive

  1. beeline
复制代码



七、 Datagrip使用(掌握)

使用Datagrip连接Hive


  • 创建工程(起一个工程名称即可)
  • 绑定一个文件路径,用来存放我们誊写的sql语句



  • 连接hive
    服务
   前提: 启动metastore 和hive
server2服务
  Datagrip连接hive
服务,本质上链接的是hive
server2

  

填写信息

如果第一次使用必要下载驱动,安装驱动有2种方式
   

  • 直接点击链接界面左下方的download driver.
  
  
  2 自定义驱动位置,绑定本地驱动
  
  
  
  
  
  
  
  
  4.点解test connection验证连接,当连接成功时,点击ok就可以使用了


  • 创建一个文件,验证sql命令是否可用
创建文件

选择会话

输入sql语句并实验

八、hive
的数据库操纵


数据库创建

  1. CREATE DATABASE [IF NOT EXISTS] database_name
  2. -- 指定数据库在hdfs上路径位置
  3. [LOCATION hdfs_path]
  4. [] 括起来内容是可选的关键字语法
复制代码
  按照默认路径创建数据库
  1. -- 在hive
  2. 中不必要指定charsetcreate database itcast;-- 一但创建成功会在hdfs的默认路径下出现一个数据库目次 在hdfs的/user/hive
  3. /warehouswcreate database if not exists itcast;
复制代码


   指定hdfs的路径目次作为数据库目次
  1. -- 指定数据库在hdfs上的路径目次-- 1-现在hdfs上创建一个空的数据库目次-- 2-指定该空目次作为hive
  2. 数据库的数据目次create database itheimalocation '/itheima';
复制代码



   数据库的其他操纵
  1. -- use 切换数据库
  2. use itcast;
  3. use itheima;
  4. -- 删除数据库  将 hdfs上的数据库目录一并删除
  5. -- drop database itcast;
  6. -- drop database itheima;
  7. -- 如果数据库已经存在表数据,则需要强制删除  在有数据的情况下不要删库
  8. -- drop database itcast cascade ;
  9. -- 查看数据库信息
  10. desc database itheima;
  11. -- 查看建库语句
  12. show create database itcast;
复制代码
九、hive
的数据表操纵


9-1 建表语句

  1. CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note:
  2.   [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])]
  3.   [COMMENT table_comment]
  4.   [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  5.   [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  6.   [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive
  7.      ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
  8.      [STORED AS DIRECTORIES]
  9.   [
  10.    [ROW FORMAT row_format]
  11.    [STORED AS file_format]
  12.      | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
  13.   ]
  14.   [LOCATION hdfs_path]
  15.   [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
  16.   [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)
  17.   
复制代码
  根本语法
  1. create table  [库名].表名(
  2.         字段 字段类型
  3. );
复制代码
  1. -- 表的根本创建-- 表创建成功后会在对应数据库目次下创建一个表目次create table itcast.tb_stu(    id int,    -- 在hive
  2. 中字符范例使用string    name string,    gender string,    age int,    create_time date,    -- decimal 范例表示小数  10 整数部分的个数+小数据部分的个数   2 表示小数位数    height decimal(10,2));desc database itcast;create table itheima.tb_goods(    id int,    name string,    price decimal(10,2),    create_time date);desc database itheima;
复制代码
  表数据写入和查询
  1. -- 表数据写入
  2. -- 数据是文件的方式存储在对应的表目录下
  3. insert into itcast.tb_stu values(1,'张三','男',20,'2023-10-10',178.23),(2,'李四','男',21,'2023-10-11',175.23);
  4. -- 查看表数据
  5. select * from itcast.tb_stu;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表