64位CentOS6.5下安装hive

来源:互联网 发布:ubuntu设置dns地址 编辑:程序博客网 时间:2024/05/18 01:29

前几天在虚拟机上完成了hadoop的伪分布式搭建,然后又安装了hive,下面是我安装hive的步骤,供大家安装hive作一个参考。


工具/原料

Linux CentOS操作系统(CentOS-6.5-x86_64

apache-hive-1.2.1-bin.tar

mysql-connector-java-5.1.22-bin


方法/步骤

一、yum安装mysql

在安装hive之前,先要安装好mysql。
运行命令 rpm -qa | grep -i mysql
如果安装了mysql,就会有提示,有的系统没有安装mysql数据库,但可能安装了mysql的库文件,类似于mysql-libc-XXX,这个也要卸载。
卸载命令 rpm -e --nodeps mysql-xxx
卸载完成后,运行 rpm -qa | grep mysql 查看是否卸载完全。

执行命令yum install mysql-server下载并安装mysql

配置环境变量
启动mysql服务端,执行命令 mysqld_safe
启动mysql,执行命令 service mysqld start
设置root用户密码,执行命令 mysql_installation

二、安装hive

1、解压

在/usr/local下解压apache-hive-1.2.1-bin.tar
改名,执行命令 mv apache-hive-1.2.1-bin  hive
配置环境变量
vi /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
配置完成后,执行命令 source /etc/profile

2、在hdfs下建几个目录,并为其设定权限

hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /user/hive/tmp
hdfs dfs -mkdir -p /user/hive/log
hdfs dfs -chmod g+w /user/hive/warehouse
hdfs dfs -chmod g+w /user/hive/tmp
hdfs dfs -chmod g+w /user/hive/log

3、进入到hive下的conf目录

cp hive-log4j.properites.template hive-log4j.properties
cp hive-env.sh.template hive-env.sh
cphive-default.xml.template hive-site.xml
cp hive-exec.log4j.properties.template hive-exec.log4j.properties

4、配置hive-site.xml(注:将这些直接复制到文件下,不要一个一个改,否则会出错)

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://master:3306/hive_metadata?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>hive</value>

<description>username to use against metastore database</description>

</property>

 

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>hive</value>

<description>password to use against metastore database</description>


</property>

 <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.querylog.location</name>

<value>/usr/hive/log</value>

</property>

没有直接复制,挨个改报错


有一点需要注意,把这个文件中的

{system:java.io.temdir}/${system:user.name}改为一个绝对路径如/usr/log/

否则会报错:

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

        at 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:160)

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

        at org.apache.hadoop.fs.Path.initialize(Path.java:148)

        at org.apache.hadoop.fs.Path.<init>(Path.java:126)

        at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:487)

        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:430)

        ... 7 more

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

        at java.net.URI.checkPath(URI.java:1804)

        at java.net.URI.<init>(URI.java:752)

        at org.apache.hadoop.fs.Path.initialize(Path.java:145)

        ... 10 more


5、配置日志文件


修改 hive-log4j.properties 和 hive-exec-log4j.properties


hive-log4j.properties

hive.log.dir=/user/hive/log/${user.name}  //存放日志的路径

log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventConuter


hive-exec-log4j.properties

hive.log.dir=/user/hive/log/${user.name}

log4j.appender.EventConter=org.apachehadoop.log.metrics.EventCounter

6、在mysql上创建数据库

启动mysql

执行命令 service mysqld start

登录      mysql -u root -p

输入密码(密码是你刚刚设置的密码)

在mysql下执行以下命令

create database hive_metadata;

grant all on hive_metadata.*to hive@'%' identified by 'hive'

grant all on hive_metadata.* to hive@localhost identified by 'hive';

ALTER DATABASE hive_metadata CHARCTER SET latin 1;

flush privileges;

将mysql的驱动包 mysql-connector-java-5.1.22-bin.jar 上传到 hive_home/lib 下,如 /usr/local/lib 下

将/usr/local/hive/lib目录下的 jline-2.12.jar 上传到/usr/local/hadoop/share/hadoop/yarn/lib下

执行命令 cp /usr/local/hive/lib /usr/local/hadoop/hadoop/share/hadoop/yarn/lib

7、启动hive

两种方式: 

 第一种:cd hive_home/bin下:./hive 

 第二种:cd hive_home/bin下,先启动metastore

   ./hive --service metastore

  再启动hiveserver2

   ./hive --service hiveserver2

 启动成功后,如下界面:

输入 show tables命令测试一下。

hive上创建表

hive> create table test(time string,amount string) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile;

OK

Time taken: 0.672 seconds

hive> show tables;

OK

至此,hive安装成功







1 0