hive2.1.1安装配置

一、Hive 运行模式
与 Hadoop 类似,Hive 也有 3 种运行模式:
1. 内嵌模式
    将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。
2. 本地模式
这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这用就可以支持多会话和多用户连接了。
3. 远程模式
    此模式应用于 hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 mysql 服务中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。
二、下载安装 Hive
    http://hive.apache.org/downloads.html
    tar -xzvf apache-hive-2.1.1-bin.tar.gz    ##解压
三、配置系统环境变量
修改 /etc/profile 文件  vi /etc/profile 来修改(root用户操作):
设置 Hive环境变量  
# Hive environment  
export HIVE_HOME=/home/hadoop/cloud/apache-hive-2.1.1-bin  
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH  

使环境变量生效:  
source /etc/profile  

四、内嵌模式
(1)修改 Hive 配置文件
$HIVE_HOME/conf 对应的是 Hive 的配置文件路径,类似于之前学习的Hbase, 该路径下的 hive-site.xml 是 Hive 工程的配置文件。默认情况下,该文件并不存在,我们需要拷贝它的模版来实现:
cp hive-default.xml.template hive-site.xml  
hive-site.xml 的主要配置有:
hive.metastore.warehouse.dir
该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。
hive.exec.scratchdir
该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。
同时我们还要修改 Hive 目录下 /conf/hive-env.sh 文件(请根据自己的实际路径修改),该文件默认也不存在,同样是拷贝它的模版来修改:
# Set HADOOP_HOME to point to a specific hadoop install directory  
HADOOP_HOME=/home/hadoop/cloud/hadoop-2.7.3  
# Hive Configuration Directory can be controlled by:  
export HIVE_CONF_DIR=/home/hadoop/cloud/apache-hive-2.1.1-bin/conf  
# Folder containing extra ibraries required for hive compilation/execution can be controlled by:  
export HIVE_AUX_JARS_PATH=/home/hadoop/cloud/apache-hive-2.1.1-bin/lib 
(2)创建必要目录
前面我们看到 hive-site.xml 文件中有两个重要的路径,切换到 hadoop 用户下查看 HDFS 是否有这些路径:
hadoop fs -ls /  
没有发现上面提到的路径,因此我们需要自己新建这些目录,并且给它们赋予用户写(W)权限。
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse  
$HADOOP_HOME/bin/hadoop fs -mkdir -p /tmp/hive/  
hadoop fs -chmod 777 /user/hive/warehouse  
hadoop fs -chmod 777 /tmp/hive  
检查是否新建成功 hadoop fs -ls / 以及 hadoop fs -ls /user/hive/ :
(3)修改 io.tmpdir 路径
同时,要修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value 即路径(vim下 / 表示搜索,后面跟你的关键词,比如搜索 hello,则为 /hello , 再回车即可),你可以自己新建一个目录来替换它,例如 /home/Hadoop/cloud/apache-hive-2.1.1-bin/iotmp
mkdir /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp  
chmod 777 /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp  
把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替换成/home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp  
全局替换命令 先按Esc键  再同时按shift+:把以下替换命令粘贴按回车即可全局替换
%s#${system:java.io.tmpdir}#/home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp#g  
(4)连接mysql
在mysql中创建hive数据库
mysql> CREATE DATABASE hive;
修改hive-site.xml
需要在 hive-site.xml 文件中配置 MySQL 数据库连接信息。
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</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>
(4)运行 Hive
在命令行运行 hive 命令时必须保证以下两点:
HDFS 已经启动。可以使用 start-dfs.sh 脚本来启动 HDFS。
MySQL Java 连接器添加到 $HIVE_HOME/lib 目录下。我安装时使用的是 mysql-connector-java-5.1.42-bin.jar
从 Hive 2.1 版本开始, 我们需要先运行 schematool 命令来执行初始化操作。
schematool -dbType mysql -initSchema
./bin/hive

(5)与Hbase整合

修改文件 hive-site.xml,添加如下属性

<!-- HBase property  -->
<property>
    <name>hive.aux.jars.path</name>
    <value>file:///home/tom/apache-hive-2.1.1-bin/lib/hive-hbase-handler-2.1.1.jar;file:///home/tom/apache-hive-2.1.1-bin/lib/guava-14.0.1.jar;file:///home/tom/apache-hive-2.1.1-bin/lib/hbase-common-1.1.1.jar;file:///home/tom/apache-hive-2.1.1-bin/lib/zookeeper-3.4.6.jar</value>
    <description>The location of the plugin jars that contain implementations of user defined functions and serdes.</description>
</property>
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>slave</value>
</property>

从Hive中创建HBase表,使用HQL语句创建一个指向HBase的Hive表

CREATE TABLE hbase_table_1(key int, value string) //Hive中的表名hbase_table_1
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  //指定存储处理器
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") //声明列族,列名
TBLPROPERTIES ("hbase.table.name" = "xyz", "hbase.mapred.output.outputtable" = "xyz");  
//hbase.table.name声明HBase表名,为可选属性默认与Hive的表名相同,
//hbase.mapred.output.outputtable指定插入数据时写入的表,如果以后需要往该表插入数据就需要指定该值

通过HBase shell可以查看刚刚创建的HBase表的属性;

hbase(main):003:0> list

同时也会在mysql数据库中存在这个表的记录

mysql> use hive;

mysql> select * from TBLS;

说明Hive与mysql和hbase都连通了

使用HQL向HBase表中插入数据

INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=98;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值