Apache Hive 下载与安装

1.hive产生背景

mapreduce计算过程中,绝大多数的场景,分析结构化的数据,SQL语句处理起来更方便,而且开发成本更低。而使用mapreduce开发的话,无论是人工成本还是代码书写时间成本都会大大提高。

2.hive是什么?

对外提供hql编程(方言版SQL),底层数据存储在hdfs上,将hql语句转换为mapreduce程序运行的数据仓库。

hive是一个工具,基于hadoop,提供hql编程工具,hive为我们提供了一个新的hadoop的操作方式 。

hive相当于hadoop的另一种形式的客户端

3.hive的架构

1)用户接口层

用户直接操作 命令行 jdbc webUI界面

2)thrift server层

是一个跨语言服务平台,jdbc方式才用到

3)元数据库层

hive中存储的数据

① 表中的数据,存储在hdfs上,对应就是一个hdfs路径

② 元数据:描述原始数据(表中数据)的数据(记录表数据和hdfs的路径的对应关系)

对于hive来说,元数据存储的都是结构化数据,元数据不会特别大。元数据存储在传统的关系型数据库。生产上存储在MySQL中,默认hive的元数据存储在derby数据库中。

4)Driver 核心驱动层,包括:

① 解释器:将hql解释成抽象语法树

② 编译器:将hql编译成mapreduce程序

③ 优化器:将上一步编译结果进行优化

④ 执行器:将最终的优化结果提交执行

4.hive的安装之使用默认derby作为元数据存储数据库

1)准备工作

hive是基于hadoop,所以需要保证hadoop可用

安装jdk,搭建hadoop环境,并且配置jdk与hadoop的环境变量

2)hive安装几个节点?

hive相当于一个客户端,所以只需要一个节点

3)安装

使用derby作为元数据库

上传安装包

解压

配置环境变量 hive/bin

(启动:hive 直接启动会报错,不能初始化元数据库的实例对象)

初始化hive的元数据库:schematool -dType derby -initSchema(初始化完成多了两个文件derby.log与metastore_db)

metastore_db:存储数据库中的数据的信息

derby.log:存储的是derby数据库的日志信息

启动:hive

此方式切换目录启动hive的时候还是报错(元数据初始化出错)

即在哪一个目录下初始化,就在当前目录下生成日志和存储数据目录,一旦切换目录执行,就会访问拿不到初始化产生的文件。

一般生产上将元数据库设置为MySQL

5.hive的安装之使用derby作为元数据存储数据库

1)准备工作

hive是基于hadoop,所以需要保证hadoop可用

安装jdk,搭建hadoop环境,并且配置jdk与hadoop的环境变量

2)安装

使用MySQL作为元数据库

① yum 安装MySQL

# 安装 MySQL
yum  -y install mysql-server
# root用户启动mysqld主服务
service mysqld start
# 修改密码方式1 进入MySQL中修改密码----update方式
use mysql
delete from user where user='';
update user set password=PASSWORS('123456')  where user='root';
flush privillege;

# 修改密码方式1 进入MySQL中修改密码----update方式
set Password='' where user='root';

② hive解压与配置

上传安装包

解压

配置环境变量

创建hive的配置文件 conf/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.ConnectionPassword</name>
    <value>miku</value>
    <description>password to use against metastore database</description>
  </property>
  <property> 
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true</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>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>Username to use against metastore database</description>
  </property>
</configuration>

③ 引入MySQL驱动包

将MySQL的驱动包放到hive安装目录的lib目录下

④ 初始化元数据库配置

初始化元数据库:schematool -dType mysql -initSchema

猜你喜欢

转载自blog.csdn.net/qq_33713328/article/details/88634424