Hive分布式安装部署(详细教程)Hive+Mysql

Hive分布式安装部署(详细教程)Hive+Mysql

作者:江南sweet
2016年11月22日

每个人在探索的路上,都会遇到大大小小的坑。
踩坑,记下来,既是警示后来的你,也是提醒现在的我,
路漫漫其修远兮,吾将上下而求索。
诸君,加油。

目录
1,环境准备
2,安装hive和配置环境变量
3,安装Mysql
4,在mysql上创建hive元数据库,并对hive进行授权
5,安装jar包到hive
6,配置hive-site.xml
7,元数据存储初始化
8,启动验证hive
9,报错及解决方法

1,环境准备:

准备好Hadoop集群,参照文章:【hadoop分布式集群的安装教程】
启动Hadoop

# cd /opt/hadoop-2.6.4/sbin
# start-all.sh

2,安装hive和配置环境变量

# cd /opt
# tar zxvf apache-hive-2.1.0-bin.tar.gz
# ln -s apache-hive-2.1.0-bin hive      //创建超链接,方便以后版本更新
# vim /etc/bashrc                       //配置环境变量
export HIVE_HOME=/opt/hive
export PATH=$PATH:$HIVE_HOME/bin
# source /etc/bashrc                    //使之生效

3,安装Mysql:

# rpm -q mysql-server                   //检查是否安装mysql
# yum install -y mysql-server           //yum安装
# service mysqld start                  
# chkconfig mysqld on                   //开机启动mysql

4,在mysql上创建hive元数据库,并对hive进行授权

# mysql -uroot
create database if not exists hive_metadata;
grant all privileges on hive_metadata.* to 'root'@'%' identified by '123456';
grant all privileges on hive_metadata.* to 'root'@'localhost' identified by '123456';
grant all privileges on hive_metadata.* to 'root'@'hadoop1' identified by '123456';
flush privileges;                       //刷盘生效

5,安装jar包到hive

# yum install -y mysql-connector-java   //安装mysql-connector-java
# cp /usr/share/java/mysql-connector-java-5.1.17.jar /opt/hive/lib/     
//将mysql connector拷贝到hive的lib包中

6,配置hive-site.xml

# cd /opt/hive/conf/ 
# cp hive-default.xml.template hive-site.xml                            
# vim hive-site.xml
-------------------------------------------------------------------------------------------------------------------------
<property>
  <name>javax.jdo.option.ConnectionURLname>
<value>jdbc:mysql://hadoop1:3306/hive_metadata?createDatabaseIfNotExist=true value>
property>
<property>
  <name>javax.jdo.option.ConnectionDriverNamename>
  <value>com.mysql.jdbc.Drivervalue>
property>
<property>
  <name>javax.jdo.option.ConnectionUserNamename>
  <value>rootvalue>    //我这里是用root用户操作的,要与5.1步骤授权一致。                                                  
property>
<property>
  <name>javax.jdo.option.ConnectionPasswordname>
  <value>123456value>
property>
<property>
  <name>hive.metastore.warehouse.dirname>
  <value>/user/hive/warehousevalue>
property>
<property>                                                      
    <name>datanucleus.schema.autoCreateAllname>  
    <value>truevalue>  //我安装时报错,加上这个完美解决
    <description>creates necessary schema on a startup if one doesn't exist. set this to false, after creating it oncedescription>  
 property>

7,元数据存储初始化

初始化hive的元数据库(使用mysql数据库)

# cd /opt/hive/bin
# schematool -initSchema -dbType mysql

8,启动验证hive

# hive

Hive分布式安装部署(详细教程)Hive+Mysql_第1张图片

大功告成!!!不容易啊!碰到一堆报错,一个一个某度解决的,顺便吐槽一下某度,全特么是没用信息。
下面是遇到的坑及解决方法。

补充1:
remote分开模式,客户端配置文件:

  
  

<configuration>  

<property>  
  <name>hive.metastore.warehouse.dirname>  
  <value>/user/hive/warehousevalue>  
property>  

<property>  
  <name>hive.metastore.localname>  
  <value>falsevalue>  
property>  

<property>  
  <name>hive.metastore.urisname>  
  <value>thrift://hadoop1:9083value>  
property>  

configuration>  

master运行hive –service metastore &起服务
slave运行hive验证

补充2:
Hive Thrift客户端:

master运行

nohup -service hiveserver2 &

slave运行

beeline
!connect jdbc:hive2://hadoop10000 root 123456

Hive分布式安装部署(详细教程)Hive+Mysql_第2张图片


9,报错及解决方法

俗话说的好,有问题,看日志。Hive的日志默认在/tmp/root/hive.log

报错1:
刚安装完,启动hive时报错:
Hive分布式安装部署(详细教程)Hive+Mysql_第3张图片
经查,是Hadoop的slf4j 与hbase的slf4j jar包发生绑定冲突,移除其中一个即可。
解决方法:

# rm -rf  /opt/hive/lib/log4j-slf4j-impl-2.4.1.jar

报错2:
奶奶的,就说没这么顺利,刚解决1,紧接又来个错。
Hive分布式安装部署(详细教程)Hive+Mysql_第4张图片
连不上mysql库,经查是hive-site.xml和mysql库里授权的帐号密码填错了。
解决方法:
改成一样的就好啦~

报错3:
淡定,接连3个错,哥已经习惯了报错,就像习惯单身一样~。
Hive分布式安装部署(详细教程)Hive+Mysql_第5张图片
网上找到的解决方法,解决之后大功告成!
解决方法:
跟踪hive源码得知:修改的配置的内容如下

<property>  
    <name>datanucleus.readOnlyDatastorename>  
    <value>falsevalue>  
property>  
<property>   
    <name>datanucleus.fixedDatastorename>  
    <value>falsevalue>   
property>  
<property>   
    <name>datanucleus.autoCreateSchemaname>   
    <value>truevalue>   
property>  
<property>  
    <name>datanucleus.autoCreateTablesname>  
    <value>truevalue>  
property>  
<property>  
    <name>datanucleus.autoCreateColumnsname>  
    <value>truevalue>  
property>  

或者将:

<property>  
    <name>datanucleus.schema.autoCreateAllname>  
    false  
    creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once  
 property>  

修改为

<property>  
    <name>datanucleus.schema.autoCreateAllname>  
    true  
    creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once  
 property>  

你可能感兴趣的:(hive,hadoop)