您的位置:首页 > 数据库 > MySQL

Hive的安装配置和连接mysql

2016-11-15 22:16 447 查看

一、基础介绍

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件(存储在hdfs中)映射为一张数据库表,并提供类SQL查询功能,通过使用hive的sql脚本来操作数据(hql),本质是将SQL转换为MapReduce程序 。

它包括解释器(把脚本解释成java代码),编译器(编译java代码,其实就是mapreduce代码,提交到hadoop),优化器等。

hive运行时,一定要有元数据(存储真实数据到逻辑表的映射),它存储在关系型数据库里,hive自带的derby数据库不稳定,我们用mysql。

hive的特点:

1、操作接口采用类SQL语法,提供快速开发的能力 

2、避免了去写MapReduce,减少开发人员的学习成本 

3、扩展功能很方便 ,容错性好

4、虽然执行延迟高,但处理数据规模大

hql脚本有三种方式执行:

1、hive -e 执行一个sql脚本(一行),如:
hive -e 'select a.col from tab1 a'
2、hive -f 执行一个sql文件,如:
hive -f /home/my/hive-script.sql
3、hive jdbc 代码执行脚本,即java语句

hive命令行操作:
hive> set mapred.reduce.tasks=32; 设置变量
hive> set; 打印用户改变的变量
hive> select a.* from tab1; 直接执行sql脚本
hive> !ls; 	在hive命令行中执行一个普通命令行操作
hive> dfs -ls; 在hive命令行中执行dfs命令

二、hive搭建与连接mysql

使用hive要先启动hadoop,关于Hadoop的搭建可以参看我的另一篇文章:完全分布式Hadoop集群的安装搭建和配置(4节点),下文的节点设置等内容都参照这篇文章。Hadoop启动顺序为:

先在有zk的节点启动zk(zkServer.sh start),然后在主节点启动全部(start-all.sh)

启动之后把hive安装包(我用的0.13.1版本)解压:
sudo tar -zxf ~/下载/apache-hive-1.0.1-bin.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./ apache-hive-1.0.1-bin / ./hive # 将文件夹名改为hive
sudo chown -R hadoop ./hive  #赋予权限
然后进入hive的conf目录,修改配置文件名:
cp -a hive-default.xml.template hive-site.xml
启动hive,在hive的bin目录下(建议在/etc/profile中配好环境变量):
./hive

退出hive交互:quit;

安装mysql:
sudo apt-get install mysql-server mysql-client
把下载的mysql-connector-java包解压缩的jar包放到hive的lib下,但这只能本地登录mysql,不能远程登录,要设置:
mysql -u root -p(登录,密码我设的root)
查看mysql的用户:
mysql> use mysql;
mysql> select * from user;
赋予所有表上的权限给root用户,%表示所有的主机都可以访问,密码是root:
grant all on *.* to root@'%' identified by 'root';
grant all on *.* to root@'Master' identified by 'root';
查看/etc/mysql/my.cnf文件:
bind-address = 127.0.0.1 //找到并注释掉

有的人可能这个my.cnf文件里没有上边的内容,网上查到可以把etc下share下的一个任意一个.cnf文件复制过来,我没试,我是把别人的能用的文件复制过来的,下载链接点我

设置完修改hive-site.xml:

可以用/查找,第一处:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://Master/hive</value>
<description>JDBC connect string for a JDBC metastore</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 metastore database</description>
</property>
第四处:
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>

启动hive时如果报错:拒绝连接。原因是需要先重启mysql服务:service mysql restart

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息