首页 > > > 疯狂Hive之Hivean安装部署与交互方式(一)
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
本质是将SQL转换为MapReduce程序。
主要用途:用来做离线数据分析,比直接用MapReduce开发效率更高。
当直接使用Hadoop MapReduce处理数据所面临的问题
人员学习成本高
MapReduce实现复杂查询逻辑开发难度大
使用Hive
操作接口采用类SQL语法,提供快速开发的能力
避免了去写MapReduce,减少开发人员的学习成本
功能扩展很方便
用户接口:包括CLI、JDBC/ODBC、WebCUI。其中,CLI(command line interface)为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebCUI是通过浏览器访问Hive
元数据存储:通常是存储在关系型数据库如mysql/derby中。Hive将元数据存储在数据库中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),标的数据所在目录等
解释器、编译器、优化器、执行器:完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行
Hive与Hadoop的关系:Hive利用HDFS存储数据,利用MapReduce查询分析数据
Hive用于海量数据的离线数据分析
Hive具有SQL数据库的外表,但是应用场景完全不同,Hive只适合用来做批量数据统计分析
更直观的对比请看下面这张图

Hive安装前需要安装好JDK和Hadoop。配置好环境变量
根据元数据存储的介质不同,分为下面两个版本,其中derby属于内嵌模式。实际生产环境中则使用mysql来进行元数据的存储
解压Hive安装包
bin/hive启动即可使用
缺点:不同路径启动Hive,每一个Hive拥有一套自己的元数据,无法共享
详细步骤:
1、上传Hive安装包


解压命令:tar -zxvf apache-hive-1.2.1-bin.tar.gz
进入启动命令所在目录:cd apache-hive-1.2.1-bin/bin/
启动derby版Hive命令:./hive

显示已存在的数据库名称
命令:show databases;

创建数据库
命令:create database gw;

在gw数据库中创建一张表t_user
使用数据库命令:use gw;
创建表命令:create table t_user(id int,username string,password string);

显示数据库中的表
命令:show tables;

注意:derby版元数据与启动路径有关系,如果启动的路径不同,那么就会创建新的元数据(元数据不共享),一般用于测试版使用
解压、修改配置文件
vi conf/hive-site.xml
配置Mysql元数据库信息
详细步骤:
1、上传Hive安装包


2、解压安装包
解压命令:tar -zxvf apache-hive-1.2.1-bin.tar.gz
安装命令:yum install mysql mysql-server mysql-devel
安装完成后启动mysql命令:/etc/init.d/mysqld start
进入mysql交互界面命令:mysql

设置mysql用户名与密码
use mysql;
update user set password=password('root') where user='root';
flush privileges;
设置mysql允许远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
退出mysql命令:exit
查看mysql服务是否启动命令:service mysqld status

设置mysql服务开机启动命令:chkconfig mysqld on
进入配置文件所在目录:cd apache-hive-1.2.1-bin/conf/

配置hive-env.sh文件
拷贝hive-env.sh文件命令:cp hive-env.sh.template hive-env.sh
编辑文件:vi hive-env.sh
在hive-env.sh中需要配置hadoop的安装路径

配置hive-site.xml文件
因为文件不存在,所以创建一个hive-site.xml文件
创建命令:vi hive-site.xml
在该文件中编写如下内容
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/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>root</value>
</property>
</configuration>
添加mysql连接驱动
接下来需要将mysql连接驱动添加到hivean安装包的lib目录下
进入目录:cd apache-hive-1.2.1-bin/lib/
将以下jar包上传到该目录下


5、启动Hive
此时启动Hive,查看在不同路径下启动,元数据是否会共享
在apache-hive-1.2.1-bin路径下输入命令:bin/hive启动Hive,然后创建一个数据库hello,创建完成之后退出Hive

在apache-hive-1.2.1-bin/bin路径下输入命令:./hive启动Hive,查看是否存在hello数据库,如果存在,表示元数据已经共享

此种交互方式就是启动Hive之后,输入一条命令,执行完成之后结果直接跟在后面打印出来。如:
在hello数据库中创建一张t_user表
使用数据库命令:use hello;
创建表命令:create table t_user(id int,username string,password string);

此种方式适用于生产环境,Hive启动一个服务,其他机器可以通过某种方式连接到Hive上
在node01上启动Hive服务,在apache-hive-1.2.1-bin路径下启动服务命令为:bin/hiveserver2

此时Hive服务启动,并处于阻塞状态,等待其他机器连接
scp -r apache-hive-1.2.1-bin root@node02:/root/

连接命令:bin/beeline

配置连接协议: ! connect jdbc:hive2://node01:10000
输入访问机器node01上Hive的用户名与密码,此时就能连接Hive服务

此时在node02上输入命令:show databases;

在node01上就会获取到监听内容,并输出OK(如果输入错误命令,在node01上 会打印相应的错误信息)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/818/viewspace-3131980/ ,如需转载,请注明出处,否则将追究法律责任。