RedHat下搭建Hive环境

1、首先要确认hadoop和hive的版本,参考如下:

Hive-0.10.0对应Hadoop 0.20.x, 0.23.x.y, 1.x.y, 2.x.y

Hive-0.9.0 对应Hadoop 0.20.x and 1.x

Hive-0.8.1对应Hadoop0.20.1 and 0.20.2

2、下载必备软件

hadoop-1.1.1.tar.gz

hive-0.10.0.tar.gz

JDK1.6

mysql-connector-java-5.1.18-bin.jar

3、安装并设置环境变量

Ø  新建系统用户uhive

Ø  安装JDK

Ø  将hadoop和hive解压到uhive用户的根路径下

Ø  配置环境变量

在用户uhive的根路径下的.bash_profile文件中添加如下信息:

exportJAVA_HOME=/home/weblogic/jdk160_14_R27.6.5-32/jre

export HADOOP_HOME=/home/uhive/hadoop

export HIVE_HOME=/home/uhive/hive

export HIVE_CONF_DIR=$HIVE_HOME/conf

export HIVE_LIB=$HIVE_HOME/lib

exportCLASSPATH=$HIVE_HOME/lib:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME

exportPATH=$HIVE_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:/sbin/:/bin:$PATH

其中jdk的路径以个人安装路径为准;

将mysql-connector-java-5.1.18-bin.jar文件拷贝到$HIVE_HOME/lib路径下;

Ø  建立分布式文件系统

/home/uhive/hadoop/bin/hadoop fs -ls /home/uhive/fsdir

Ø  建立mysql用户

mysql> create user 'hive' identified by'hive';  

mysql> grant all privileges on  *.* to 'hive'@'%' with grant option; 

mysql> grant all privileges on  *.* to 'hive'@'localhost' with grant option;

mysql> update mysql.user setpassword=password('hive') where User="hive" andHost="localhost";

mysql> flush privileges;

mysql> create database hive;

Ø  修改配置文件

进入$HIVE_HOME/conf目录下,执行如下命令:

cp hive-default.xml.template  hive-default.xml

cp hive-exec-log4j.properties.template hive-exec-log4j.properties

cp hive-log4j.properties.template hive-log4j.properties

建立路径home/uhive/fsdir

建立文件hive-site.xml,内容如下:

<?xml version="1.0"?>

<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

 <name>hive.metastore.local</name>

 <value>true</value>

</property>

<property>

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

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

</property>

<property>

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

 <value>hive</value>

</property>

<property>

 <name>datanucleus.fixedDatastore</name>

 <value>false</value>

</property>

<property>

 <name>hive.metastore.warehouse.dir</name>

 <value>/home/uhive/fsdir/warehouse</value>

 <description>location of default database for thewarehouse</description>

</property>

</configuration>

Ø  使用验证

A、 使用hive进入命令行,如果出现如下信息:

WARNING:org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please useorg.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files

请在hive-log4j.properties中修改将log4j.appender.EventCounter的值修改为org.apache.hadoop.log.metrics.EventCounter

B、 创建数据表create table hwz2(id int, name string) rowformat delimited FIELDS TERMINATED BY ',';

C、 加载数据load data local inpath'/home/uhive/testdir/hwz2.txt' overwrite into table hwz2;

4、Java访问

Ø  启动远程服务

nohup hive --service hiveserver 50031 &

Ø  使用jar包

hive/lib/antlr-runtime-3.0.1.jar

hive/lib/hive-exec-0.8.1.jar

hive/lib/hive-jdbc-0.8.1.jar

hive/lib/hive-metastore-0.8.1.jar

hive/lib/hive-service-0.8.1.jar

hive/lib/jdo2-api-2.3-ec.jar

hive/lib/libfb303.jar

hive/lib/slf4j-api-1.6.1.jar

hive/lib/slf4j-log4j12-1.6.1.jar

hive/lib/log4j-1.2.16.jar

hive/lib/commons-logging-1.0.4.jar

hive/lib/commons-logging-api-1.0.4.jar

hadoop/hadoop-core-1.1.1.jar

Ø  调用程序

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class HiveTestCase {

       public static void main(String[] args) throws  Exception {

               Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");

 

                String dropSQL="drop tablejavabloger";

                String createSQL="createtable javabloger (key int, value string)row format delimited FIELDS TERMINATEDBY ','";

                String insterSQL="LOADDATA LOCAL INPATH '/home/uhive/testdir/hwz2.txt' OVERWRITE INTO TABLEjavabloger";

                String querySQL="SELECTa.* FROM javabloger a";

 

                Connection con =DriverManager.getConnection("jdbc:hive://localhost:50031/default","", "");

                Statement stmt =con.createStatement();

                stmt.executeQuery(dropSQL);

                stmt.executeQuery(createSQL);

                stmt.executeQuery(insterSQL);

                ResultSet res =stmt.executeQuery(querySQL);

 

                while (res.next()) {

                       System.out.println("Result: key:"+res.getInt(1) +"  –> value:" +res.getString(2));

                }

       }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值