hadoop基础之《(11)—整合hbase+phoenix+hive—安装hive》(代码片段)

csj50 csj50     2023-03-02     487

关键词:

一、什么是Hive

1、Hive简介
Hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。Hive主要是做海量数据的分析和计算的。

2、为什么会有Hive?它解决了什么问题?
下面通过一个案例,来快速了解一下Hive。
例如:需求,统计单词出现个数。
(1)在Hadoop中我们用MapReduce程序实现的,需要些Mapper、Reducer和Driver三个类,并实现对应逻辑,相对繁琐。
(2)如果通过Hive SQL实现,一行就搞定了,简单方便,容易理解。

3、Hive本质
Hive是一个Hadoop客户端,用于将HQL(Hive SQL)转化为MapReduce程序。
(1)Hive中每张表的数据存储在HDFS。
(2)Hive分析数据底层的实现是MapReduce(也可配置为Spack或者Tez)。
(3)执行程序运行在Yarn上。

二、Hive架构原理

1、架构图

2、服务
Metastore:存储元数据,表字段、表数据在hdfs上的路径等
HiveServer2:提供jdbc或odbc访问接口,提供用户认证功能
Hive Client:Hive客户端

3、执行流程
(1)用户创建table
(2)Metastore中记录对应表的路径
(3)在hdfs中映射表关系
(4)用户根据业务需求编写相应的HQL语句
(5)Driver翻译sql为MapReduce
(6)提交yarn执行
(7)将结果写入hdfs路径或临时表
(8)如果是查询语句,返回计算结果

4、用户接口:Client
CLI(command-line interface)、JDBC/ODBC。
说明:JDBC和ODBC的区别。
(1)JDBC的移植性比ODBC好。
(2)两者使用的语言不同,JDBC在Java编程时使用,ODBC一般在C/C++编程时使用。

5、元数据:Metastore
元数据包括:数据库(默认是default)、表名、表的拥有者、列/分区字段、表的类型(是否外部表)、表的数据所在目录等。
默认存储在自带的derby数据库中,由于derby数据库只支持单客户端访问,生产环境中为了多人开发,推荐使用MySQL存储Metastore,但是安装配置太麻烦。

6、驱动器:Driver
(1)解析器(SQLParser):将SQL字符串转换成抽象语法树(AST)。
(2)语义分析(Semantic Analyzer):将AST进一步划分为QueryBlock。
(3)逻辑计划生成器(Logical Plan Gen):将语法树生成逻辑计划。
(4)逻辑优化器(Logical Optimizer):对逻辑计划进行优化。
(5)物理计划生成器(Physical Plan Gen):根据优化后的逻辑计划生成物理计划。
(6)物理优化器(Physical Optimizer):对物理计划进行优化。
(7)执行器(Execution):执行该计划,得到查询结果并返回给客户端。

三、Hive安装

1、下载安装包

cd /tmp
wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /appserver
cd /appserver
mv apache-hive-3.1.3-bin/ hive

2、配置环境变量

vi /etc/profile
添加
export HIVE_HOME=/appserver/hive
export PATH=$PATH:$HIVE_HOME/bin
使配置生效
source /etc/profile

3、初始化元数据库(默认是derby数据库,不使用)
bin/schematool -dbType derby -initSchema
因为内嵌数据库,只能使用本机命令行客户端,不能使用外部JDBC/ODBC客户端。

四、Hive连接mysql

1、安装mysql
略过
搜索rpm包的网站:https://pkgs.org/

2、下载mysql驱动jar包
将mysql的JDBC驱动拷贝到hive的lib目录下。

cp /tmp/mysql-connector-j-8.0.32.jar $HIVE_HOME/lib

3、mysql中创建metastore数据库和hive用户

create database metastore default charset utf8mb4 collate utf8mb4_general_ci;
create user 'hive'@'%' identified by 'hive';
grant all privileges on metastore.* to 'hive'@'%';
flush privileges;

4、在$HIVE_HOME/conf目录下,建立hive-site.xml文件

cd /appserver/hive/conf
vi hive-site.xml
添加
<configuration>
  <!-- jdbc连接的URL -->
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://192.168.52.11:3306/metastore?serverTimezone=UTC</value>
    <description>
      JDBC connect string for a JDBC metastore.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
  </property>
  <!-- jdbc连接的Driver -->
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <!-- jdbc连接的username -->
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</description>
  </property>
  <!-- jdbc连接的password -->
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
  <!-- hive默认在HDFS的工作目录 -->
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>
</configuration>

5、初始化hive元数据库

bin/schematool -dbType mysql -initSchema

6、验证元数据是否配置成功

bin/hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/appserver/hive/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/appserver/hadoop/hadoop-3.3.4/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Hive Session ID = 17c34420-ff60-4aa8-975b-abd7e121e22a

Logging initialized using configuration in jar:file:/appserver/hive/lib/hive-common-3.1.3.jar!/hive-log4j2.properties Async: true
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
Hive Session ID = bd993361-f2c9-4cfc-8dff-3e1bf157edf9
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive> show databases;
OK
default
Time taken: 0.494 seconds, Fetched: 1 row(s)

7、使用hive

hive> create table stu(id int, name string);
OK
Time taken: 0.807 seconds
hive> insert into stu values(1,"ss");
Query ID = root_20230209122931_16eca7d9-d918-4d48-8611-02e51d6b3c9b
Total jobs = 3
Launching Job 1 out of 3
Number of reduce tasks determined at compile time: 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_1675910632302_0001, Tracking URL = http://hadoop001:8088/proxy/application_1675910632302_0001/
Kill Command = /appserver/hadoop/hadoop-3.3.4/bin/mapred job  -kill job_1675910632302_0001
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
2023-02-09 12:29:54,504 Stage-1 map = 0%,  reduce = 0%
2023-02-09 12:30:22,464 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.84 sec
2023-02-09 12:30:31,668 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 3.25 sec
MapReduce Total cumulative CPU time: 3 seconds 250 msec
Ended Job = job_1675910632302_0001
Stage-4 is selected by condition resolver.
Stage-3 is filtered out by condition resolver.
Stage-5 is filtered out by condition resolver.
Moving data to directory hdfs://hadoop001:8020/user/hive/warehouse/stu/.hive-staging_hive_2023-02-09_12-29-31_229_8346627652307208831-1/-ext-10000
Loading data to table default.stu
MapReduce Jobs Launched: 
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 3.25 sec   HDFS Read: 15184 HDFS Write: 235 SUCCESS
Total MapReduce CPU Time Spent: 3 seconds 250 msec
OK
Time taken: 65.381 seconds
hive> select * from stu;
OK
1	ss
Time taken: 0.516 seconds, Fetched: 1 row(s)

五、hive元数据库介绍

1、DBS表
存储数据库信息。

2、TBLS表
存储我们在hive中创建表的信息。

3、SDS表
存储建的表的位置信息。

4、COLUMNS_V2表
存储和字段相关的信息。

大数据学习系列之六-----hadoop+spark环境搭建

...Base,并且测试成功了。在之前的大数据学习系列之一-----Hadoop环境搭建(单机):http://www.panchengming.com/2017/11/26/pancm55/中成功的搭建了Hadoop 查看详情

hbase入门基础教程hbase之单机模式与伪分布式模式安装

...界面。搭建HBase伪分布式环境的前提是我们已经搭建好了Hadoop完全分布式环境,搭建Hadoop环境请参考:【Hadoop入门基础教程】4、Hadoop之完全分布式环境搭建开发环境硬件环境:CentOS 6.5服务器4台(一台为Master节点,三台为Slave... 查看详情

hadoop系列之hbase环境搭建和使用

HBase环境准备HBase下载地址:http://archive.apache.org/dist/hbase/tar-zxvfhbase-1.4.11-bin.tar.gz#解压hbasevim/etc/profile#配置hbase环境变量在最后加上exportPATH=$PATH:/usr/local/soft/hbase-1.4.11/binsource/etc/pr 查看详情

hadoop系列之hbase环境搭建和使用

...soft/hbase-1.4.11/binsource/etc/profile#重启,使hbase生效chown-Rhadoophbase-1.4.11#给hbase赋hadoop权限bin/hbaseversion#查看hbase是否配置成功,若成功,则显示hbase的版本信息HBase配置hbase单机模式下不需要hadoop,伪分布式模式和分布... 查看详情

hbase系列之初识hbase

一、概述  在hadoop生态圈里,hbase可谓是鼎鼎大名。江湖传言,hbase可以实现数十亿行X数百万列的实时查询,可横向扩展存储空间。如果传言为真,那得好好了解了解hbase。本文从概念上介绍hbase,稍微有点抽象,但这是学习hba... 查看详情

hbase编程api入门之get

    前面是基础。HBase编程API入门之put packagezhouls.bigdata.HbaseProject.Test1;importjavax.xml.transform.Result;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.HBaseConfig 查看详情

hbase之集群状态

importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.*;importorg.apache.hadoop.hbase.client.Admin;importorg.apache.hadoop.hbase.client.Connection;importorg.apache.hadoop.hbase.clie 查看详情

hbase之修改表结构

importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.HBaseConfiguration;importorg.apache.hadoop.hbase.HColumnDescriptor;importorg.apache.hadoop.hbase.HTableDescriptor;importorg.apa 查看详情

hbase文档学习顺序

...ps://www.toutiao.com/i6774583961667502603/4、《HBase基础环境搭建之Hadoop搭建》https://www.toutiao.com/i6774661613522780675/5、《HBase基础环境搭建之Hive和Sqoop安装》https://www.toutiao.com/i6775092146723619342/6、《HBase环境分布式搭建》https://www.toutiao.com/i67750... 查看详情

hbase2.3.x安装之三hadoop(代码片段)

os:centos7.6.1810db:hbase2.3.xhadoop2.10.xzookeeper3.6jdk1.8hbase是运行在hadoop之上,hadoop又是运行在jvm之上。索引hbase、hadoop、jdk的版本选择就得考虑兼容性https://hbase.apache.org/book.html#javahttps://hbase.apache.org/book 查看详情

hadoop之——hbase结合mapreduce批量导入数据

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46463889废话不多说。直接上代码,你懂得packagehbase;importjava.text.SimpleDateFormat;importjava.util.Date;importorg.apache.hadoop.conf.Configuration;importorg. 查看详情

hadoop之mapreduce基础(代码片段)

...一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架;  Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。1... 查看详情

总索引

...,关于环境搭建还请参考其他资料。1、走向云计算之Hadoop基本介绍及生态系统2、走向云计算之HDFS详解3、走向云计算之HadoopYARN的基本原理和运行流程4、走向云计算之MapReduce原理和运行流程详解5、走向云计算之MapReduce应用案... 查看详情

hadoop之hbase简介

HBASE的发展从bigtable讲起bigtable是一个分布式存储系统利用mapreduce分布式并行计算模型处理海量数据使用分布式文系统GFS作为底层数据存储采用Chubby提供协同服务管理扩展到PB级别的数据和上千台机器,具有广泛应用性,可... 查看详情

hbase分布式环境安装部署(代码片段)

...。下面我们分别进行介绍。HBase单机安装HBase需要运行在Hadoop基础之上,因此安装HBase的前提是必须安装Hadoop环境。Hadoop环境的安装可以参考前面课程的内容。下载与Hadoop2.2.0或者Hadoop2.6.0相匹配的hbase-0.98.11-hadoo 查看详情

hadoop学习笔记—15.hbase框架学习(基础实践篇)

一、HBase的安装配置1.1伪分布模式安装  伪分布模式安装即在一台计算机上部署HBase的各个角色,HMaster、HRegionServer以及ZooKeeper都在一台计算机上来模拟。  首先,准备好HBase的安装包,我这里使用的是HBase-0.94.7的版本,已经... 查看详情

hive和hbase区别11

...作抛砖引玉之用。 Hive是什么?ApacheHive是一个构建于Hadoop(分布式系统基础架构)顶层的数据仓库,注意这里不是数据库。Hive可以看作是用户编程接口,它本身不存储和计算数据;它依赖于HDFS(Hadoop分布式文件系统)和MapRed 查看详情

hbase基础介绍

...后,好多公司实现处理大数据并从中受益,并开始选择像Hadoop的解决方案。Hadoop使用分布式文件系统,用于存储大数据,并使用MapReduce来处理。Hadoop擅长于存储各种格式的庞大的数据,任意的格式甚至非结构化的处理。Hadoop的限... 查看详情