Hive基础(1)概念、安装、使用笔记

Hive
什么是Hive?
Hive是能够用类SQL的方式操作HDFS里面数据一个数据仓库的框架,这个类SQL我们称之为HQL(Hive Query Language)
数据仓库?
存放数据的地方
数据仓库里面存放的是能够为公司的各个级别的决策提供支撑的数据
公司要统计今年各个部门的业务完成指标,依次决定各个部门年终奖的发放,要依赖数据,数据从哪里来?数据仓库!
公司要依据前几年的业务完成和发展情况,来依次制定明年的公司发展规划,要依赖数据,数据从哪里来?数据仓库!
公司要开新品发布会,要邀请10客户和10大潜在客户,怎么获取这些客户呢,要依赖数据,数据从哪里来?数据仓库!
公司要针对某一用户产品的使用情况,依据人物构建模型,来做人物画像,要依赖数据,数据从哪里来?数据仓库!
提取转化加载(ETL)
E:Extract(提取)
T:Transform(转化)
L:Load(加载)
Hive的特征
海量数据的存储
海量数据的查询
不支持事务性操作
Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。
Hive中的概念和HDFS里面概念的对应
Hive中的表----HDFS里面的目录
Hive中的表中的数据----HDFS目录下的(数据)文件
Hive中的行列----HDFS数据文件中的行列
部署时不一定放在集群管理节点中,可以放在某个节点上
=======================================================================================
Hive的数据存储
Hive的数据存储基于Hadoop HDFS
Hive没有专门的数据存储格式
存储结构主要包括:数据库、文件、表、视图、索引
Hive默认可以直接加载文本文件(TextFile),还支持SequenceFile、RCFile 
创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据
Hive的提供架构
用户接口主要有三个:CLI,JDBC/ODBC和 WebUI
CLI,即Shell命令行
JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似
WebGUI是通过浏览器访问 Hive
Hive将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行
Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)
Hive的元数据Metastore
metastore是hive元数据的集中存放地。
metastore默认使用内嵌的derby数据库作为存储引擎
Derby引擎的缺点:一次只能打开一个会话
使用MySQL作为外置存储引擎,多用户同时访问 
==========================================================================================
Hive的安装和使用
我的约定:
JAVA_HOME=/usr/local/jdk1.7.0_55
HADOOP_HOME=/usr/local/hadoop-2.6.0
HIVE_HOME=/usr/local/hive-0.14.0
1、Linux下面
在线安装Mysql
1°、查看mysql的依赖
rpm -qa | grep mysql
2°、删除mysql的依赖
rpm -e --nodeps `rpm -qa | grep mysql`
3°、yum安装mysql
yum -y install mysql-server
4°、启动mysql服务
service mysqld start
5°、加入到开机启动项
chkconfig mysqld on
6°、初始化配置mysql服务
whereis mysql_secure_installation
执行脚本/usr/bin/mysql_secure_installation
7°、访问mysql服务
mysql -h pc.study.crxy.cn -uroot -proot
问题:Host '192.168.1.102' is not allowed to connect to this MySQL server
解决办法:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';
mysql> flush privileges;
离线安装Mysql
1°、查看mysql的依赖
rpm -qa | grep mysql
2°、删除mysql的依赖
rpm -e --nodeps `rpm -qa | grep mysql`或者
rpm -e --nodeps `rpm -qa | grep MySQL`
3°、离线安装mysql
rpm -ivh MySQL-server-5.1.73-1.glibc23.x86_64.rpm
rpm -ivh MySQL-client-5.1.73-1.glibc23.x86_64.rpm
4°、启动mysql服务
service mysql start
5°、加入到开机启动项
chkconfig mysql on
6°、初始化配置mysql服务
whereis mysql_secure_installation
执行脚本/usr/bin/mysql_secure_installation
7°、访问mysql服务
mysql -h pc.study.crxy.cn -uroot -proot
问题:Host '192.168.1.102' is not allowed to connect to this MySQL server
解决办法:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';
mysql> flush privileges;
2、安装Hive
前提是:hadoop必须已经启动了***
1°、解压hive的安装包
[crxy@master soft]# tar -zxvf apache-hive-0.14.0-bin.tar.gz -C ../
2°、备份配置文件
[crxy@master conf]# cp hive-env.sh.template hive-env.sh
[crxy@master conf]# cp hive-default.xml.template hive-site.xml
3°、配置hive的配置文件
1)、修改hive-env.sh
加入三行内容(大家根据自己的情况来添加)
JAVA_HOME=/usr/local/jdk1.7.0_55
   HADOOP_HOME=/usr/local/hadoop-2.6.0
   HIVE_HOME=/usr/local/hive-0.14.0
2)、修改hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://pc.study.crxy.cn:3306/job12_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>crxy</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive-0.14.0/tmp</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hive-0.14.0/tmp</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive-0.14.0/tmp</value>
</property>
4°、拷贝mysql驱动到$HIVE_HOME/lib目录下
[crxy@master bin]# cp /usr/local/soft/mysql-connector-java-5.1.17.jar ../lib/
5°、启动Hive
[crxy@master bin]# ./hive <==>等价于
[crxy@master bin]# ./hive --service cli
=================================================================================================
Hive的使用方式
命令行方式cli:控制台模式
脚本文件方式:实际生产中用的最多的方式
JDBC方式:hiveserver
web GUI接口 hwi方式
安装Web GUI访问方式的步骤
1、解压hive源代码到某个目录,并进入到解压后的一个子文件夹hwi(Hive web interface)
[crxy@master soft]# tar -zxvf apache-hive-0.14.0-src.tar.gz
[crxy@master soft]# cd apache-hive-0.14.0-src/hwi
2°、将hwi下面的web/打成一个war包
[crxy@master hwi]# jar cvfM0 hive-hwi-0.14.0.war -C web/ .
3°、将2°中的war拷贝到$HIVE_HOME/lib目录下
[crxy@master hwi]# cp hive-hwi-0.14.0.war /usr/local/hive-0.14.0/lib/
4°、拷贝$JAVA_HOME/lib/tools.jar到$HIVE_HOME/lib目录下
[crxy@master hwi]# cp /usr/local/jdk1.7.0_55/lib/tools.jar /usr/local/hive-0.14.0/lib/
5°、修改hive的配置文件hive-site.xml
<property>
<name>hive.hwi.listen.host</name>
<value>pc.study.crxy.cn</value>
<description>This is the host address the Hive Web Interface will listen on</description>
</property>
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>.
<description>This is the port the Hive Web Interface will listen on</description>
</property>
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-0.14.0.war</value>
<description>This sets the path to the HWI war file, relative to ${HIVE_HOME}. </description>
</property>
6°、启动hwi
[crxy@master bin]# ./hive --service hwi &
查询9999端口进程
netstat -tunlp | grep 9999
7°、浏览器访问hwi
http://<IP>:9999/hwi/
http://pc.study.crxy.cn:9999/hwi/
=================================================================================================
Hive CLI终端如何和Linux/hadoop fs进行交互
Linux;
hive>! linux命令;eg.
hive>!pwd;
hadoop:
hive> dfs option args; eg.
hive> dfs -ls /;

  1°、linux终端
  sh $HIVE_HOME/bin/hive -f hive.hql(的路径)
sh $HIVE_HOME/bin/hive -hiveconf hive.exec.mode.local.auto=true -f hive.hql
  2°、hive终端
  hive> source hive.hql(hql脚本的linux绝对或相对路径)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值