安装和体验hive

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: Hive是种基于Hadoop的数据仓库工具,将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能,今天来一起部署和体验hive

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码): https://github.com/zq2599/blog_demos

关于hive

  • Hive是种基于Hadoop的数据仓库工具,将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

环境信息

  • 本文对应的环境信息如下:
  1. CentOS Linux release 7.5.1804
  2. JDK:1.8.0_191
  3. hadoop:2.7.7
  4. hive:1.2.2

hadoop的部署和启动

安装和配置MySQL(5.7.27版本)

  • MySQL用来存储元数据,我这里为了简化操作是在docker环境下部署的,一行命令即可:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=888888 -idt mysql:5.7.27
  • 进入mysql容器:
docker exec -it mysql /bin/bash
  • 进入容器后连接mysql,密码是888888
mysql -h127.0.0.1 -uroot -p
  • 新建名为hive的mysql账号:
CREATE USER 'hive' IDENTIFIED BY '888888';
  • 给hive账号授权访问(并且hvie账号还有权给其他账号授权):
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;
  • 刷新权限数据:
flush privileges;
  • 在宿主机的终端执行以下命令重启mysql服务:
docker exec mysql service mysql restart
  • 再次进入mysql容器,以hive账号的身份登录mysql:
mysql -uhive -p
  • 创建名为hive的数据库:
CREATE DATABASE hive;

安装hive

在这里插入图片描述
注意:接下来的操作用的账号都不是root,而是hadoop

  • 在hadoop账号的家目录下解压刚刚下载的apache-hive-1.2.2-bin.tar.gz文件,是个名为apache-hive-1.2.2-bin的目录;
  • 编辑hadoop账号的.bash_profile文件,增加一个环境变量,就是将刚刚解压出来的apache-hive-1.2.2-bin文件夹的完整路径:
export HIVE_HOME=/home/hadoop/apache-hive-1.2.2-bin
  • 修改完毕后,重新打开一个ssh连接,或者执行source ~/.bash_profile让环境变量立即生效;
  • 进入目录apache-hive-1.2.2-bin/conf/,用模板文件复制一份配置文件:
cp hive-default.xml.template hive-default.xml
  • 在此目录创建名为hive-site.xml的文件,内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://127.0.0.1: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>hive</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>888888</value>
  </property>
</configuration>

初始化和启动hive

  • 进入目录apache-hive-1.2.2-bin/bin,执行以下命令初始化:
./schematool -initSchema -dbType mysql
  • 操作成功后,控制台提示:
[hadoop@node0 bin]$ ./schematool -initSchema -dbType mysql
Metastore connection URL:     jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true
Metastore Connection Driver :     com.mysql.jdbc.Driver
Metastore connection User:     hive
Starting metastore schema initialization to 1.2.0
Initialization script hive-schema-1.2.0.mysql.sql
Initialization script completed
schemaTool completed
  • 在mysql上看一下,数据库hvie下建了多个表:
mysql> show tables;
+---------------------------+
| Tables_in_hive            |
+---------------------------+
| BUCKETING_COLS            |
| CDS                       |
| COLUMNS_V2                |
| COMPACTION_QUEUE          |
| COMPLETED_TXN_COMPONENTS  |
| DATABASE_PARAMS           |
| DBS                       |
| DB_PRIVS                  |
| DELEGATION_TOKENS         |
| FUNCS                     |
| FUNC_RU                   |
| GLOBAL_PRIVS              |
| HIVE_LOCKS                |
| IDXS                      |
| INDEX_PARAMS              |
| MASTER_KEYS               |
| NEXT_COMPACTION_QUEUE_ID  |
| NEXT_LOCK_ID              |
| NEXT_TXN_ID               |
| NOTIFICATION_LOG          |
| NOTIFICATION_SEQUENCE     |
| NUCLEUS_TABLES            |
| PARTITIONS                |
| PARTITION_EVENTS          |
| PARTITION_KEYS            |
| PARTITION_KEY_VALS        |
| PARTITION_PARAMS          |
| PART_COL_PRIVS            |
| PART_COL_STATS            |
| PART_PRIVS                |
| ROLES                     |
| ROLE_MAP                  |
| SDS                       |
| SD_PARAMS                 |
| SEQUENCE_TABLE            |
| SERDES                    |
| SERDE_PARAMS              |
| SKEWED_COL_NAMES          |
| SKEWED_COL_VALUE_LOC_MAP  |
| SKEWED_STRING_LIST        |
| SKEWED_STRING_LIST_VALUES |
| SKEWED_VALUES             |
| SORT_COLS                 |
| TABLE_PARAMS              |
| TAB_COL_STATS             |
| TBLS                      |
| TBL_COL_PRIVS             |
| TBL_PRIVS                 |
| TXNS                      |
| TXN_COMPONENTS            |
| TYPES                     |
| TYPE_FIELDS               |
| VERSION                   |
+---------------------------+
53 rows in set (0.00 sec)
  • 在目录/home/hadoop/apache-hive-1.2.2-bin/bin执行命令./hive即可启动;
  • 初始化和启动已经完成,接下来验证hive;

验证

  • 前面执行./hive之后,已进入了对话模式,输入以下命令创建名为test001的数据库:
CREATE database test001;
  • 选择该数据库:
use test001;
  • 创建一个名为test_table的表:
create table test_table(
id  INT,
word  STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY  '\t'
STORED AS TEXTFILE;
  • 新建一个ssh连接,创建名为hive_test.txt的文本文件,内容如下:
1    aaa
2    bbb
3    ccc
4    ddd
5    eee
6    fff
  • 回到和hive对话模式的控制台,输入以下命令,将上述文本文件的内容导入到test001.test_table表中:
LOAD DATA LOCAL INPATH '/home/hadoop/hive_test.txt' INTO TABLE test001.test_table;

控制台提示如下:

hive> LOAD DATA LOCAL INPATH '/home/hadoop/hive_test.txt' INTO TABLE test001.test_table;
Loading data to table test001.test_table
Table test001.test_table stats: [numFiles=1, totalSize=36]
OK
Time taken: 0.264 seconds
  • 执行select操作,可以看到数据已经全部入库:
hive> select * from test_table;
OK
1    aaa
2    bbb
3    ccc
4    ddd
5    eee
6    fff
Time taken: 0.453 seconds, Fetched: 6 row(s)
  • 执行group by查询:
select word,count(word) from test_table GROUP BY word;
  • 此时会启动一个job来完成上述查询,控制台输出如下:
hive> select word,count(word) from test_table GROUP BY word;
Query ID = hadoop_20191007190528_3bd50401-267b-4d75-8b08-17ead5f0d790
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Starting Job = job_1570427946161_0002, Tracking URL = http://node0:8088/proxy/application_1570427946161_0002/
Kill Command = /home/hadoop/hadoop-2.7.7/bin/hadoop job  -kill job_1570427946161_0002
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
2019-10-07 19:05:34,812 Stage-1 map = 0%,  reduce = 0%
2019-10-07 19:05:39,991 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.29 sec
2019-10-07 19:05:46,201 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 3.23 sec
MapReduce Total cumulative CPU time: 3 seconds 230 msec
Ended Job = job_1570427946161_0002
MapReduce Jobs Launched: 
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 3.23 sec   HDFS Read: 7000 HDFS Write: 36 SUCCESS
Total MapReduce CPU Time Spent: 3 seconds 230 msec
OK
aaa    1
bbb    1
ccc    1
ddd    1
eee    1
fff    1
Time taken: 18.614 seconds, Fetched: 6 row(s)
  • 至此,hive的安装和体验实战就完成了,希望本文能给一起学习hive的读者们一些参考。

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
Mac下安装hive
Mac下安装hive
196 0
|
21天前
|
SQL HIVE
Hive的安装
Hive的安装
19 1
|
4月前
|
SQL 分布式计算 Java
linux安装Hive详细步骤
【1月更文挑战第2天】linux安装Hive详细步骤
155 0
|
9月前
|
SQL 分布式计算 Ubuntu
基于Hadoop的数据仓库Hive安装
基于Hadoop的数据仓库Hive安装
204 0
|
5月前
|
SQL 分布式计算 关系型数据库
Hive安装
Hive安装
52 1
|
5月前
|
SQL 分布式计算 Hadoop
Hadoop学习笔记(HDP)-Part.15 安装HIVE
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
111 1
Hadoop学习笔记(HDP)-Part.15 安装HIVE
|
6月前
|
SQL 分布式计算 关系型数据库
Hive教程(02)- Hive安装
Hive教程(02)- Hive安装
57 0
|
7月前
|
SQL 分布式计算 关系型数据库
Hive-安装与配置(1)
Hive-安装与配置(1)
165 0
|
8月前
|
SQL 分布式计算 关系型数据库
大数据Hive安装与应用
大数据Hive安装与应用
117 0
|
9月前
|
SQL 分布式计算 关系型数据库
hadoop集群hive 的安装
hadoop集群hive 的安装
83 0