Hive的安装

 

 

环境 Centos 5.5 (32位) ,  hadoop-1.2.1   ,hive-0.14.0

 

目录:

 1 Hive 来历与作用 

 2 Hive官网

 3 Hive 安装的三种模式

 4 安装前提 (Hadoop 与mysql已经安装并测试完毕)

 5 安装Hive 

 6 配置环境变量 并生效 

 7 创建Hive的配置文件 hive-log4j.properties 和hive-site.xml 

 8 修改hive-site.xml,将数据库连接改为Mysql 

 9 创建hive在hdfs上的目录并赋予写权限 

 

 10 修改  hive-log4j.properties 和hive-site.xml 中将${system:java.io.tmpdir},替换为/home/hive/tmp/

   否者会出异常

 11 拷贝mysql的驱动包到hive/lib目录中 

 12 启动hive并测试 

-------------------------------------------------------------------------------------------------

 

 详细:

 1 Hive 来历与作用 

  Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 

  其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

 

 2 Hive官网 

  http://hive.apache.org/

 

 3 Hive 安装的三种模式

     

 

  1 内嵌模式:将元数据保存在内嵌的Derby的数据库中,优点:安装简单
    缺点:因为一个内嵌的Derby的数据库只能访问一个数据文件,这意味着这种方式不支持多回话连接,所以紧共初学者熟悉Hive使用
  2)本地模式:将元数据保存在本地独立的数据库中(如:Mysql)能够支持多用户多回话连接。
  3)远程模式:如果我们的Hive客户端比较多,在每个客户端都安装MySQL服务还是会造成一定的冗余和浪费,这种情况下,就可以更进一步,
将MySQL也独立出来,将元数据保存在远端独立的MySQL服务中。
 

 

 4 安装前提  

Hadoop 与mysql已经安装并测试完毕 

 5 安装Hive

   

tar -xvf  apache-hive-0.14.0-bin.tar.gz 

 

 

 6 配置环境变量 并生效 ,这里讲java,hadoop,pig、hive的所有文件列出来,根据需要添加到/etc/profile最后

   

export JAVA_HOME=/web/jdk1.7.0_60
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 
export HADOOP_INSTALL=/web/hadoop-1.2.1
export PATH=$PATH:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin
 
export PIG_HOME=/web/pig-0.13.0
export PATH=$PATH:$PIG_HOME/bin
export PIG_CLASSPATH=/web/hadoop-1.2.1/conf
 
export HIVE_HOME=/web/apache-hive-0.14.0-bin
export PATH=$PATH:$HIVE_HOME/bin

 

 

添加环境变量后执行下面语句使环境变量配置生效 

source /etc/profile

 

 7 创建Hive的配置文件 hive-log4j.properties 和hive-site.xml 

     

cp hive-default.xml.template hive-site.xml
cp hive-log4j.properties.template hive-log4j.properties

 

   也可以复制一个hive-default.xml 文件,则hive-default.xml用于默认设置 ,hive-site.xml 用于个性化设置,可覆盖默认配置

 8 修改hive-site.xml,将数据库连接改为Mysql 

这里用户名和密码是hive,需要在mysql数据库中创建用户hive,并赋予连接权限

   

<property>
 <name>javax.jdo.option.ConnectionURL</name>         //所连接的MySQL数据库实例
  <value>jdbc:mysql://127.0.0.1:3306/hive_metadata?createDatabaseIfNotExist=true</value>
 <description>JDBC connect string for a JDBC metastore</description>
</property>
 
<property>
 <name>javax.jdo.option.ConnectionDriverName</name>  //连接的MySQL数据库驱动
 <value>com.mysql.jdbc.Driver</value>
 <description>Driver class name for a JDBC metastore</description>
</property>
 
<property>
 <name>javax.jdo.option.ConnectionUserName</name>   //连接的MySQL数据库用户名
 <value>hive</value>
 <description>username to use against metastore database</description>
</property>
 
<property>
 <name>javax.jdo.option.ConnectionPassword</name>    //连接的MySQL数据库密码
 <value>hive</value>
 <description>password to use against metastore database</description>
</property>

 

 

 9 创建hive在hdfs上的目录并赋予写权限 

   在HDFS上建立/tmp和/user/hive/warehouse目录,并赋予组用户写权限。这是Hive默认的数据文件存放目录,在hive-site.xml文件中为默认配置

 

   

hadoop-1.2.1]$ bin/hadoop fs -mkdir /tmp
hadoop-1.2.1]$ bin/hadoop fs -mkdir /usr/hive/warehouse
hadoop-1.2.1]$ bin/hadoop fs -chmod a+w /tmp
hadoop-1.2.1]$ bin/hadoop fs -chmod a+w /usr/hive/warehouse

 

 10 修改  hive-log4j.properties 和hive-site.xml 中将${system:java.io.tmpdir},替换为/home/hive/tmp/(任何一个临时目录都行)

   否者会出异常,这个参数解析不出来,具体原因不知道

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

 11 拷贝mysql的驱动包到hive/lib目录中 

 驱动包mysql-connector-java-3.1.14-bin.jar复制到hive的lib目录下

 

 12 启动hive 

    hive 直接启动hive 

 

  13 测试

  1)创建表

hive> create table test(id INT,str STRING)

   > row format delimited 

   > fields terminated by ','

   > stored as textfile;

 

  2) 查看新建的表

hive> show tables; 

 

   3)加载本地测试数据  

创建文件,内容:

1,   a

2,   b

3,   c

4,  d

5,  e

6,  f

7,  g

8, h

9,  i

10,  j

  执行加载命令:

  hive> load data local inpath '/home/hadoop/data_test.txt'

    > overwrite into table test;                         

Copying data from file:/home/hadoop/data_test.txt

Copying file: file:/home/hadoop/data_test.txt

Loading data to table default.test

OK

Time taken: 4.322 seconds

 

    4)查询前10行信息

       select * from test limit 10; 

 

    5)查询该文件中存在多少条数据,这时hive将执行一个map-reduce的过程来计算该值

    hive> select count(1) from test; 

 

 

 

你可能感兴趣的:(hive)