目次
一、Hive简介
二、体系结构
三、安装
1、内嵌模式
2、测试内嵌模式
3、本地模式--最常使用的模式
一、Hive简介
- Hive 是一个框架,可以通过编写sql的方式,自动的编译为MR任务的一个工具。
- 在这个世界上,会写SQL的人远远大于会写java代码的人,所以假如可以将MR通过sql实现,这个将是一个巨大的市场,FaceBook就这么干。(脸书)
- FaceBook --> Meta (元宇宙) --> 社交网站(校内网)
- 在大数据中,发展趋势:所有的技术全部都变为SQL。
复制代码- 1、Hive是一个数据仓库工具
- 2、可以将数据加载到表中,编写sql进行分析
- 3、底层依赖Hadoop,所以每一次都需要启动hadoop(hdfs以及yarn)
- 4、Hive的底层计算框架可以使用MR、也可以使用Spark、TEZ
- 5、Hive不是数据库,而是一个将MR包了一层壳儿。类似于一个中介。
复制代码 Hive官网地址:Apache Hive
GitHub地址: GitHub - apache/hive: Apache Hive
文档查看地址:GettingStarted - Apache Hive - Apache Software Foundation
现在最新的版本稳固版(realease):3.1.2
beta版本正在开发4.0
Hive自然的就是当做数据堆栈使用的。什么是数据堆栈?
数据堆栈:数据的堆栈,一般只要能存数据的软件都可以当做数据堆栈。
比如:开了一个超市,必须有一个堆栈,这个堆栈是不是可大可小。以前数据量特殊小的时间,一般都使用Oracle当做数据堆栈,如今企业中一般都使用大数据技术中 的Hive大概跟Hive类似的技术当做数据堆栈。
普通的堆栈:一般也是分类的,比如食品区、衣服区、电子产物区
数据堆栈:也是必要搭建的(分层),方便使用者从堆栈中快速的获取想要的数据。堆栈搭建的好欠好,就叫做建模。
二、体系结构
注意:
- 包罗*的全表查询,比如select * from table 不会生成MapRedcue任务
- 包罗*的limit查询,比如select * from table limit 3 不会生成MapRedcue任务
三、安装
分为三种:内嵌模式、本地模式、远程模式
Hive会自动检测Hadoop的环境变量,如有就必须启动Hadoop
将如今的高可用,举行一次快照,将整个集群规复到高可用之前的状态,方便学习。
1、内嵌模式
- 上传 压缩包 /opt/modules
- 解压:
- tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/installs/
- 重命名:
- mv apache-hive-3.1.2-bin/ hive
- 配置环境变量:vi /etc/profile
- export HIVE_HOME=/opt/installs/hive
- export PATH=$HIVE_HOME/bin:$PATH
- 刷新环境变量:
- source /etc/profile
- 配置hive-env.sh
- 进入这个文件夹下:/opt/installs/hive/conf
- cp hive-env.sh.template hive-env.sh
- 修改hive-env.sh 中的内容:
- export HIVE_CONF_DIR=/opt/installs/hive/conf
- export JAVA_HOME=/opt/installs/jdk
- export HADOOP_HOME=/opt/installs/hadoop
- export HIVE_AUX_JARS_PATH=/opt/installs/hive/lib
- 进入到conf 文件夹下,修改这个文件hive-site.xml
- cp hive-default.xml.template hive-site.xml
- 接着开始修改:
- 把Hive-site.xml 中所有包含${system:java.io.tmpdir}替换成/opt/installs/hive/tmp。如果系统默认没有指定系统用户名,那么要把配置${system:user.name}替换成当前用户名root。
复制代码 使用nodepad++,打开该文件,举行替换:
一个替换了4处
一个替换了3处
启动集群:
给hdfs创建文件夹:
- [root@yunhe01 conf] # hdfs dfs -mkdir -p /user/hive/warehouse
- [root@yunhe01 conf] # hdfs dfs -mkdir -p /tmp/hive/
- [root@yunhe01 conf] # hdfs dfs -chmod 750 /user/hive/warehouse
- [root@yunhe01 conf] # hdfs dfs -chmod 777 /tmp/hive
复制代码 初始化元数据,因为是内嵌模式,以是使用的数据库是derby
- schematool --initSchema -dbType derby
复制代码 在hive-site.xml中,3215行,96列的地方有一个非法字符
将这个非法字符,删除,保存即可。
必要再次举行元数据的初始化操作:
- schematool --initSchema -dbType derby
复制代码 提示初始化成功!
初始化操作要在hive的家目次执行,执行完毕之后,会出现一个文件夹:
测试是否成功:
- 输入hive 进入后,可以编写sql
- hive> show databases;
- OK
- default
复制代码 2、测试内嵌模式
- -- 进入后可以执行下面命令进行操作:
- hive>show databases; -- 查看数据库
- hive>show tables; -- 查看表
- -- 创建表
- hive> create table dog(id int,name string);
- hive> select * from dog;
- hive> insert into dog values(1,'wangcai');
- hive> desc dog; -- 查看表结构
- hive> quit; -- 退出
复制代码 但是内嵌模式有一个毛病:如果有一个窗口在使用你的hive,另一个窗口能进入,但是会报错!
3、本地模式--最常使用的模式
使用本地模式的最大特点是:将元数据从derby数据库,变为mysql数据库,并且支持多窗口同时使用。
第一步:检查你的mysql是否正常
第二步:删除以前的derby数据
- 进入到hive中,删除
- rm -rf metastore_db/ derby.log
复制代码 第三步:修改配置文件 hive-site.xml
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- --><configuration>
- <!--配置MySql的连接字符串-->
- <property>
- <name>javax.jdo.option.ConnectionURL</name>
- <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
- <description>JDBC connect string for a JDBC metastore</description>
- </property>
- <!--配置MySql的连接驱动-->
- <property>
- <name>javax.jdo.option.ConnectionDriverName</name>
- <value>com.mysql.cj.jdbc.Driver</value>
- <description>Driver class name for a JDBC metastore</description>
- </property>
- <!--配置登录MySql的用户-->
- <property>
- <name>javax.jdo.option.ConnectionUserName</name>
- <value>root</value>
- <description>username to use against metastore database</description>
- </property>
- <!--配置登录MySql的密码-->
- <property>
- <name>javax.jdo.option.ConnectionPassword</name>
- <value>123456</value>
- <description>password to use against metastore database</description>
- </property>
- <!-- 以下两个不需要修改,只需要了解即可 -->
- <!-- 该参数主要指定Hive的数据存储目录 -->
- <property>
- <name>hive.metastore.warehouse.dir</name>
- <value>/user/hive/warehouse</value>
- </property>
- <!-- 该参数主要指定Hive的临时文件存储目录 -->
- <property>
- <name>hive.exec.scratchdir</name>
- <value>/tmp/hive</value>
- </property>
- </configuration>
复制代码 将mysql的驱动包,上传至 hive 的lib 文件夹下
初始化元数据(本质就是在mysql中创建数据库,并且添加元数据)
- schematool --initSchema -dbType mysql
复制代码 测试:同时打开两个窗口都可以使用, 支持多个会话。
- create database mydb01;
- use mydb01;
- create table stu (id int,name string);
- insert 语句 走MR任务
- insert into stu values(1,'wangcai');
- select * from stu;
- select * from stu limit 10;
- 不走MR任务。
- 创建表的时候,varchar类型需要指定字符长度,否则报错!
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |