第九记·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

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

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

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

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

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

<property>
    <name>hive.metastore.warehouse.dir</name>
	<value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
</property>

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

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

创建数据库

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

8.Hive常用命令操作

a.使用数据库

hive>use test;

b.创建表

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

1	name
2	age
3	sex

d.加载数据,查看数据

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

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

e.重新加载并显示数据

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

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

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

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默认的数据库Derby不能再做映射,所以我们要修改元数据存储的数据库,以下是Hive支持的数据库

2.下面我们安装一个MySql

$ yum -y install mysql-server

3.开启mysql服务

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

5.设置mysql开机启动

6.设置授权

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

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';

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

mysql> flush privileges;

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

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hadoop01.com/metastore_hive?createDatabaseIfNotExist=true</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>

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

<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://hadoop01.com/metastore_hive?createDatabaseIfNotExist=true</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>hbase.zookeeper.quorum</name>
	<value>hadoop01.com</value>
</property>
<property>
	<name>hive.metastore.uris</name>
	<value>thrift://hadoop01.com:9083</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>

 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.<init>(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

<!-- 显示数据库名称 -->
<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
</property>
<!-- 显示列名称 -->
<property>
    <name>hive.cli.print.header</name>
    <value>true</value>
</property>

 

三、卸载MySQL

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

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

3.删除mysql文件目录

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

 

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 /;

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hive是基于Hadoop的数据仓库工具,它可以将结构化数据映射为一张数据库表,并提供类似SQL语言的查询功能,使得数据分析师和开发人员可以使用SQL语言来查询和分析大规模的数据。下面是Hive安装配置详解: 1. 安装Java Hive需要Java环境来运行,所以需要先安装Java。可以通过以下命令来安装Java: ``` sudo apt-get update sudo apt-get install default-jdk ``` 2. 安装Hadoop Hive是基于Hadoop的,所以需要先安装Hadoop。可以参考Hadoop的安装配置教程。 3. 下载Hive 可以从Hive的官方网站下载最新的版本,也可以从Apache的镜像站点下载。下载完成后,解压缩到指定目录,比如/opt/hive。 4. 配置Hive 配置文件位于Hive的conf目录下,修改hive-env.sh文件,设置JAVA_HOME和HADOOP_HOME变量的值,比如: ``` export JAVA_HOME=/usr/lib/jvm/default-java export HADOOP_HOME=/opt/hadoop ``` 另外,还需要修改hive-site.xml文件,将以下属性设置为对应的值: ``` <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:derby:/opt/hive/metastore_db;create=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>org.apache.derby.jdbc.EmbeddedDriver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> <description>password to use against metastore database</description> </property> ``` 5. 启动Hive 启动Hive之前,需要先启动Hadoop。启动Hadoop后,可以通过以下命令启动Hive: ``` cd /opt/hive/bin ./hive ``` 启动成功后,可以在Hive的Shell中输入SQL语句,比如: ``` hive> show tables; ``` 以上就是Hive安装配置详解

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值