hive只是一个客户端,只要安装机器上有jdk和Hadoop就可以,解压即用
因为hive默认是derby数据库,而derby数据库的弊端如下
①默认只会从当前目录下读取metastore_db的库文件
②不支持多实例同时使用一个库
所以重点是如何配置数据库在MySQL上
1、检查有没有旧的MySQL,有就进行卸载
rpm -qa | grep mysql rpm -qa | grep MySQL
sudo rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_6
2、安装MySQL的服务端和客户端
sudo rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm sudo rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
3、设置密码
//查看随机生成的密码: sudo cat /root/.mysql_secret //启动服务: sudo service mysql start //登录后修改密码: mysql -uroot -p刚查询的随机密码 //修改密码: SET PASSWORD=password('密码')
4、使root用户可从任意机器登录
//删除除了localhost的所有用户 delete from mysql.user where host <> 'localhost'; //修改root用户可以从任意机器登录: update mysql.user set host='%' where user='root'; //刷新 flush privileges;
//查看当前连接的线程:
sudo mysqladmin processlist -uroot -p123456
5、到hive 的conf目录下配置hive-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop102:3306/metastore?createDatabaseIfNotExist=true</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>000000</value> <description>password to use against metastore database</description> </property> </configuration>
6、mysql-connector-java-5.1.27.tar.gz驱动包复制到hive的lib目录下
7、注意,metastore数据的编码必须为latin1!因为系统会按照MySQL的配置创建库,所以建议自己手动创建该库,确保编码正确!
另外如果是MySQL5.5版本,需要另外配置my.cnf文件(在/usr/share/mysql/ 中找到my.cnf的配置文件,拷贝其中的my-huge.cnf 到 /etc/ 并命名为my.cnf 。)
[mysqld]
//新增以下字段
binlog_format=ROW
接下来就是hive的一些常用配置
在hive-site中配置以下参数
<!--更改default仓库的路径--> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse</description> </property> <!-- 将当前使用的数据库和查询的表头显示--> <property> <name>hive.cli.print.header</name> <value>true</value> </property> <property> <name>hive.cli.print.current.db</name> <value>true</value> </property> <!-- 下面是hive 2.0X需要的配置--> <!-- 强制metastore的schema一致性,开启的话会校验在metastore中存储的信息的版本和hive的jar包中的版本一致性, 并且关闭自动schema迁移,用户必须手动的升级hive并且迁移schema,关闭的话只会在版本不一致时给出警告--> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <!-—如果数据库中没有元数据信息表,则自动创建,用户也可用bin/schematool自己创建--> <property> <name>datanucleus.schema.autoCreateAll</name> <value>true</value> </property> <!-—允许其他支持thrift协议的框架读取元数据来进行计算--> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop102:9083</value> </property>
2、hive 的运行日志默认存放在Linux 根目录下/tmp/${user}/hive.log/文件夹下,
如果要修改,需要将hive/conf下hive-log4j.properties.template文件名称为
hive-log4j.properties并修改参数
hive.log.dir=要存放的路径;
Hive 2.0X版本使用注意点
hive2.0x需要开启metastore元数据服务,才能访问hive的元数据
nohup bin/hive --service metastore &
使用其他工具远程连接Hive
编辑hdfs-site.xml,添加如下属性:
<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property>
编辑core-site.xml添加如下属性:
<property> <name>hadoop.proxyuser.atguigu.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.atguigu.groups</name> <value>*</value> </property>
分发重启集群
开启hiveserver2服务
nohup bin/hive --service hiveserver2 &