Hive
基本概念
- 数据仓库(历史数据,用于计算分析)
- 解释器、编译器、优化器等(将sql转换为MR,提交给Hadoop集群)。
- hive运行时,元数据(表、库、字段、属性)存储在关系型数据库(在线数据,交互式)里面,数据存储在HDFS里面
架构图
HIVE 搭建模式
- local (测试/但不推荐)Derby数据库(自带)
- 单用户模式 Mysql
- 多用户/远程服务器模式(MetaStore Server)
单用户模式
- 安装mysql
yum install mysql-server -y- 启动服务
service mysqld start- 设置开机启动
chkconfig mysql on
查看开机启动列表
chkconfig mysql --list- 通过mysql命令连接数据库
mysql 连接成功- 登录权限控制
show databases;
use mysql;
show tables;
desc user;
select host, user, password from user;
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
delete from user where host != ‘%’;
flush privileges;
quit;- mysql -u root -p 123 登录验证
- hive 安装
下载链接 apache-hive-2.1.1-bin.tar.gz
下载链接mysql-connector-java-5.1.6.jar
1.上传安装包
sz -e
2.解压
tzr -zxvf apache-hive-2.1.1-bin.tar.gz /usr/local/software/
3.配置环境变量
vim /etc/profile
export HIVE_HOME=/usr/local/software/apache-hive-2.1.1
PATH=$HIVE_HOME/bin
:wq
source /etc/profile
4.配置文件修改
cp hive-default.xml.template hive-site.xml
vim hive-site.xml
//删除默认的配置
:.,$-1d
//更改配置hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>username</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>pwd</value>
</property>
//上传jar包 mysql-connector-java-5.1.6.jar
/usr/local/software/apache-hive-2.1.1/lib
//jline 需要更改hadoop 中jline 低版本为高版本
//路径
/usr/local/software/hadoop-2.6.0/share/hadoop/yarn/lib
//启动验证
hive
多用户模式
1.分发服务端到其他节点,然后更改配置
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
2. 启动服务端
hive --service metasore
后台启动
hive --service metasore & > hive.log
客户端直接
hive
ss -nal
查看9083
Hive SQL
DDL
1. DESC TBNAME;
2. DESC FORMATTED + TBNAME;
3. SHOW CREATE TABLE + TBNAME ;
4. hive 建表外部指定 Location(EXTERNAL TABLE),删除表 (DROP TABLE + TBNAME) 只是删除了元数据,但数据并不删除。
5. 分区:PARTITIONED BY (col_name data_type [COMMENT col_comment], ...) 根据col_name 建不通的子目录进行管理。
- 分区字段不能在建表的字段里面;
- 分区字段太多、粒度太细不易维护;
6. ALTER PARTITION/TABLE
DML
1.LOAD DATA LOCAL INPATH 'filepath' INTO TABLE tab1 partition(month='10',....);