CentOS7搭建Hive服务器

14 篇文章 0 订阅
13 篇文章 0 订阅

Hive服务器需要Hadoop,我使用的是Hadoop3.3.0,这个提前已经搭建好了。MySql5.7.34也已经准备好。

一、下载软件

下载软件的地址是:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/

我选择的是Hive3.1.2.

cd /var/app
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

二、解压

tar -zxvf apache-hive-3.1.2-bin.tar.gz

三、创建配置文件

1. hive-log4j2.properties

cd apache-hive-3.1.2-bin/conf
cp hive-log4j2.properties.template hive-log4j2.properties
vi hive-log4j2.properties

2. hive-env.sh

cp hive-env.sh.template hive-env.sh
vi hive-env.sh

在最后添加

export HADOOP_HOME=/var/app/hadoop-3.3.0
export HIVE_CONF_DIR=/var/app/apache-hive-3.1.2-bin/conf

3. hive-site.xml

vi hive-site.xml

添加内容

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 记录HIve中的元数据信息  记录在mysql中 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.0.50:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    </property>

    <!-- jdbc mysql驱动 -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <!-- mysql的用户名和密码 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>root</value>
    </property>

    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>

    <property>
        <name>hive.exec.scratchdir</name>
        <value>/user/hive/tmp</value>
    </property>

    <!-- 日志目录 -->
    <property>
        <name>hive.querylog.location</name>
        <value>/user/hive/log</value>
    </property>

    <!-- 客户端远程连接的端口 -->
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>0.0.0.0</value>
    </property>
    <property>
        <name>hive.server2.webui.host</name>
        <value>0.0.0.0</value>
    </property>

    <!-- hive服务的页面的端口 -->
    <property>
        <name>hive.server2.webui.port</name>
        <value>10002</value>
    </property>

    <property>
        <name>hive.server2.long.polling.timeout</name>
        <value>5000</value>
    </property>

    <property>
        <name>hive.server2.enable.doAs</name>
        <value>true</value>
    </property>

    <property>
        <name>datanucleus.autoCreateSchema</name>
        <value>false</value>
    </property>

    <property>
        <name>datanucleus.fixedDatastore</name>
        <value>true</value>
    </property>

    <property>
        <name>hive.execution.engine</name>
        <value>mr</value>
    </property>

</configuration>

主要修改前四项有关MySql数据库的配置,其他部分没有会有什么影响还不知道。补充一下,MySql中需要先创建一个数据库hive,如果重换版本,建议删掉这个数据库再重新创建一下。

create database if not exists hive default character set utf8mb4 collate utf8mb4_general_ci;

四、准备MySql连接的驱动

cd /var/softwares 
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar

把这个驱动复制到hive的lib目录下面。

cp /var/softwares/mysql-connector-java-5.1.47.jar /var/app/apache-hive-3.1.2-bin/lib

五、guava版本一致性处理

Hadoop和Hive都要使用guava,要求版本一致。建议查看两个包的版本,保留最大的。

ll /var/app/hadoop-3.3.0/share/hadoop/common/lib/gua*
ll /var/app/apache-hive-3.1.2-bin/lib/gua*

mv /var/app/apache-hive-3.1.2-bin/lib/guava-19.0.jar /var/share
cp /var/app/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar /var/app/apache-hive-3.1.2-bin/lib/

六、初始化

/var/app/apache-hive-3.1.2-bin/bin/schematool -dbType mysql -initSchema

实际上就是在MySql创建各种管理需要的表。

看到

Initialization script completed
schemaTool completed

这就是初始化成功了。

七、启动Hive

/var/app/apache-hive-3.1.2-bin/bin/hive

看到输入提示have>就是启动成功了。

八、测试

在MySql是可以看到hive中创建了很多表。hdfs下面也有hive专用的路径。

1. 输入命令创建一张表。

create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

hdfs有了这张表。

2. 尝试插入数据

insert into table student(id,name) values(1,'chris');

看看发生了什么?

没错,是执行了MapReduce运算。这就是Hive存在的意义,用类似sql的语法来代替MR计算。不过,这速度,真是惊天地泣鬼神。

3. 直接从数据文件导入。

我们创建数据表的方法就是利于用tab分割数据进行导入的。

创建一个文本文件stu_01.txt,输入多行数据,用tab分割。

2	zhangsanfeng
3	liergou
4	murongfu

在hdfs上传至student下。

查询数据,查看结果。

select * from student;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值