Hive笔记一之基本概念与安装
2016-12-13 22:27
357 查看
简介
随着数据量的增大传统数据库已经不能支持所以需要将海量的数据迁移到hdfs上,而伴随着海量数据的迁移原有的业务也需要进行迁移。而hive提供了使用sql来操作大数据不一定非要求会写mapreduce,这样就降低了迁移难度。Hive是facebook公司开发在08年由其贡献给了apach基金会是hadoop生态圈中的重要组成部分。1.hive是建立在hadoop基础之上的数据仓库
数据仓库存放的数据可以为公司各个级别的业务决策提供支撑,进入数据仓库的数据只能查询追加不能修改OLAP(OLTP可以修改)。
2.hive可以对数据进行ETL操作
Extract----提取,从服务器上采集相关的数据如日志。
Transform----转化,对采集的数据按照一定的格式进行转化以便入库。
Load----加载,将转化的数据录入到仓库中。
3.hive是sql的解析引擎
提供类似sql的hql来查询,hive最终将sql转化为mapreduce任务然后在hadoop中执行,几乎无事务,
4.hive允许自定义map和reduce处理内建的map和reduce无法完成的复杂工作
5.hive表对应hdfs的目录
Hive表中的数据对应hdfs目录下的文件
Hive表中的行对应hdfs目录下文件中的行
Hive表中的列对应hdfs目录下文件中的列
6.hive相当于hadoop的一个客户端工具,不一定部署在管理节点
7.hive是用来作离线数据分析的
数据存储
1. hive的数据存储基于hdfs,它没有专门的数据存储格式2. 存储结构主要包括,数据库,文件,表,表,视图,索引。
3. 默认可以加载文本,支持sequenceFile
4. 创建表时必须指定行列分隔符,这样才能解析hdfs数据,也有默认的分隔符。
体系架构
1客户端CLI,shell命令;java,使用jdbc;webGUI,使用浏览器访问
2.元数据
存储hive表的名字列属性和与hdfs的映射关系,通常存储在关系型数据库中如derby,mysql,但是derby只支持单会话所以一般用mysql存储元数据。
3.解释器,编译器,优化器,执行器:
对hql进行语法分析,编译,优化,生成执行计划并存储在hdfs中,最后由mapreduce调用执行。
安装mysql
我使用的是在线安装并且使用root用户登录linux1.卸载已安装的mysql依赖
执行rpm -qa | grep mysql命令,显示如下
[root@shb01 local]# rpm -qa | grep mysql
mysql-libs-5.1.73-5.el6_6.x86_64
2.执行安装
[root@shb01 local]# yum install -ymysql-server
3.启动
[root@shb01 local]# service mysqld start
4.初始化
[root@shb01 local]#mysql_secure_installation
此处我的密码设置为root
5.加入开机启动项
[root@shb01 local]# chkconfig mysql on
6. 登录mysql
[root@shb01 local]# service mysqld status
mysqld (pid 3904) is running...
[root@shb01 local]# mysql -u root -p
-u后市用户名,-p输入密码后登录,我的用户名是root密码也是root,刚刚在第四部初始化时设置的。
7. 权限授予
grant all privileges on *.* to 'root'@'%'identified by 'root';
flush privileges;
8. 注意
离线安装中的mysql 服务为mysql,在线安装中mysql 服务为mysqld
离线服务操作sudo service mysql [start|stop|restart|status]
在线服务操作sudo service mysqld [start|stop|restart|status]
Sudo是非root用户使用,root用户去掉sudo
安装Hive
1.下载安装包Hadoop使用的是2.6,hive是hive-1.0.1
Hive下载地址:http://hive.apache.org/downloads.html
安装包为:apache-hive-1.0.1-bin.tar.gz
2.解压安装包并修改文件
[root@shb01 local]# tar -zxvf apache-hive-1.0.1-bin.tar.gz
进入解压后hive目录结构如下图
进入conf目录修改文件名
[root@shb01 conf]# cp hive-env.sh.templatehive-env.sh
[root@shb01 conf]# cp hive-default.xml.template hive-site.xml
修改hive-env.sh文件,配置java,hive,hadoop
export JAVA_HOME=/usr/local/jdk1.7.0_79
export HIVE_HOME=/usr/local/apache-hive-1.0.1-bin
export HADOOP_HOME=/usr/local/hadoop-2.6.0
修改hive-site.xml
首先修改元数据的存储数据库,hive默认是derby改成mysql,一共四项URL,Driver,username,password
另外在修改3个路径
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBCmetastore</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 metastoredatabase</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastoredatabase</description>
</property>
以下3个property路径全部改为/usr/local/apache-hive-1.0.1-bin/tmp,0.12以上版本增加
<property>
<name>hive.querylog.location</name>
<value>/usr/local/apache-hive-1.0.1-bin/tmp</value>
<description>Location of Hive run time structured logfile</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/apache-hive-1.0.1-bin/tmp</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/apache-hive-1.0.1-bin/tmp</value>
<description>Temporary local directory for added resources in theremote file system.</description>
</property>
将mysql的java驱动包放到hive的lib目录下
将mysql-connector-java-5.1.33-bin.jar放到目录/usr/local/apache-hive-1.0.1-bin/lib下
3.启动Hive
首先启动hadoop,启动mysql
在hive的bin目录下执行hive命令
/usr/local/apache-hive-1.0.1-bin/bin
[root@shb01 bin]# hive
此时进入mysql,执行show create database hive;命令,注意mysql的编码格式必须是latin1否则会报错,如果不是使用命令修改alter database hive character set latin1;
Hive的访问方式
前面的体系架构中介绍了hive的客户端有三种分别是CLI,shell命令;java,使用jdbc;webGUI,使用浏览器访问。CLI访问方式
Hive终端
在hive中直接执行hql语句
inux终端
在linux中使用sh命令来执行一个hql脚本,注意hive.hql的路径
sh $HIVE_HOME/bin/hive -f hive.hql
Java访问方式
此种方式实在java代码中调用hive的jdbc,这个后面会专门介绍
WebGUI访问方式
此种需要搭建环境,在Hive下载地址:http://hive.apache.org/downloads.html中下载源码,注意第一个是安装包,第二个是源码。
下载后将其拷贝到linux下并解压
tar -zxvf apache-hive-1.0.1-src.tar.gz
进入解压后的hwi子目录制作war包
在/usr/local/apache-hive-1.0.1-src/hwi目录下执行jar cvfM0 hive-1.0.1.war -C web/ .
生成war包
拷贝war包和JAVA_HOME/lib下的tools.jar到hive的lib目录下,是这个目录/usr/local/apache-hive-1.0.1-bin/lib
修改hive-site.xml文件,文件在这个目录下/usr/local/apache-hive-1.0.1-bin/conf
<property>
<name>hive.hwi.listen.host</name>
<value>shb01</value>
<description>This is the host address the Hive Web Interface willlisten on</description>
</property>
//value改为ip或主机名
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>
<description>This is the port the Hive Web Interface will listenon</description>
</property>
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-1.0.1.war</value>
<description>This sets the path to the HWI war file, relative to${HIVE_HOME}. </description>
</property>
//Value是刚刚生成并拷贝到hive的lib目录下的war包
重新启动hive
在hive的bin目录下执行启动命令
[root@shb01bin]# hive --service hwi >/dev/null 2&>1 &
在浏览器访问地址:http://shb01:9999/hwi。如下图
好,到此结束
相关文章推荐
- hive的基本概念和安装
- 简明pyton教程学习笔记 1-5 介绍+安装python+最初的步骤+基本概念+运算符与表达式
- Spring4学习笔记一:环境搭建与插件安装、基本概念理解
- Hive基础(1)概念、安装、使用笔记
- ActiveMQ应用笔记一:基本概念&安装
- kafka学习笔记——基本概念与安装
- Hbase笔记一之基本概念,安装
- Kafka学习笔记-基本概念与安装部署
- Hive基础概念、安装部署与基本使用
- 大数据学习笔记——Hadoop1.x基本概念和安装
- ActiveMQ应用笔记一:基本概念&安装
- [WCF 学习笔记] 1. 基本概念
- 优秀课件笔记之经营决策常用的成本概念及基本方法
- 优秀课件笔记之计算机的基本概念和分类
- Programming ASP.NET 学习笔记(要点)第3章 控件:基本概念
- SOA学习笔记(一)----SOA基本概念
- 孙鑫VC学习笔记:第十四讲 (一) 网络的基本概念
- IOStream系统学习笔记 IOStream基本概念
- C#学习笔记(二十):Windows应用程序安装部署概念
- MPEG4 & H.264学习笔记之二 ------ 视频编码基本概念及时域模型