hadoop插件hive安装与配置

hive

  这里简单说明一下,好对大家配置hive有点帮助。hive是建立在hadoop上的,当然,你如果只搭建hive也没用什么错。说简单一点,hadoop中的mapreduce调用如果面向DBA的时候,那么问题也就显现了,因为不是每个DBA都能明白mapreduce的工作原理,如果为了管理数据而需要学习一门新的技术,从现实生活中来说,公司又需要花钱请更有技术的人来了。

  开个玩笑,hadoop是为了存储数据和计算而推广的技术,而和数据挂钩的也就属于数据库的领域了,所以hadoop和DBA挂钩也就是情理之中的事情,在这个基础之上,我们就需要为了DBA创作适合的技术。

  hive正是实现了这个,hive是要类SQL语句(HiveQL)来实现对hadoop下的数据管理。hive属于数据仓库的范畴,那么,数据库和数据仓库到底有什么区别了,这里简单说明一下:数据库侧重于OLTP(在线事务处理),数据仓库侧重OLAP(在线分析处理);也就是说,例如mysql类的数据库更侧重于短时间内的数据处理,反之。

无hive:使用者.....->mapreduce...->hadoop数据(可能需要会mapreduce)

有hive:使用者...->HQL(SQL)->hive...->mapreduce...->hadoop数据(只需要会SQL语句)

hive安装和配置

安装

一:下载hive——地址:http://mirror.bit.edu.cn/apache/hive/

 

 

  这里以hive-3.1.2为例子,如图:

 

 

 将hive解压到/data下:

[root@s100 local]# tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /data

将文件重命名为hive文件:

[root@s100 local]# mv /data/apache-hive-3.1.2-bin /data/hive

修改环境变量/etc/profile:

[root@s100 local]# vim /etc/profile
1 #hive
2 export HIVE_HOME=/data/hive
3 export PATH=$PATH:$HIVE_HOME/bin

 

 

 

执行source /etc.profile:

执行hive --version

[root@s100 local]# hive --version

 有hive的版本显现,安装成功!

安装mysql服务端以及客户端

[root@uhadoopdev ~]# yum -y install mysql-*.rpm
[root@uhadoopdev ~]# systemctl start mysqld

#查询mysql初始密码

[root@uhadoopdev ~]# less /var/log/mysqld.log | grep password 
2019-12-04T06:36:56.682190Z 1 [Note] A temporary password is generated for root@localhost: Ee-lx/qy*6(Q

#登录mysql,更改密码

[root@uhadoopdev ~]# mysql -u root -p'Ee-lx/qy*6(Q'
mysql> alter user 'root'@'localhost' identified by '123qq';

重新登录

mysql> CREATE DATABASE hive;创建数据库

mysql> USE hive;进入数据库

mysql> CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';创建hive用户,并且密码为hive,允许本地登录

mysql> GRANT ALL ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';把hive数据库的内容到hive用户下,即配置权限

mysql> GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';

mysql> FLUSH PRIVILEGES;

mysql> quit;



创建HDFS目录

在 Hive 中创建表之前需要创建以下 HDFS 目录并给它们赋相应的权限。

 先启动集群  :start-all.sh

hdfs dfs -mkdir -p /user/hive/warehouse

hdfs dfs -mkdir -p /user/hive/tmp

hdfs dfs -mkdir -p /user/hive/log

hdfs dfs -chmod g+w /user/hive/warehouse

hdfs dfs -chmod g+w /user/hive/tmp

hadoop fs -chmod -R 777 /user/hive/tmp

hdfs dfs -chmod g+w /user/hive/log

 

修改hive-site.xml 

然后在配置文件hive-site.xml中,把所有的${system:java.io.tmpdir} 都替换为/usr/local/hive/tmp (有可能需要转义字符)

把所有的${system:user.name}替换为${user.name}

直接修改为下面这样也可以,注意用户名和密码,对应上一步中mysql创建的用户名和密码

依次查找下面的修改。

配置

[root@s100 conf]# cd /data/hive/conf/

修改hive-site.xml:

这里没有,我们就以模板复制一个:

[root@s100 conf]# cp hive-default.xml.template hive-site.xml
[root@s100 conf]# vim hive-site.xml 

1.配置hive-site.xml(第5点的后面有一个单独的hive-site.xml配置文件,这个如果有疑问可以用后面的配置文件,更容易明白)

主要是mysql的连接信息(在文本的最开始位置)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
               <name>hive.exec.scratchdir</name>
               <value>/data/hive/tmp</value>
        </property>
        <property>
                <name>hive.exec.scratchdir</name>
                <value>/data/hive/tmp</value>
        </property>
        <property>
                <name>hive.querylog.location</name>
                <value>/data/hive/log</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://20.20.50.200:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
        </property>


        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>(mysql的驱动)
                <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.schema.verification</name>
                <value>false</value>
        </property>
</configuration>

运行Hive

在命令行运行 hive 命令时必须保证以下两点:

HDFS 已经启动。可以使用 start-dfs.sh 脚本来启动 HDFS。

运行 schematool 命令来执行初始化操作。

schematool -dbType mysql -initSchema

注意一定要英文下的杠

如果还是失败,一、试一下远成连接能否成功,不成功重新配置远程然后重启数据库二、检查配置或者命令的格式问题三、检查数据库hive下是否会莫名导入很多乱七八糟的包,删除然后重建

然后执行

hive

 

 

在最后补充

1)在 hive-site.xml 文件中添加如下配置信息,就可以实现显示当前数据库,以及查询 表的头信息配置。

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


2)重新启动 hive,对比配置前后差异

 

 

 

 

posted @ 2019-12-04 15:41  Mr-谢  阅读(868)  评论(0)    收藏  举报