hive【一】hive三种元数据库安装模式


[toc]

安装环境

hadoop-2.6.0
hive-1.2.1
mysql作为元数据库

ubutun快速安装mysql

- sudo apt-get install mysql-server
- sudo apt-get install mysql-client <br>
如果无法下载,先执行sudo apt-get install update
- sudo /etc/init.d/mysql start 启动mysql服务
- mysqladmin -u root -p shutdown 关闭mysql服务
- sudo /etc/init.d/mysql restart 重启服务
- mysqladmin -u root password "newpass"
- mysqladmin -u root password oldpass "newpass"
- mysql -u 用户名 -p 进入mysql
- quit 退出mysql

hive安装配置

环境变量配置

export HIVE_HOME=/home/nemo/hive-1.2.1
export PATH=${HIVE_HOME}/bin:$PATH:$HOME/bin:

配置xml文件
把几个带.template后缀的模板文件,复制一份变成不带.template的配置文件,注意hive-default.xml.template这个要复制二份,一个是hive-default.xml,另一个是hive-site.xml,其中hive-site.xml为用户自定义配置,hive-default.xml为全局配置,hive启动时,-site.xml自定义配置会覆盖-default.xml全局配置的相同配置项。

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

1、修改hive-env.xml中的hadoop_home
2、修改hive-site.xml中的配置,按照hive metastore三种配置方式
3、创建mysql hive元数据库:create database hive;

4、替换hadoop 2.6.0中的jline jar包

由于hive 1.2.0自带的jline包跟hadoop 2.6.0自带的版本不一致,因此需要将$HIVE_HOME/lib/jline-2.12.jar 这个文件替换掉$HADOOP_HOME/share/hadoop/yarn/lib 下原来的版本 (即:将旧版本删除,复制新版本到此目录),否则hive启动将失败

Hive metastore三种配置方式

参考:http://blog.csdn.net/reesun/article/details/8556078

1、本地derby,hive-site.xml如下:

<configuration>    
    <property>  
      <name>javax.jdo.option.ConnectionURL</name>  
      <value>jdbc:derby:;databaseName=metastore_db;create=true</value>  
    </property>     
    <property>  
      <name>javax.jdo.option.ConnectionDriverName</name>  
      <value>org.apache.derby.jdbc.EmbeddedDriver</value>  
    </property>    
    <property>  
      <name>hive.metastore.local</name>  
      <value>true</value>  
    </property>  
    <property>  
      <name>hive.metastore.warehouse.dir</name>  
      <value>/user/hive/warehouse</value>  
    </property>  
    <property>  
      <name>hive.metastore.warehouse.dir</name>  
      <value>/user/hive/warehouse</value>  
    </property>   
</configuration>  

2、本地mysql(需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下)

<configuration>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>

<property>
  <name>hive.metastore.local</name>
  <value>true</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/hive?characterEncoding=UTF-8</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>tan</value>
</property>

3、远端mysql
这种存储方式需要在远端服务器运行一个mysql服务器,并且需要在Hive服务器启动meta服务。这里用mysql的测试服务器,ip位192.168.1.11,新建hive_remote数据库,字符集位latine1

<configuration>           
    <property>  
      <name>hive.metastore.warehouse.dir</name>  
      <value>/user/hive/warehouse</value>  
    </property>  

    <property>  
      <name>javax.jdo.option.ConnectionURL</name>  
      <value>jdbc:mysql://192.168.1.214:3306/hive_remote?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>password</value>  
    </property>  

    <property>  
      <name>hive.metastore.local</name>  
      <value>false</value>  
    </property>  

    <property>  
      <name>hive.metastore.uris</name>  
      <value>thrift://192.168.1.188:9083</value>  
    </property>  
</configuration>  

hive服务端和客户端分离配置

这里把hive的服务端和客户端都放在同一台服务器上了。服务端和客户端可以拆开,将hive-site.xml配置文件拆为如下两部分 服务端

<configuration>       
    <property>  
      <name>hive.metastore.warehouse.dir</name>  
      <value>/user/hive/warehouse</value>  
    </property>  

    <property>  
      <name>javax.jdo.option.ConnectionURL</name>  
      <value>jdbc:mysql://192.168.1.214:3306/hive_remote?createDatabaseIfNotExist=true</value>  
      #远程数据库mysql的地址
    </property>  

    <property>  
      <name>javax.jdo.option.ConnectionDriverName</name>  
      <value>com.mysql.jdbc.Driver</value>  
    </property>  

    <property>  
      <name>javax.jdo.option.ConnectionUserName</name>  
      <value>root</value>  
    </property>  

    <property>  
      <name>javax.jdo.option.ConnectionPassword</name>  
      <value>test1234</value>  
    </property>  
</configuration>  

客户端

<configuration>           
    <property>  
      <name>hive.metastore.warehouse.dir</name>  
      <value>/user/hive/warehouse</value>  
    </property>  

    <property>  
      <name>hive.metastore.local</name>  
      <value>false</value>  
    </property>  

    <property>  
      <name>hive.metastore.uris</name>  
      <value>thrift://192.168.1.188:9083</value>  
    </property>      
    #该属性是部署在客户端,是客户端请求服务端的端口,配置为hive服务端的ip 
</configuration>  

服务端启动

 hive --service metastore   

客户端启动

nemo@master:~$ hive   
Hive history file=/tmp/root/hive_job_log_root_201301301416_955801255.txt  
hive> show tables;  
OK  
test_hive  
Time taken: 0.736 seconds  
hive>  
nemotan /
Published under (CC) BY-NC-SA in categories hive  tagged with hive