作者:2551529836hive,今天小编就来聊一聊关于hive怎么查询大数据?接下来我们就一起去研究一下吧!
hive怎么查询大数据
作者:2551529836
hive
** Facebook开源
** 官网:hive.apache.org
** Hive是基于Hadoop的一个数据仓库工具
Hive与数据库:
数据库: mysql、oracle、DB2、sqlserver
数据仓库 !== 数据库 换言之, Hive不是数据库
为什么要选择hive
** MapReduce编程成本高
** 针对传统的DBA,不会不熟悉java,要想数据分析,借助Hive
Hive简介:
** 流程
** HQL --> Hive(java) --> mapreduce -->yarn --> HDFS
** 本质: 将HQL转化成MapReduce程序
** 使用MapReduce计算模型,运行在yarn平台之上
** Hive适合离线批量处理,延时比较大
** 不适合在线业务实时分析结果,业务要求延时较低的场景不适合
Hive体系结构
** 用户接口: Client
** 终端命令行CLI --主要的一种使用方式
** jdbc方式 --几乎不用
** 元数据:metastore
** 默认apache使用的是derby数据库(只能有一个客户端使用),CDH使用postgreDB
** 企业通常我们会选择另外一种mysql来存储
** 元数据包括:表名、表所属的数据库(默认是default)、
表的拥有者、列/分区字段、表的类型(是否是外部表)、
表的数据所在目录等
** 这里并没有存储Hive表的真实数据
** Hadoop
** 使用HDFS进行存储
** 使用MapReduce进行计算
** 驱动器: Driver
** 解析器: 解析Hql语句
** 编译器: 把sql语句翻译成MapReduce程序
** 优化器: 优化sql语句
** 执行器: 在yarn平台运行MapReduce程序
====Hive安装======================================================
** 版本 0.13.1(和后面使用到的框架兼容性好)
hive安装所需要的环境:
1、安装JDK,然后测试
$ java -version
2、安装Hadoop
** 确保Hadoop可以正常使用(测试:上传文件、或者运行jar)
$ hdfs dfs -mkdir /input2 #在HDFS上创建文件夹,没有类似-cd进入目录的参数
$ hdfs dfs -mkdir -p /aaa/bbb/ccc #级联创建目录
$ hdfs dfs -ls / #查看
$ hdfs dfs -put b.txt /input #把本地文件拷到HDFS
$ hdfs dfs -cat /input2/b.txt #查看文件
$ hdfs dfs -rm /input2/b.txt #删除文件
$ hdfs dfs -rmr /input? #递归删除文件夹和里面的文件,推荐使用'-rm -r'格式;单字符通配符'?'
$ hdfs dfs -help
3、安装mysql
$ su -
# yum -y install mysql --安装mysql客户端、常用命令
# yum -y install mysql-server --mysql服务
# yum -y install mysql-devel --mysql develop扩展包
***以上可以合并为一句,-y表示所有提问回答都为yes
# yum -y install mysql mysql-server mysql-devel
# rpm -qa|grep mysql --查看安装的mysql
# rpm -ql mysql-server-5.1.73-7.el6.x86_64 --查看安装位置
# rpm -e --nodeps mysql-server-5.1.73-7.el6.x86_64 --卸载,nodeps:不检查依赖
# service mysqld start --启动mysql服务
# chkconfig mysqld on --设置开机启动
# /usr/bin/mysqladmin -uroot password 'root' --初始化密码,只能执行一次
给用户授权:
# mysql -uroot -proot
*** grant 权限 on 数据库对象(数据库.表) to 用户
mysql> grant all on *.* to root@'blue01.mydomain' identified by 'root';
mysql> flush privileges; #刷新授权表,可以不执行
mysql> set password for root@localhost = password('root'); --修改密码
mysql> show databases;
** mysql数据库默认只允许root用户通过localhost(127.0.0.1)来登录使用
** 想要使用Windows上的Navicat登录,需要授权
** mysql> grant all on *.* to root@'192.168.122.1' identified by 'root';
附:yum命令和rpm命令安装的都是rpm包
yum安装包的来源: 来自互联网(由仓库配置文件指定)
rpm安装包的来源: 先提取现在需要安装的软件包
----------------------
4、开始安装Hive
# su - tom
$ tar zxf /opt/softwares/apache-hive-0.13.1-bin.tar.gz
** 在conf/目录:
$ cp -a hive-env.sh.template hive-env.sh --重命名,-a连同原来属性一起复制
$ cp -a hive-default.xml.template hive-site.xml
5、修改hive-env.sh
JAVA_HOME=/opt/modules/jdk1.7.0_67
HADOOP_HOME=/opt/modules/hadoop-2.5.0
export HIVE_CONF_DIR=/opt/modules/apache-hive-0.13.1-bin/conf
6、配置hive-site.xml,注意:用户名和密码不可以有空格
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://blue01.mydomain:3306/metastore?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>root</value>
</property>
7、拷贝mysql驱动到lib/
** 若是jar已解压,则不必执行这步:$ tar zxf mysql-connector-java-5.1.27.tar.gz
$ cp mysql-connector-java-5.1.27-bin.jar /opt/modules/apache-hive-0.13.1-bin/lib/
8、进入Hadoop目录,修改目录权限
** /tmp存放临时文件
$ bin/hadoop fs -chmod g w /tmp #给用户组加上写的权限
** /user/hive/warehouse为Hive存放数据的目录
$ bin/hdfs dfs -mkdir -p /user/hive/warehouse
$ bin/hadoop fs -chmod g w /user/hive/warehouse
9、启动客户端使用Hive
$ bin/hive --用法几乎跟mysql一样
hive> show databases;
,