Hive环境搭建

2 篇文章 0 订阅

前言:
首先Hive中的元数据默认存放在Derby中,Derby是单用户的,使用起来不方便,我们使用MySQL来存储Hive的元数据信息,元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 由于Hive的元数据需要不断的更新、修改,而HDFS系统中的文件是多读少改的,这显然不能将Hive的元数据存储在HDFS中。

安装mysql

直接使用yum安装mysql是无法安装mysql的高级版本, 需要先安装带有可用的mysql5系列社区版资源的rpm包,去mysql的官网下载即可
如果需要可去官网下载最新版
MySQL官方网站下载页
MySQL官网安装教程
下载完成之后放在Linux系统中,通过如下命令执行

$ sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

安装完成后,查看mysql安装版本列表

$ yum repolist all | grep mysql 

安装mysql,只需要安装mysql-community-server即可,yum会自动检测安装依赖包

$ sudo yum -y install mysql-community-server   

启动mysql

$ sudo systemctl start mysqld

mysql安装完成后root用户会有一个初始的密码,输入如下命令

$ sudo grep 'temporary password' /var/log/mysqld.log   

这里写图片描述
然后使用刚刚的密码,登录到mysql

$ mysql -uroot -p
# 注意不要在-p后面直接输入密码因为有特殊字符,会登录失败的

这里写图片描述
是不是觉得密码特别难记?
输入如下命令来修改root用户的密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

注意,该版本的MySQL对用户密码安全性有所加强,所以设置的密码必须有至少
一个数字
一个大写字母
一个小写字母
一个特殊符号
密码长度至少8个字符;

修改完成后,输入exit退出shell界面,使用新密码登录即可

安装Hive

首先准备的安装包,可以去官网下载.
Hive官方网站
下载完成后上传到linux,输入如下命令解压

$ tar -zvxf apache-hive-2.3.0-bin.tar.gz

接下来就是非常重要的部分了
配置hive-site.xml文件
这里写图片描述
将其中hive-default.xml.template复制一份,叫做hive-site.xml
一开始是没有hive-site.xml的

$ cp hive-default.xml.template hive-site.xml

需要修改的配置如下,更多详情请查看Hive官方网站
Hive官方网站配置介绍

<configuration>
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/home/hadoop/hive/tmp/hive</value>
    </property>

    <property>
        <name>hive.downloaded.resources.dir</name>
        <value>/home/hadoop/hive/tmp/${hive.session.id}_resources</value>
        <description>hive下载资源的存储目录</description>
    </property>

    <property>
        <name>hive.querylog.location</name>
        <value>/home/hadoop/hive/tmp/hive</value>
        <description>hive结构日志存储目录</description>
    </property>

    <property>
        <name>hive.server2.logging.operation.log.location</name>
        <value>/home/hadoop/hive/tmp/hive/operation_logs</value>
        <description>hive的操作日志目录</description>
    </property>

    <property>
        <name>hive.exec.scratchdir</name>
        <value>/tmp/hive</value>
        <description>hive用于存储不同阶段map/reduce的执行计划及存储中间输出结果的目录</description>
    </property> 

    <property>
        <name>hive.scratch.dir.permission</name>
        <value>700</value>
        <description>hive访问hadoop文件权限设置</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>P@ssw0rd</value>
        <description>元数据存储的数据库的密码</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>元数据存储数据库的用户名</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metadata?createDatabaseIfNotExist=true&amp;characterEncoding=utf8</value>
        <description>元数据存储的数据库的url</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>元数据存储的数据库的驱动</description>
    </property>

    <property>
        <name>datanucleus.schema.autoCreateAll</name>
        <value>true</value>
        <description>开启自动创建(生产环境中不推荐使用)</description>
    </property>

    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value></description>
    </property>

    <!------------ 配置hive的事务 start ------------>
    <property>
        <name>hive.optimize.sort.dynamic.partition</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.support.concurrency</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.enforce.bucketing</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.exec.dynamic.partition.mode</name>
        <value>nonstrict</value>
    </property>
    <property>
        <name>hive.txn.manager</name>
        <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
    </property>
    <property>
        <name>hive.compactor.initiator.on</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.compactor.worker.threads</name>
        <value>1</value>
    </property>
    <property>
        <name>hive.in.test</name>
        <value>true</value>
    </property>
    <!------------ 配置hive的事务 end ------------>

    <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
    </property>
</configuration>

**在启动Hive前需要将MySQL的驱动包复制到Hive安装目录的lib目录下,否则在启动时,会报如下错误
DatastoreDriverNotFoundException: The specified datastore
driver (“com.mysql.jdbc.Driver”) was not found in the CLASSPATH

Hive启动分两个版本分别是hive1,hive2.
并且hive1和hive2的启动方式是不一样的

首先执行这个设置一下
$ $HIVE_HOME/bin/schematool -dbType <mysql> -initSchema
#hive1
$ hive --service metastore # 第一次启动时执行,以后会自动绑定不需要在输入
$ hive  

#hive2
$ hiveserver2 #这里会卡在服务端的窗口类似tomcat不用管他新打开一个shell窗口执行下面的命令就ok了,
$ beeline -u jdbc:hive2://

启动成功后登录mysql,可以看到创建了一个数据库hive_metadata(具体数据库叫什么在hive-site.xml参数javax.jdo.option.ConnectionURL中配置)
这里写图片描述

后言

作者真的是想吐槽一下这个hive1返回的东西实在太难看了,完全看不出来这是个数据苦(本来也不是数据库!),
还是推荐使用hive2的方式访问hive吧.hive2的界面和mysql的shell界面非常相似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值