hive的介绍及安装

本文详细介绍了Hive数据仓库的概念、架构与安装部署流程。涵盖了Hive的基本组件,如CLI、Client和WUI,以及元数据存储、HQL查询处理等关键技术点。此外,还深入探讨了单用户模式和多用户远程模式下的部署方法。

hive

  • hive简介

    hive的产生
        非java编程者对hdfs的数据做mapreduce操作
    什么是hive
        Hive : 数据仓库。
        Hive:解释器,编译器,优化器等。
        Hive 运行时,元数据存储在关系型数据库里面。
    
  • hive架构

    用户接口
        CLI,Client 和 WUI。
            CLI
                其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。
            Client
                Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 
            WUI
                WUI是通过浏览器访问Hive。
    元数据的存储
        Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
    解释器、编译器、优化器
        解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
    数据的存储
        Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapRedcue任务)。
    补充
        编译器
            编译器将一个Hive SQL转换操作符
        操作符
            操作符是Hive的最小的处理单元
            每个操作符代表HDFS的一个操作或者一道MapReduce作业
            图
        ANTLR词法语法分析工具解析hql
            EL表达式是用ANTLR解析的
            图
    
  • hive集群的三种模式

    划分依据
        元数据的存放及管理
    本地模式
        local模式。
        此模式连接到一个In-memory 的数据库Derby,一般用于Unit Test。
    
    单用户模式
        单用户模式。
        通过网络连接到一个数据库中,是最经常使用到的模式
    
    多用户远程模式
        远程服务器模式/多用户模式。
        用于非Java客户端访问元数据库,在服务器端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库
    
  • hive部署安装

    检查环境
        安装mysql
            使用yum安装
                yum  install mysql-server
            启动mysql服务
                service mysqld start
            设置开机启动
                chkconfig mysqld on
                chkconfig mysqld --list
        配置mysql
            修改权限
                进入mysql
                使用mysql库
                修改user表
                    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
                    使其可以进行外部访问mysql的全部表
                    删除表中的冲突信息
                        delete from user where host != '%';
                    刷新权限
                        flush privileges;
        退出再登录
    
  • 启动hadoop

        启动zookeeper
            zkServer.sh start
            zkServer.sh status
        启动journalnode
            hadoop-deamon.sh start journalnode
        启动NameNode
            hadoop-daemon.sh start namenode
        同步NameNode
            hdfs namenode -bootstrapStandby
        格式化zkfc
            hdfs zkfc -formatZK
        启动集群
            start-dfs.sh
            start-yarn.sh
            start-all.sh
        启动resourcemanager
            yarn-daemon.sh start resourcemanager
        通过jps和浏览器检查集群启动情况
    
  • 单用户模式

        安装hive
            上传压缩包
            修改/etc/profile环境变量
                按tab检查是否生效
            配置文件
                重命名配置文件
                将原有配置删除
                    :.,$-1d
                加入现有配置文件
                    表的存放:
    
                    元数据是否自身管理:
    
                    mysql连接配置:
    
            jar包
                将mysql的驱动包放在lib下
                同步hadoop和hive的jline包
            启动hive并验证
            注意点
                地址和端口号
                数据库的用户的密码
    
  • 多用户模式

        上传压缩包
        修改/etc/profile环境变量
            按tab检查是否生效
        配置文件
            服务端
                文件存放路径
    
                mysql配置
    
            客户端
                文件存放路径
    
                是否开启本地
    
                服务端的地址和端口
    
        jar包
            服务端
                只需要mysql驱动包
            客户端
                只需要同步jline包
        开启
            先开服务端
                hive --service metastore
            再开客户端
        注意点
            地址和端口号
            数据库的用户的密码
    
  • hive SQL

    hive的官网
        hive.apache.org
    
    DDL
        创建表
            hive内部表
                删除表时,元数据与数据都会被删除
            hive外部表
                删除外部表只删除metastore的元数据,不删除hdfs中的表数据
            使用like建表
                CREATE TABLE empty_key_value_store LIKE key_value_store;
            使用as select建表
                CREATE TABLE new_key_value_store 
                      AS
                    SELECT columA, columB FROM key_value_store;
        分区
            必须在表定义时指定对应的partition字段
                单分区建表语句
                    单分区表,按天分区,在表结构中存在id,content,dt三列。
                    以dt为文件夹区分
                双分区建表语句
                    双分区表,按天和小时分区,在表结构中新增加了dt和hour两列。
                    先以dt为文件夹,再以hour子文件夹区分
            Hive添加分区表语法
                表已创建,在此基础上添加分区
                ALTER TABLE day_table ADD PARTITION (dt='2008-08-08', hour='08')
            Hive删除分区语法
                用户可以用 ALTER TABLE DROP PARTITION 来删除分区。
                内部表中、对应分区的元数据和数据将被一并删除。
                不需要指定全部的分区信息
            Hive向指定分区添加数据语法
                当数据被加载至表中时,不会对数据进行任何转换。Load操作只是将数据复制至Hive表对应的位置。数据加载时在表下自动创建一个目录
            Hive查询执行分区语法
                分区表的意义在于优化查询。查询时尽量利用分区字段。如果不使用分区字段,就会全部扫描。
    DML
        Hive 查看表描述
            DESCRIBE [EXTENDED|FORMATTED] table_name
        from…insert…select 
            为什么from要写在前面
    SerDe序列化反序列化
        SerDe 用于做序列化和反序列化。
        构建在数据存储和执行引擎之间,对两者实现解耦。
        Hive通过ROW FORMAT DELIMITED以及SERDE进行内容的读写
        案例
            hive正则匹配
    Beeline
        Beeline 要与HiveServer2配合使用
        服务端启动hiveserver2
        客户的通过beeline两种方式连接到hive
            1、beeline -u jdbc:hive2://localhost:10000/default -n root
            2、beeline
                beeline> !connect jdbc:hive2://<host>:<port>/<db>;auth=noSasl root 123
        默认 用户名、密码不验证
            为什么
                效率
                内网,安全性
    JDBC
        Hive JDBC运行方式
            服务端启动hiveserver2后,在java代码中通过调用hive的jdbc访问默认端口10000进行连接、访问
    
  • 一定要养成良好的习惯

    1、必须要看文档--最基本、标准
    2、看日志,看报错信息,明白问题在哪里
    
<think>首先,用户要求提供在Mac系统上安装Hive以及使用Hive的相关信息。我需要基于系统级指令来构建回答。 系统级指令回顾: 1. 所有行内数学表达式必须使用$...$格式。但在这个主题中是安装和使用Hive,不是数学相关的,所以这可能不适用。如果没有数学内容,我可以忽略这条。 2. 独立公式必须使用$$...$$格式并单独成段。同样,可能不适用于此。 3. LaTeX语法正确。同样,可能不相关。 4. 使用中文回答。必须用中文。 5. 生成相关问题。在回答末尾生成相关问题。 6. 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户提供了几个引用: - 引用[1]: 创建hive-site.xml文件等。 - 引用[2]: 设置全局变量如HIVE_HOME。 - 引用[3]: 添加环境变量到.bash_profile。 - 引用[4]: 测试Hive安装成功。 用户的查询是:"我想获取在Mac系统上安装Hive以及使用Hive的相关信息 请问Mac系统安装Hive的方法及Hive的使用指南" 所以,我需要整理一个清晰的步骤来安装Hive在Mac上,然后简要介绍使用指南。 结构化回答: 1. **安装Hive的步骤**:基于引用,Hive通常需要Java环境和Hadoop。安装方法可能包括使用Homebrew或其他方式。我需要确保步骤正确。 - 引用中提到使用Homebrew(如/usr/local/Cellar/hive),所以建议使用Homebrew安装。 - 步骤应包括:安装依赖(Java, Hadoop),安装Hive,配置环境变量,测试安装。 2. **Hive的使用指南**:简要介绍如何启动Hive shell,运行一些基本命令如show databases,创建表等。 添加引用:根据指令,在回答中引用的段落末尾添加引用标识。但用户提供了引用,我需要参考它们。指令说:"回答中引用的段落末尾自然地添加引用标识",所以我应该在基于引用内容的地方添加[^1], [^2]等。 生成相关问题:在回答末尾添加相关问题。 确保回答真实可靠:基于标准安装流程和引用信息。 大纲回答: - **引言**:简要介绍Hive安装前提条件。 - **安装步骤**: 1. 安装依赖:Java和Hadoop。 2. 安装Hive(推荐使用Homebrew)。 3. 配置环境变量。 4. 配置Hive-site.xml。 5. 测试安装。 - **使用指南**: - 启动Hive shell。 - 基本命令示例。 - **相关问题**:生成3-4个相关问题。 添加引用: - 例如,当提到创建hive-site.xml时,添加[^1]。 - 当提到设置环境变量时,添加[^2]或[^3]。 最终,用中文回答。 </think>### Mac系统安装Hive的方法及使用指南 Hive是Apache Hadoop生态系统中的一个数据仓库工具,允许用户使用类似SQL的查询语言(HiveQL)来处理大数据。在Mac上安装Hive需要先安装Java和Hadoop环境。以下是基于标准流程和参考引用的详细步骤。安装前提:确保Mac已安装Homebrew(包管理工具),可通过终端运行 `brew --version` 检查。 #### 一、安装Hive的步骤 1. **安装依赖环境**: - **Java安装**:Hive需要Java 8或更高版本。使用Homebrew安装: ```bash brew install openjdk@11 ``` 安装后,设置JAVA_HOME环境变量(参考引用[2]和[3]的全局变量设置方法): ```bash echo &#39;export JAVA_HOME=$(/usr/libexec/java_home -v 11)&#39; >> ~/.bash_profile source ~/.bash_profile ``` - **Hadoop安装**:Hive依赖于Hadoop。使用Homebrew安装Hadoop: ```bash brew install hadoop ``` 配置Hadoop环境变量(类似引用[2]): ```bash echo &#39;export HADOOP_HOME=/usr/local/opt/hadoop&#39; >> ~/.bash_profile source ~/.bash_profile ``` 2. **安装Hive**: - 使用Homebrew安装最新稳定版: ```bash brew install hive ``` 安装完成后,Hive默认路径通常在 `/usr/local/Cellar/hive/`(具体版本号视安装而定,如引用[1]提到的路径)。 3. **配置环境变量**(关键步骤): - 编辑 `~/.bash_profile` 文件,添加Hive路径(参考引用[2]和[3]): ```bash vi ~/.bash_profile ``` 在文件中添加: ```bash export HIVE_HOME=/usr/local/opt/hive/libexec # 或根据实际路径调整,如引用[2]的示例 export PATH=$PATH:$HIVE_HOME/bin ``` 保存后生效: ```bash source ~/.bash_profile ``` 这确保Hive命令全局可用[^2][^3]。 4. **配置文件设置**: - 创建 `hive-site.xml` 文件(引用[1]中提到的方法): ```bash cd $HIVE_HOME/conf cp hive-default.xml.template hive-site.xml ``` 编辑 `hive-site.xml`,设置必要参数(如Hadoop路径),默认配置通常可直接使用。如果需要修改数据存储位置,可添加: ```xml <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> ``` 这确保Hive与Hadoop集成[^1]。 5. **测试安装**: - 启动Hive shell: ```bash hive ``` 运行基本命令测试,如显示数据库(参考引用[4]的测试方法): ```sql hive> SHOW DATABASES; ``` 预期输出类似: ``` OK default Time taken: 0.675 seconds, Fetched: 1 row(s) ``` 如果成功,表示安装完成[^4]。 #### 二、Hive的使用指南 安装完成后,您可以通过Hive shell或脚本执行查询。以下是一些常用操作: - **启动Hive shell**: ```bash hive ``` - **基本操作示例**: - 创建数据库: ```sql CREATE DATABASE test_db; ``` - 切换数据库: ```sql USE test_db; ``` - 创建表(示例表): ```sql CREATE TABLE users (id INT, name STRING); ``` - 插入数据: ```sql INSERT INTO TABLE users VALUES (1, &#39;Alice&#39;), (2, &#39;Bob&#39;); ``` - 查询数据: ```sql SELECT * FROM users; ``` - **退出shell**: ```sql quit; ``` **注意事项**: - Hive存储数据在HDFS上,确保Hadoop服务已启动(运行 `start-dfs.sh`)。 - 常见问题:安装失败时检查Java和Hadoop版本兼容性,或环境变量设置(使用 `echo $HIVE_HOME` 验证)。 - 性能优化:对于大数据处理,建议配置Hive Metastore或使用Tez引擎加速查询。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值