0. 安装MySQL

Centos 7上安装MySQL 5.7.37(图文详解)

1. 下载、上传、解压软件包

在Master上进行安装

下载Hive并上传到虚拟机上
http://mirror.bit.edu.cn/apache/hive/

解压

[root@master hive]# tar -zxvf apache-hive-1.2.2-bin.tar.gz

移动到规划好的文件夹下

[root@master hive]# tar -zxvf apache-hive-1.2.2-bin.tar.gz

在这里插入图片描述
在这里插入图片描述
bin:二进制命令文件
conf:配置文件
examples:示例
hcatalog:log日志
lib:文件库,运行时依赖的jar包
scripts:脚本文件

2. 修改Hive配置

(1)配置hive-env.sh

修改conf内hive-env.sh.template文件名

[root@master conf]# mv hive-env.sh.template hive-env.sh.template

修改hive-env.sh文件内容

[root@master conf]# vim hive-env.sh 

在键盘上输入Go,其中G会跳到文件末尾,o会换行并进行插入编辑。
输入java、hadoop和Hive的安装路径、Hive的配置文件路径

export JAVA_HOME=/usr/local/src/jdk1.8.0_172
export HADOOP_HOME=/usr/local/src/hadoop-2.6.5
export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export HIVE_CONF_DIR=/usr/local/src/apache-hive-2.3.3-bin/conf

在这里插入图片描述

(2)配置hive-site.xml

创建hive-site.xml

[root@master conf]# touch 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://master:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
        <description>设置元数据存在的地址</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>配置连接Mysql的接口驱动(将jab包放到hive/lib下)</description>        
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>指定mysql用户名</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
        <description>指定msql密码</description>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>hdfs://master:9000/hive/warehouse</value>
    </property>
    <property>
        <name>hive.exec.scratchdir</name>
        <value>hdfs://master:9000/hive/tmp</value>
    </property>
    <property>
        <name>hive.querylog.location</name>
        <value>/usr/hive/log</value>
        <description>设置hive job日志存储位置</description>
    </property>
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
        <description>设置列名</description>
    </property>
    <property>
        <name>hive.resultset.use.unique.column.names</name>
        <value>false</value>
        <description>增加列名可读性</description>
    </property>
    <!-- flume to hive test-->
    <property>
        <name>hive.support.concurrency</name>
        <value>true</value>
        <description>是否支持并发,默认是false</description>
    </property>
    
    <!--
    <property>
        <name>hive.txn.manager</name>
        <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
        <description>打开一部分事务支持协同配置</description>
    </property>
    -->
    <property>
        <name>hive.compactor.initiator.on</name>
        <value>true</value>
        <description>运行启动程序和清除线程,用于打开所需参数的完整列表事务</description>
    </property>
    <property>
        <name>hive.compactor.worker.threads</name>
        <value>1</value>
        <description>增加工作线程的数量将减少花费的时间</description>
    </property>
    <property>
        <name>hive.enforce.bucketing</name>
        <value>true</value>
        <description>是否启用bucketing,写入table数据</description>
    </property>
    <property>
        <name>hive.exec.dynamic.partition.mode</name>
        <value>nonstrict</value>
        <description>设置动态分区模式为非严格模式</description>
    </property>
</configuration>

(3)增加环境变量

修改系统环境变量

[root@master conf]# vim ~/.bashrc

添加Hive路径

export HIVE_HOME=/usr/local/src/apache-hive-1.2.2-bin
export PATH=$PATH:${HIVE_HOME}/bin

在这里插入图片描述
刷新环境变量使其生效

[root@master conf]# source ~/.bashrc

3. 安装MySQL连接工具

mysql-connector-java-5.1.44.tar下载好后上传至虚拟机

解压

[root@master src]# tar -xvf mysql-connector-java-5.1.44.tar 

将解压后的文件移动到规划好的文件夹下

[root@master src]# mv mysql-connector-java-5.1.44 /usr/local/src

在这里插入图片描述
mysql-connector-java-5.1.44里面的jar包复制到Hive的lib目录下

[root@master mysql-connector-java-5.1.44]# cp mysql-connector-java-5.1.44-bin.jar $HIVE_HOME/lib
[root@master mysql-connector-java-5.1.44]# cd $HIVE_HOME/lib
[root@master lib]# ls

在这里插入图片描述

4. 启动Hive

Hive依赖Hadoop中的HDFS进行存储,依赖MySQL管理元数据。因此,我们需要等待Hadoop集群启动完成并退出安全模式后,才可以启动Hive。

(1)更改权限为root

首先,在Master上将hadoop、jdk、hive的权限所有者都改为root

[root@master src]# chown -R root:root hadoop-2.6.5/ jdk1.8.0_172/

在这里插入图片描述
开启slave1和slave2,将hadoop、jdk改为root

[root@slave1 src]# chown -R root:root jdk1.8.0_172

在这里插入图片描述
Slave2同理

(2)启动hadoop集群

然后,启动Hadoop集群

[root@master hadoop-2.6.5]# sbin/start-all.sh 

启动完成后,查看hadoop集群状态

[root@master hadoop-2.6.5]# hadoop dfsadmin -report

在这里插入图片描述
这个位置没有出现Safe model is ON,则已关闭安全模式,可以启动Hive。若有则说明正在开启安全模式,不能启动Hive,需要等待一会儿或者手动关闭安全模式。

命令 hadoop fs -safemode get 查看安全模式状态

命令 hadoop fs -safemode enter 进入安全模式状态

命令 hadoop fs -safemode leave 离开安全模式

Hadoop安全模式

(3)替换hadoop中的jar包

由于hadoop 2.6.5hive 1.2.2中的jline包版本不一致,因此需要替换。

删除hadoop-2.6.5/share/hadoop/yarn/lib中的jline-0.9.94.jar
在这里插入图片描述

[root@master apache-hive-1.2.2-bin]# rm $HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar 

然后,将hive中的jline-2.12.jar放到hadoop-2.6.5/share/hadoop/yarn/lib使Hadoop和Hive里的jar版本保持一致。

[root@master apache-hive-1.2.2-bin]# cp lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/

在这里插入图片描述

(4)启动Hive

最后,进入到hive目录里开启hive

[root@master apache-hive-1.2.2-bin]# bin/hive

在这里插入图片描述
测试一下

hive> show databases;

在这里插入图片描述
若觉得太慢可以更改hive-site.xml中的内容来提升速度
退出Hive

hive> exit;

编辑conf/hive-site.xml

[root@master apache-hive-1.2.2-bin]# vim 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.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>hdfs://master:9000/hive/warehouse</value>
    </property>
    <property>
        <name>hive.exec.scratchdir</name>
        <value>hdfs://master:9000/hive/tmp</value>
    </property>
    <property>
        <name>hive.querylog.location</name>
        <value>/usr/hive/log</value>
        <description>设置hive job日志存储位置</description>
    </property>
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
        <description>设置列名</description>
    </property>
    <property>
        <name>hive.resultset.use.unique.column.names</name>
        <value>false</value>
        <description>增加列名可读性</description>
    </property>
<!--    
    <!-- flume to hive test-->
    <property>
        <name>hive.support.concurrency</name>
        <value>true</value>
        <description>是否支持并发,默认是false</description>
    </property>
    <!--
             <property>
        <name>hive.txn.manager</name>
        <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
        <description>打开一部分事务支持协同配置</description>
    </property>
    -->
    <property>
        <name>hive.compactor.initiator.on</name>
        <value>true</value>
        <description>运行启动程序和清除线程,用于打开所需参数的完整列表事务</description>
    </property>
    <property>
        <name>hive.compactor.worker.threads</name>
        <value>1</value>
        <description>增加工作线程的数量将减少花费的时间</description>
    </property>
    <property>
        <name>hive.enforce.bucketing</name>
        <value>true</value>
        <description>是否启用bucketing,写入table数据</description>
    </property>
    <property>
        <name>hive.exec.dynamic.partition.mode</name>
        <value>nonstrict</value>
        <description>设置动态分区模式为非严格模式</description>
    </property>
-->    
</configuration>

在这里插入图片描述
在这里插入图片描述
将这部分内容注释掉,然后再启动Hive进行测试
在这里插入图片描述
性能提升了1s左右

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐