Hive初识入门
2016-10-17 19:30
337 查看
Hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能。本质是将HQL转换为MapReduce程序。数据存储在HDFS上。
hive架构
用户接口:Client
CLI(hive shell)、JDFB/ODBC(java访问hive)、WEBUI(浏览器访问hive)
元数据:Metastore
元数据包括:表名、表所属的数据库(默认default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等等。默认存储在自带的derby数据库中(只允许单个用户使用),推荐采用Mysql数据库。
Hadoop
使用HDFS进行存储,使用MapReduce进行计算
驱动器:Dirver
包含:解析器、编译器、优化器、执行器
解析器:将SQL字符串转换成抽象语法树AST,这一步一般都是第三方工具完成。
编译器:将AST编译成逻辑执行计划
优化器:对逻辑执行计划进行优化
执行器:把逻辑执行计划转换成可以运行的物理计划。对与hive来说就是MR、Spark
hive优点与使用场景
操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
避免了去写MR,减少开发人员的学习成本
统一的元数据管理,可以与impala/spark等共享元数据
易扩展(HDFS+MapReduce:可以扩展集群规模;支持自定义函数)
数据的离线处理;比如:日志分析、海量结构化数据离线分析
Hive的执行延迟比较高,因此hive常用于离线数据分析的,对于实时性要求不高的场合
Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高
Hive环境搭建(基于hadoop之上)
$ tar -xzvf hive-x.y.z.tar.gz –C /opt/modules/
在hive安装目录下修改配置文件
vi hive-env.sh
修改HADOOP_HOME=/opt/modules/hadoop-2.5.0
修改export HIVE_CONF_DIR=/opt/modules/hive-0.13.1/conf
Hive数据仓库位置配置
默认情况是在/user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse
启动
bin/hivehive shell
create database db_hive ;
create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
show tables ;
desc student ;
desc extended student ;
desc formatted student ;
use db_hive ;
load data local inpath '/opt/datas/student.txt'into table db_hive.student ;
show functions ;
desc function upper ;
desc function extended upper ;
select id ,upper(name) uname from db_hive.student ;
usage: hive
-d,--define <key=value> Variable subsitution to apply to hive
commands. e.g. -d A=B or --define A=B
--database <databasename> Specify the database to use
-e <quoted-query-string> SQL from command line
-f <filename> SQL from files
-H,--help Print help information
-h <hostname> connecting to Hive Server on remote host
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
-i <filename> Initialization SQL file
-p <port> connecting to Hive Server on port number
-S,--silent Silent mode in interactive shell
-v,--verbose Verbose mode (echo executed SQL to the
console)
* bin/hive -e <quoted-query-string>
eg:
bin/hive -e "select * from db_hive.student ;"
* bin/hive -f <filename>
eg:
$ touch hivef.sql
select * from db_hive.student ;
$ bin/hive -f /opt/datas/hivef.sql
$ bin/hive -f /opt/datas/hivef.sql > /opt/datas/hivef-res.txt
* bin/hive -i <filename>
与用户udf相互使用
在hive cli命令窗口中如何查看hdfs文件系统
hive (default)> dfs -ls / ;
在hive cli命令窗口中如何查看本地文件系统
hive (default)> !ls /opt/datas ;
hive架构
用户接口:ClientCLI(hive shell)、JDFB/ODBC(java访问hive)、WEBUI(浏览器访问hive)
元数据:Metastore
元数据包括:表名、表所属的数据库(默认default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等等。默认存储在自带的derby数据库中(只允许单个用户使用),推荐采用Mysql数据库。
Hadoop
使用HDFS进行存储,使用MapReduce进行计算
驱动器:Dirver
包含:解析器、编译器、优化器、执行器
解析器:将SQL字符串转换成抽象语法树AST,这一步一般都是第三方工具完成。
编译器:将AST编译成逻辑执行计划
优化器:对逻辑执行计划进行优化
执行器:把逻辑执行计划转换成可以运行的物理计划。对与hive来说就是MR、Spark
hive优点与使用场景
操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)避免了去写MR,减少开发人员的学习成本
统一的元数据管理,可以与impala/spark等共享元数据
易扩展(HDFS+MapReduce:可以扩展集群规模;支持自定义函数)
数据的离线处理;比如:日志分析、海量结构化数据离线分析
Hive的执行延迟比较高,因此hive常用于离线数据分析的,对于实时性要求不高的场合
Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高
Hive环境搭建(基于hadoop之上)
$ tar -xzvf hive-x.y.z.tar.gz –C /opt/modules/在hive安装目录下修改配置文件
vi hive-env.sh
修改HADOOP_HOME=/opt/modules/hadoop-2.5.0
修改export HIVE_CONF_DIR=/opt/modules/hive-0.13.1/conf
Hive数据仓库位置配置
默认情况是在/user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse
启动
bin/hivehive shell
show databases ; use default; show tables ; create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; load data local inpath '/opt/datas/student.txt'into table student ; select * from student ; 不走MR select id from student ;安装mysql
查看是否已经安装: # rpm -qa|grep mysql 卸载已经安装的mysql: # rpm -e --nodeps mysql-* 安装rpm包 # rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm 生成默认密码路径在: cat /root/.mysql_secret 启动mysql: # service mysql start 查看状态: # service mysql status 安装客户端包: # rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm 修改mysql密码 先登录:mysql –uroot -p前面默认密码 修改密码:UPDATE user SET Password=PASSWORD('123456') where USER='root'; 拷贝mysql驱动jar包,到Hive安装目录的lib下 $ cp mysql-connector-java-5.1.27-bin.jar /opt/modules/hive-0.13.1/lib/ 设置远程用户登录mysql 进入mysql有一张user表,select User,Host,Password from user;可以查看用户连接信息。 执行 update user set host=’%’ where user = root and host = 'localhost' ; 后任何机器都能连接上。执行Flush privileges;配置hive-site.xml
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://<host name>/<database name>?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.ConnectionUserName </name> <value>123456</value> </property>Hive数据仓库位置配置
default /user/hive/warehouse 注意事项 * 在仓库目录下,没有对默认的数据库default创建文件夹 * 如果某张表属于default数据库,直接在数据仓库目录下创建一个文件夹 <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property>在cli命令行上显示当前数据库,以及查询表的行头信息
配置$HIVE_HOME/conf/hive-site.xml <property> <name>hive.cli.print.header</name> <value>true</value> <description>Whether to print the names of the columns in query output.</description> </property> <property> <name>hive.cli.print.current.db</name> <value>true</value> <description>Whether to include the current database in the Hive prompt.</description> </property>配置日志信息
Hive运行日志信息位置 $HIVE_HOME/conf/hive-log4j.properties hive.log.dir=/opt/modules/hive-0.13.1/logs hive.log.file=hive.log 指定hive运行时显示的log日志的级别 $HIVE_HOME/conf/hive-log4j.properties hive.root.logger=INFO,DRFA
hive的基本操作
show databases ;create database db_hive ;
create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
show tables ;
desc student ;
desc extended student ;
desc formatted student ;
use db_hive ;
load data local inpath '/opt/datas/student.txt'into table db_hive.student ;
show functions ;
desc function upper ;
desc function extended upper ;
select id ,upper(name) uname from db_hive.student ;
Hive Shell常用操作
[beifeng@hadoop-senior hive-0.13.1]$ bin/hive -helpusage: hive
-d,--define <key=value> Variable subsitution to apply to hive
commands. e.g. -d A=B or --define A=B
--database <databasename> Specify the database to use
-e <quoted-query-string> SQL from command line
-f <filename> SQL from files
-H,--help Print help information
-h <hostname> connecting to Hive Server on remote host
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable subsitution to apply to hive
commands. e.g. --hivevar A=B
-i <filename> Initialization SQL file
-p <port> connecting to Hive Server on port number
-S,--silent Silent mode in interactive shell
-v,--verbose Verbose mode (echo executed SQL to the
console)
* bin/hive -e <quoted-query-string>
eg:
bin/hive -e "select * from db_hive.student ;"
* bin/hive -f <filename>
eg:
$ touch hivef.sql
select * from db_hive.student ;
$ bin/hive -f /opt/datas/hivef.sql
$ bin/hive -f /opt/datas/hivef.sql > /opt/datas/hivef-res.txt
* bin/hive -i <filename>
与用户udf相互使用
在hive cli命令窗口中如何查看hdfs文件系统
hive (default)> dfs -ls / ;
在hive cli命令窗口中如何查看本地文件系统
hive (default)> !ls /opt/datas ;
相关文章推荐
- 一、HIVE 初识入门笔记
- hadoop的数据仓库--Hive初识入门
- Hadoop入门之Hive的DDL和DML
- vagrant入门教程--初识vagrant(1)
- 《走进大数据之Hive入门》学习笔记(1)
- Hive快速入门
- hive入门学习:数据倾斜的解决方案
- WPF从入门到放弃系列第一章 初识WPF
- Hadoop入门之Hive自定义函数和Transform
- Hive 入门
- hive入门-安装
- log4j——入门初识
- hadoop入门第七步---hive部署安装(apache-hive-1.1.0)
- HDFS+MapReduce+Hive+HBase十分钟快速入门
- T-SQL入门攻略之1-初识T-SQL
- Hive入门——hive介绍
- Hive 和 HBase 的快速入门
- 【HIVE 入门1】 安装
- [Hadoop大数据]——Hive初识
- HDFS+MapReduce+Hive+HBase十分钟快速入门