CentOS6.5上hive安装过程与常见错误调试

来源:互联网 发布:python 源代码 推荐 编辑:程序博客网 时间:2024/05/16 09:52
CentOS6.5上hive安装过程                    

准备:已安装hadoop,这里我使用hadoop-2.6.0单进伪分布式,将hive安装在hadoop用户下

第一部分:安装配置mysql

1.确保系统中已安装了MySQL,可以先尝试启动MySQL服务,一般在root权限下启动
  service mysqld start
  若显示:mysqld: unrecognized service则是mysql没有安装,在这里我选择用yum命令安装mysql
  yum -y install mysql-server mysql mysql-devel 
  命令将:mysql-server、mysql、mysql-devel都安装好,当结果显示为“Complete!”即安装完毕。
详细过程:http://jingyan.baidu.com/article/c74d600079be530f6a595dc3.html

2.进入MySQL,一定先启动mysql,否则会报错:

  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)


  mysql -uroot -p   密码默认为空

3.配置HIVE元数据库,以及创建用户名,分配网络访问权限。
  insert into mysql.user(Host,User,Password) values("hadoop","hive",password("hive"));
  create database hive;
  grant all on hive.* to hive@'%'  identified by 'hive';
  grant all on hive.* to hive@'localhost'  identified by 'hive';
  grant all on hive.* to hive@'hadoop'  identified by 'hive';
  flush privileges;


4.mysql -uhive -p
  show databases;
  use hive;
  create table test (name int);
  show tables;
  drop table test;


第二部分:安装配置hive
1.导入hive安装包,在/home/hadoop目录下,解压缩
  tar -zxvf apache-hive-1.2.1-bin.tar.gz 
  mv apache-hive-1.2.1-bin hive

2.配置环境变量,在hadoop用户下,配置.bash_profile
  CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:/home/hadoop/hive/lib
  HIVE_HOME=/home/hadoop/hive
  PATH=$PATH:$HIVE_HOME/bin

  配置好后source .bash_profile,用echo $HIVE_HOME命令,若显示/home/hadoop/hive,则配置正确。

3.配置hive-site.xml和hive-env.sh.template两个文件,hive-site.xml文件没有,需要自己复制出来
  cd /home/hadoop/hive/conf
  cp hive-default.xml.template hive-site.xml


  vim hive-site.xml,可以输入:/javax/来快速定位
   
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
   
   <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
   </property>

   <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</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>

  vim hive-env.sh.template

  # Set HADOOP_HOME to point to a specific hadoop install directory
  HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.6.0
  
  # Hive Configuration Directory can be controlled by:
  export HIVE_CONF_DIR=/home/hadoop/hive/conf


4.将mysql-connector-java-5.1.22-bin.jar导入/hive/lib中,不导入会报错


5.故障处理1:报错Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: 

             java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D


  解决办法:
  在hive下创建临时IO的tmp文件夹。然后将路径配置到hive-site.xml的下列参数中
  <property>
    <name>hive.querylog.location</name>
    <value>/home/hadoop/hive/iotmp</value>
    <description>Location of Hive run time structured log file</description>
  </property>
  
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/hadoop/hive/iotmp</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/home/hadoop/hive/iotmp</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>



故障处理2:报错[ERROR] Terminal initialization failed; falling back to unsupported

   java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected


   解决办法:
   将hive下的新版本jline的JAR包拷贝到hadoop下:
   cp /hive/apache-hive-1.1.0-bin/lib/jline-2.12.jar /home/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib
    -rw-r--r-- 1 root root   87325 Mar 10 18:10 jline-0.9.94.jar.bak
    -rw-r--r-- 1 root root  213854 Mar 11 22:22 jline-2.12.jar


6.启动hadoop,此处我是使用伪分布式,所以要先进入hadoop-2.6.0目录下
  sbin/start-all.sh
  
  之后,可以启动hive
  hive 
 或 hive -hiveconf hive.root.logger=DEBUG,console 输出bug,显示在控制台 
 或 hive --hiveconf  hive.cli.print.current.db=true 同时启动数据库












































0 0