Hive安装和配置及出现的问题和解决方法

一、安装
1.将hive压缩包放到nodename上, ( 我们这里就是master)
的/home/hadoop上
2.解压
tar -zxvf apache-hive-1.1.0-bin.tar.gz
3.重命名包
mv apache-hive-1.1.0-bin.tar.gz hive-1.1.0
二、配置
1.配置环境变量
进入环境变量配置目录,这里需要切换到root用户: su
vim /etc/profile

export  JAVA_HOME=/home/hadoop/jdk1.7.0_80
export  HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export  ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.6
export HBASE_HOME=/home/hadoop/hbase-1.0.0
export HIVE_HOME=/home/hadoop/hive-1.1.0

export
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH :$ZOOKEE
PER_HOME/bin:$HBASE_HOME/bin :$HIVE_HOME/bin

source /etc/profile 使文件立即生效

这里的是老师的文件配置用的系统是ubuntu,而我自己用的是centOS是不行的,出现了不能连接win7的mysql的问题,也引发了一系列不能互相ping通的问题.在下面会给出解决方法
2.配置 hive-env.sh (所有配置文件都在 /home/hadoop/hive-1.1.0/conf目录下)
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/home/hadoop/hadoop-2.6.0
# Hive Configuration Directory can be controlled by:
  export HIVE_CONF_DIR=/home/hadoop/hive-1.1.0/conf
3、  配置hive-site.xml
cp hive-default.xml.template hive-site.xml
  hive.metastore.warehouse.dir
  /home/hadoop /hive/warehouse
  location of default database for the warehouse
hive.exec.scratchdir
  /home/hadoop /hive/scratchdir
  Scratch space for Hive jobs
  hive.querylog.location
  /home/hadoop/ hive-1.1.0/logs
 
    Location of Hive run time structured log file
 
  javax.jdo.option.ConnectionURL
 jdbc:mysql://172.29.31.66:3306/hive_metadatacreateDatabas eIfNotExist=true
JDBC connect string for a JDBC metastore
  javax.jdo.option.ConnectionDriverName
  com.mysql.jdbc.Driver
  Driver class name for a JDBC metastore
  javax.jdo.option.ConnectionUserName
  root
  username to use against metastore database
javax.jdo.option.ConnectionPassword
  ××××××
  password to use against metastore database
    hive.exec.local.scratchdir   
  
    /home/hadoop/hive-1.1.0/local/${system:user.name}
    Local scratch space for Hive jobs
 
    hive.downloaded.resources.dir
    /home/hadoop/hive-1.1.0/local /${hive.session.id}_resources
    Temporary local directory for added resources intheremote file system.
    hive.server2.logging.operation.log.location
    /home/hadoop/hive-1.1.0/logs/operation_logs
    Top leveldirectory where operation logs are stored if logging functionality isenabled
 

 
4   配置 log4j
在同上的目录下
创建配置文件:
cp hive-exec-log4j.properties.template   hive-exec-log4j.properties
cp hive-log4j.properties.template    hive-log4j.properties

修改上面两个文件中的配置
hive.log.dir= /home/hadoop/ hive-1.1.0/logs
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
注意如果没有 logs 目录就建立一个 执行命令
mkdir /home/hadoop/hive-1.1.0/logs

5.添加驱动包
下载驱动包
我用的 mysql mysql 5. 5 .15 版本,配套的 jdbc mysql-connector-java-5.1.24-bin.jar
这个 jar 在网上下载就可以了,一定要根据 mysql 版本选择配套的版本
我自己用的是 mysql-connector-java-5.1.35.jar

添加驱动包
   把驱动包放到 $HIVE_HOME/lib 目录下

修改 hadoop 的库文件
$HADOOP_HOME/share/hadoop/yarn/lib 下备份 jline-0.9.94.jar
mv jline-0.9.94.jar jline-0.9.94.jar.bak

④Copy 高版本的 jline
cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME /share/hadoop/yarn/lib

6.启动
执行命令 hive
在次之前仅需要开启dfs服务 即 start-dfs.sh 和 start-yarn.sh
而且要在win7下的mysql创建一个叫hive的数据库

以下是我们出现的问题

一、不能连接win7的mysql,然后我们猜测是不能和系统不能和win7ping起来,一测试果然是这样子。
尝试:
①快照返回到没有安装配置hive的时候,发现还是不可以‘
’ ②这时候就猜测应该不是centOS的问题,可能是虚拟机的问题,然后我们尝试用安装VM的程序来修复一下,这时候可能会能出现单方面能ping通。
③中间组长尝试了很多方法,最后是关闭客户端再还原网卡的默认设置才能搞掂
然后再重新设置子网和网关

这是组长解决ping问题的过程

然后我自己也有一些特殊的情况:
我做完以上的解决方法还是不能ping通,然后组长和我就做另外的测试了。
①我们先试一下能不能ping通VM8的IP地址
发现还是可以的,但是就是不能ping通win7本机的IP地址

②组长猜测这可能是centOS里面的DNS和win7中VM8的ip地址有冲突了,然后我们就做出了修改,修改为 192.168.5.2。再加上NETMASK,因为我之前都是没有的
最后就搞掂这个不能ping通的问题了。slave1和slave2这两台机子也是需要这个操作。

二、还是不能连接win7的mysql,但是不存在ping不通的这个问题
尝试
①换不同版本的hive,最后还是不成功。
②对于这个问题,我们借鉴了一个已经成功搞掂hive而且用的系统和我们一样都是centOS,虽然用的hive版本不同
我发现,他只是修改了一个配置文件,就是 hive-site.xml
然后我让组长尝试,我们也只修改这个文件,结果果然是成功了!
三、我能连接了mysql,可是还是不能创建表和各种sql语句的使用
问题是出现了 mysql/hive字符集问题
创建数据库的时候 数据库默认的字符集是utf8
但是 hive里面有个默认的表 字符集的长度 超过了这个限制。--,latin1 1000的长度,而utf8则最大是333
所以需要用到这句话 alter database hive character set latin1;
组长建议是:把之前创建的hive数据库给删掉了,重新创建,再立刻用到上面的那句话再进行用hive连接,以免后面可能会出现问题。

你可能感兴趣的:(BI)