Hive安装

来源:互联网 发布:怎么给淘宝客服评价 编辑:程序博客网 时间:2024/04/30 13:25

具体参考Hive Getting Started

0 前置条件

Linux :CentOS/Ubuntu
JDK 已安装
Hadoop 已安装

1 安装tarball,配置环境变量

$ tar -xzvf hive-*-.tar.gz
$vim /etc/profile
后者 vim ~/.bashrc
添加
export HIVE_HOME=/your/path
export PATH=$HIVE_HOME/bin:$PATH
export HADOOP_HOME=/your/hadoop/home/path

2 HDFS上创建对应文件

/hive/warehouse 为存放table的目录
$HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$HADOOP_HOME/bin/hadoop fs -mkdir /hive/warehouse
$HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$HADOOP_HOME/bin/hadoop fs -chmod g+w /hive/warehouse

3 配置文件说明

hive需要存放两种数据,一是table表数据,二是关于table的metadata,元数据;

默认的配置文件<install-dir>/conf/hive-default.xml
默认情况下,metadata数据会报存在当前目录下,使用derby数据库,会在当前目录下建立一个metadata.db文件夹

更改配置文件 <install-dir>/conf/hive-site.xml

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>hive.metastore.warehouse.dir</name><value>/hive/warehouse</value><description>Hive存储table的目录,取决于hadoop设置为local还是分布式,local则在磁盘上,分布式则在hdfs上</description></property><property><name>hive.metastore.local</name><value>true</value><description>默认为true,使用thrift metadata store时为false</description></property><property>  <name>javax.jdo.option.ConnectionURL</name><value>jdbc:derby:;databaseName=/opt/hive/metastore_db;create=true</value>  <description>JDBC connect string for a JDBC metastore</description></property><!--<!--如果使用mysql作为metadata数据库,配置如下,且将jdbc*.jar让入hive_home/lib/--><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://db1.mydomain.pvt/hive_db?createDatabaseIfNotExist=true</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>database_user</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>database_pass</value></property>--></property>

note:
更改配置文件夹:HIVE_CONF_DIR
日志文件:log4j: <install-dir>/conf/hive-log4j.properties
* hive 会继承hadoop的配置
* 手动更改:
shell中更改环境变量,用set
启动时HIVE_OPT设置环境变量:hive –hiveconf x1=y1 –hiveconf x2=y2

4 hive shell 操作

键入hive进入shell

hive > show databases;hive > show tables;hive > create table x (a int);hive > describe x;hive > dfs -ls /hive/warehouse/;hive > select * from x;hive > drop table x;hive > exit;
  1. ERROR:
    install hive java.io.FileNotFoundException: derby.log (Permission denied)
    tar包安装好后,未更改权限,将所有文件夹 chown ,chmod

  2. ERROR:
    java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
    多复制了hive-site.xml,删除,即可;
    hive> SET mapred.job.tracker=myhost.mycompany.com:50030;
    hive> SET -v;

  3. Error:
    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%7Dat org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:444)at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:672)at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

    编辑hive-site.xml,将其中的变量${system:java.io.tmpdir}${system:user.name}改为常量

  4. Error
    [ERROR] Terminal initialization failed; falling back to unsupported
    java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

在 conf/hive-env.sh 中添加:
export HADOOP_USER_CLASSPATH_FIRST=true

hive-site.xml参考

0 0