一、Hive安装有三种模式:
内嵌模式:元数据保持在内嵌的derby模式,只允许一个会话连接(一般生产环境不用)
本地独立模式:在本地安装Mysql,把元数据放到mySql内
远程模式:元数据放置在远程的Mysql数据库

Hive 将元数据存储在 RDBMS 中,一般常用 MySQL 和 Derby。默认情况下,Hive 元数据保存在内嵌的 Derby 数据库中,只能允许一个会话连接,只适合简单的测试。
实际生产环境中不适用,为了支持多用户会话,则需要一个独立的元数据库,使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持。
内置的derby主要问题是并发性能很差,可以理解为单线程操作。Derby还有一个特性。更换目录执行操作,会找不到相关表等
比如在/usr下执行创建表,在/usr下可以找到这个表。在/etc下执行查找这个表,就会找不到 。

二、Hive安装步骤:
所以这里我们选择第二种模式:本地独立模式,将元数据存到mysql当中,
Hive只在一个节点上安装即可

1.上传tar包

2.解压

tar -zxvf hive-0.9.0.tar.gz -C /cloud/

3.安装mysql数据库(切换到root用户)(装在哪里没有限制,只要网络和hadoop集群的节点互通即可)
    mysql安装仅供参考,不同版本mysql有各自的安装流程

rpm -qa | grep mysql  //列出所有被安装的mysql rpm
        rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps  //移除默认安装包
        rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm  //安装mysql 服务端
        rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm  //安装mysql 客户端

    修改mysql的密码

/usr/bin/mysql_secure_installation

(注意:删除匿名用户,允许用户远程连接)
    登陆mysql

mysql -u root -p

4.配置hive
    (a)配置HIVE_HOME环境变量  vi conf/hive-env.sh 配置其中的$hadoop_home
    (b)配置元数据库信息   vi  hive-site.xml
    添加如下内容:

<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>

    
5.安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
    如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)

mysql -uroot -p

 #(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

6. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的
/home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar

启动hive

bin/hive

6. 建表(默认是内部表)

create table trade_detail(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '\t';

    建分区表

create table td_part(id bigint, account string, income double, expenses double, time string) partitioned by (logdate string) row format delimited fields terminated by '\t';

    建外部表

create external table td_ext(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '\t' location '/td_ext';

7.创建分区表
    普通表和分区表区别:有大量数据增加的需要建分区表

create table book (id bigint, name string) partitioned by (pubdate string) row format delimited fields terminated by '\t';

    分区表加载数据

load data local inpath './book.txt' overwrite into table book partition (pubdate='2010-08-22');
    
load data local inpath '/root/data.am' into table beauty partition (nation="USA");

select nation, avg(size) from beauties group by nation order by avg(size);

 

 

喜欢的朋友点个关注哦~~