第九记·Hive安装配置 metastore的三种配置方式详解

XY个人笔记

    Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

    Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapReduce 任务)。Hive不存在主从架构,不需要安装在每台服务器上,只需要安装几台就行了。

一、Hive安装配置

1.首先将hive的安装包上传到我们的虚拟机上并解压到相应目录

$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/modules/apache/

    个人习惯把解压后的文件更名简洁一点

$ mv apache-hive-1.2.1-bin/ hive-1.2.1

第九记·Hive安装配置 metastore的三种配置方式详解_第1张图片

2.重命名conf里面的hive-env.sh.template为hive-env.sh,并配置

$ mv hive-env.sh.template hive-env.sh

第九记·Hive安装配置 metastore的三种配置方式详解_第2张图片

第九记·Hive安装配置 metastore的三种配置方式详解_第3张图片

3.重命名或copy hive-default.xml.template 文件

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

在hive-site.xml中增加如下配置


    hive.metastore.warehouse.dir
	/user/hive/warehouse
    location of default database for the warehouse

第九记·Hive安装配置 metastore的三种配置方式详解_第4张图片

4.在HDFS上创建文件,增加权限

$ bin/hdfs dfs -mkdir /user/hive/warehouse
$ bin/hdfs dfs -chmod g+w /tmp
$ bin/hdfs dfs -chmod g+w /user/hive/warehouse

5.进入hive

$ bin/hive

6.成功进入hive 查看到我们的默认数据库default

第九记·Hive安装配置 metastore的三种配置方式详解_第5张图片

7.默认的数据库在我们的HDFS里面是不会显示出来的

创建数据库

可以在HDFS中看到我们新创建的数据库test

第九记·Hive安装配置 metastore的三种配置方式详解_第6张图片

8.Hive常用命令操作

a.使用数据库

hive>use test;

b.创建表

第九记·Hive安装配置 metastore的三种配置方式详解_第7张图片

c.在/opt/datas下创建文件stu_info已制表符隔开

1	name
2	age
3	sex

d.加载数据,查看数据

第九记·Hive安装配置 metastore的三种配置方式详解_第8张图片

d.查询数据为null,hive默认的分割符为^A(/001)

linux中为 Ctrl+V Ctrl+A   即为:^A

e.重新加载并显示数据

第九记·Hive安装配置 metastore的三种配置方式详解_第9张图片

9.文件上传到HDFS上的根目录下

$ bin/hdfs dfs -put /opt/datas/hive_test /

第九记·Hive安装配置 metastore的三种配置方式详解_第10张图片

第九记·Hive安装配置 metastore的三种配置方式详解_第11张图片

第九记·Hive安装配置 metastore的三种配置方式详解_第12张图片

10.load后再HDFS根目录的源文件消失(被剪切到表对应目录下),单数据插入成功。数据文件移动到了表对应的目录下面

第九记·Hive安装配置 metastore的三种配置方式详解_第13张图片

11.如果数据的分隔符与表的数据分隔符不一致,插入数据查询的时候,发现数据都为null

 

二、Hive metastore 的三种方式及配置详解

Hive metastore三种配置方式 

    a、本地Derby:

Derby数据库是Hive的默认数据库,这也是配置最简单的一种方式,但是又一个弊端是只能有一个hive服务使用数据库

    b、本地MySQL:

这种存储方式需要在本地运行一个mysql服务器,需要Hive和MySQL在同一台服务器

    c、远端MySQL:

这种存储方式需要在远端服务器运行MySQL,并且在Hive的服务需要启动metastore服务

#启动metastore服务命令
$ bin/hive --service metastore &

1.当我们在次启动一个hive的时候发现报错,Derby只能开启一个客户端

第九记·Hive安装配置 metastore的三种配置方式详解_第14张图片

因为我们的hive默认的数据库Derby不能再做映射,所以我们要修改元数据存储的数据库,以下是Hive支持的数据库

2.下面我们安装一个MySql

$ yum -y install mysql-server

3.开启mysql服务

4.设置登录密码,验证成功

第九记·Hive安装配置 metastore的三种配置方式详解_第15张图片

5.设置mysql开机启动

第九记·Hive安装配置 metastore的三种配置方式详解_第16张图片

6.设置授权

第九记·Hive安装配置 metastore的三种配置方式详解_第17张图片

mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; 
mysql> select User,Host,Password from user;

第九记·Hive安装配置 metastore的三种配置方式详解_第18张图片

7.放着更改元数据出现问题,只留root % 即可,剩余的可全部删掉

删除用户信息

mysql> delete from user where user = 'root' and host = '127.0.0.1';
mysql> delete from user where user = 'root' and host = 'localhost';

第九记·Hive安装配置 metastore的三种配置方式详解_第19张图片

8.刷新授权表,重启服务

mysql> flush privileges;

9.1.修改hive-site.xml(本地MySQL模式)


    javax.jdo.option.ConnectionURL
    jdbc:mysql://hadoop01.com/metastore_hive?createDatabaseIfNotExist=true
  

    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver
 

    javax.jdo.option.ConnectionUserName
    root


    javax.jdo.option.ConnectionPassword
    123456

9.2.修改hive-site.xml(远端MySQL模式)


	javax.jdo.option.ConnectionURL
	jdbc:mysql://hadoop01.com/metastore_hive?createDatabaseIfNotExist=true


	javax.jdo.option.ConnectionDriverName
	com.mysql.jdbc.Driver


	javax.jdo.option.ConnectionUserName
	root


	javax.jdo.option.ConnectionPassword
	123456


	hbase.zookeeper.quorum
	hadoop01.com


	hive.metastore.uris
	thrift://hadoop01.com:9083


	hive.txn.manager
	org.apache.hadoop.hive.ql.lockmgr.DbTxnManager


	hive.compactor.initiator.on
	true

 10.将mysql的驱动jar拷贝到hibe/lib目录下,完成后打开多个客户端进行测试 

 

:如果启动远端MySQL模式需要启动metastore服务,否则会报如下错误:

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
        at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1523)
        at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.(RetryingMetaStoreClient.java:86)
        at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:132)
        at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:104)
        at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:3005)
        at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3024)
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:503)
        ... 8 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1521)
        ... 14 more
Caused by: MetaException(message:Could not connect to meta store using any of the URIs provided. Most recent failure: org.apache.thrift.transport.TTransportException: java.net.ConnectException: 拒绝连接
        at org.apache.thrift.transport.TSocket.open(TSocket.java:187)

启动metastore服务命令:$ bin/hive --service metastore & 

11.Hive的常用配置

    修改log4j: cp  hive-log4j.properties.template hive-log4j.properties
    修改:hive.log.dir=/opt/modules/apache/hive-1.2.1/logs

12.显示数据和列名,添加到hive-site.xml

第九记·Hive安装配置 metastore的三种配置方式详解_第20张图片



    hive.cli.print.current.db
    true



    hive.cli.print.header
    true

 

三、卸载MySQL

1.查看已安装的mysql
命令:rpm -qa | grep -i mysql

2.依次卸载mysql相关
命令:yum remove mysql-community-server-5.6.36-2.el7.x86_64
 

第九记·Hive安装配置 metastore的三种配置方式详解_第21张图片

3.删除mysql文件目录

使用命令查看mysql相关的文件目录:find / -name mysql

第九记·Hive安装配置 metastore的三种配置方式详解_第22张图片

 

HIVE的操作命令

hive> show tables;  ##查看表
hive> desc formatted hive_table;  ##描述表信息 desc hive_table
hive> alter table hive_table2 rename to test_rn;  ##更改表名
hive> alter table test_rn add columns (age int);  ##增加列
hive> alter table test_rn change id test_id int;  #修改列名id为test_id
hive> alter table test_rn  change   test_id id  double after age;  ## test_id改名为id并放到age后面
hive> alter  table test_rn  replace columns (cc  int,bb string,id int);  ##替换列(修改和替换全表的列)
hive> truncate table  stu_info; ##清除数据truncate 只清楚表的数据,不会删除元数据
hive> drop table  stu_test;  ##删除表以及表的元数据信息
hive> drop database hive_drop;  #删除数据库
hive> drop database hive_test CASCADE;  ##删除有表的数据库
hive> dese function when;  ##查看函数用法
hive> dese function extended case;  ##查看函数的详细用法
hive>

添加jar或者文件到hive运行环境当中
    add jar /opt/datas/mr.jar;
    add file /opt/datas/second.txt;
    
    list jar显示所有添加的jar

    delete  jar /opt/datas/mr.jar;

常用shell
    !  -》 表示访问的Linux本地的文件系统   !  ls  /opt/datas;
    dfs -》 表示访问的HDFS文件系统          dfs -ls /;

你可能感兴趣的:(大数据学习之路·XY记)