wqy1027

eeee

 

hive配置和安装-day2

Hive1.2.1安装

1.上传压缩包并解压(在/usr/local/soft/目录下)

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

2.修改目录名称

mv apache-hive-1.2.1-bin hive-1.2.1

3.修改配置文件(在hive-1.2.1下)node1和node2的也需要修改

HIVE_HOME=/usr/local/soft/hive-1.2.1

$HIVE_HOME/bin

4.备份配置文件

 

后面有template的文件只是模板文件,所以需要复制一份修改文件名,模板文件不能删除

命令:

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

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

5.修改hive-env.sh和hive-site.xml配置文件(在/usr/local/soft/hive-1.2.1/conf下)

修改hive-env.sh

加入三行内容

HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HIVE_HOME=/usr/local/soft/hive-1.2.1

 修改core-site.xml   注意:三个节点上都需要修改

<!--该参数表示可以通过httpfs接口hdfs的ip地址限制-->
<property>
 <name>hadoop.proxyuser.hadoop.hosts</name>
 <value>*</value>
</property>
<!--通过httpfs接口访问的用户获得的群组身份-->
<property>
 <name>hadoop.proxyuser.hadoop.groups</name>
 <value>*</value>
</property>

 

修改hive-site.xml(是修改,不能复制粘贴)

<!--数据存储位置就是我们在HDFS上看的目录-->
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>      (数据仓库,Hive中创建的表和数据会放在此目录下,和源数据比较像)
</property>

(注意:修改自己安装mysql的主机地址)       (hive中分隔使用&map;)
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.40.110:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false</value>
</property>

(固定写法,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>


(mysql的用户密码)
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
    
(你的hive安装目录的tmp目录)

<property>

<name>hive.querylog.location</name>

<value>/usr/local/soft/hive-1.2.1/tmp</value>

</property>

 

(同上)

<property>

<name>hive.exec.local.scratchdir</name>

<value>/usr/local/soft/hive-1.2.1/tmp</value>

</property>

 

(同上)

<property>

<name>hive.downloaded.resources.dir</name>

<value>/usr/local/soft/hive-1.2.1/tmp</value>

</property>


<!--指定这个的时候,为了启动metastore服务的时候不用指定端口-->
<!--hive --service metastore -p 9083 & | hive --service metastore-->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://master:9083</value>
    <description>thrift://master:9083</description>
</property>

 

6.拷贝mysql驱动包到/usr/local/soft/hive-1.2.1/lib目录下

cp /usr/local/soft/mysql-connector-java-5.1.49.jar ./

 

启动hive

启动hadoop

start-all.sh

启动hive

hive --service metastore

nohup hive --service metastore >/dev/null &

hive

启动HiveServer2

hiveserver2

nohup hiveserver2 >/dev/null &

beeline -u jdbc:hive2://master:10000 -n root

 

 

Hive的三种交互方式

1.第一种交互方式

shell交互Hive,用命令hive启动一个hive的shell命令行,在命令行中输入sql或者命令来和Hive交互。

服务端启动metastore服务(后台启动):nohup hive --service metastore >/dev/null &
进入命令:hive
退出命令行:quit;

2.第二种交互方式

Hive启动为一个服务器,对外提供服务,其他机器可以通过客户端通过协议连接到服务器,来完成访问操作,这是生产环境用法最多的

服务端启动hiveserver2服务:
nohup hive --service metastore >/dev/null &
nohup hiveserver2 >/dev/null &

需要稍等一下,启动服务需要时间:(使用前提:修改core.site.xml)(需要把master上的hive-1.2.1远程复制到node1和node2上;命令:scp -r hive-1.2.1 node1或者node2:`pwd`)
进入命令:1)先执行: beeline ,再执行: !connect jdbc:hive2://master:10000 
        2)或者直接执行:  beeline -u jdbc:hive2://master:10000 -n root
退出命令行:!exit

 3.第三种交互方式

使用 –e 参数来直接执行hql的语句

bin/hive -e "show databases;"

使用 –f 参数通过指定文本文件来执行hql的语句

特点:执行完sql后,回到linux命令行。

vim hive.sql

use myhive;
select * from test;

 

hive -f hive.sql

 

怎么执行sql语句:

1.把sql语句放到文件中,执行那个文件;

使用:hive -f sql文件名  执行文件(可以使用脚本来定时执行)

2.执行sql文件

 hive与beeline方式区别

 

Hive元数据

Hive元数据库中一些重要的表结构及用途,方便Impala、SparkSQL、Hive等组件访问元数据库的理解。

1、存储Hive版本的元数据表(VERSION),该表比较简单,但很重要,如果这个表出现问题,根本进不来Hive-Cli。比如该表不存在,当启动Hive-Cli的时候,就会报错“Table 'hive.version' doesn't exist”

2、Hive数据库相关的元数据表(DBS、DATABASE_PARAMS)

DBS:该表存储Hive中所有数据库的基本信息。

DATABASE_PARAMS:该表存储数据库的相关参数。

3、Hive表和视图相关的元数据表

主要有TBLS、TABLE_PARAMS、TBL_PRIVS,这三张表通过TBL_ID关联。 TBLS:该表中存储Hive表,视图,索引表的基本信息。 TABLE_PARAMS:该表存储表/视图的属性信息。 TBL_PRIVS:该表存储表/视图的授权信息。

4、Hive文件存储信息相关的元数据表

主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS,由于HDFS支持的文件格式很多,而建Hive表时候也可以指定各种文件格式,Hive在将HQL解析成MapReduce时候,需要知道去哪里,使用哪种格式去读写HDFS文件,而这些信息就保存在这几张表中。 SDS:该表保存文件存储的基本信息,如INPUT_FORMAT、OUTPUT_FORMAT、是否压缩等。TBLS表中的SD_ID与该表关联,可以获取Hive表的存储信息。 SD_PARAMS: 该表存储Hive存储的属性信息。 SERDES:该表存储序列化使用的类信息。 SERDE_PARAMS:该表存储序列化的一些属性、格式信息,比如:行、列分隔符。

5、Hive表字段相关的元数据表

主要涉及COLUMNS_V2:该表存储表对应的字段信息。

 

posted on 2022-09-02 11:21  不想写代码的小玉  阅读(43)  评论(0编辑  收藏  举报

导航