大数据学习系列之五 ----- Hive整合HBase图文详解 (3)

注: 由于hive-site.xml 文件中的配置过多,可以通过FTP将它下载下来进行编辑。也可以直接配置自己所需的,其他的可以删除。 MySQL的连接地址中的master是主机的别名,可以换成ip。

修改 hive-env.sh

修改hive-env.sh 文件,没有就复制 hive-env.sh.template ,并重命名为hive-env.sh

在这个配置文件中添加

export HADOOP_HOME=http://www.likecs.com/opt/hadoop/hadoop2.8 export HIVE_CONF_DIR=http://www.likecs.com/opt/hive/hive2.1/conf export HIVE_AUX_JARS_PATH=http://www.likecs.com/opt/hive/hive2.1/lib 添加 数据驱动包

由于Hive 默认自带的数据库是使用mysql,所以这块就是用mysql
将mysql 的驱动包 上传到 /opt/hive/hive2.1/lib

五、HBase的环境配置

HBase环境的具体配置在我的这篇大数据学习系列之二 ----- HBase环境搭建(单机) 以及介绍得很详细了。本篇就大概介绍下。

修改 hbase-env.sh

编辑 hbase-env.sh 文件,添加以下配置

export JAVA_HOME=http://www.likecs.com/opt/java/jdk1.8 export HADOOP_HOME=http://www.likecs.com/opt/hadoop/hadoop2.8 export HBASE_HOME=http://www.likecs.com/opt/hbase/hbase1.2 export HBASE_CLASSPATH=http://www.likecs.com/opt/hadoop/hadoop2.8/etc/hadoop export HBASE_PID_DIR=http://www.likecs.com/root/hbase/pids export HBASE_MANAGES_ZK=false

说明:配置的路径以自己的为准。HBASE_MANAGES_ZK=false 是不启用HBase自带的Zookeeper集群。

修改 hbase-site.xml

编辑hbase-site.xml 文件,在

<!-- 存储目录 --> <property> <name>hbase.rootdir</name> <value>hdfs://test1:9000/hbase</value> <description>The directory shared byregion servers.</description> </property> <!-- hbase的端口 --> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> <description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect. </description> </property> <!-- 超时时间 --> <property> <name>zookeeper.session.timeout</name> <value>120000</value> </property> <!-- zookeeper 集群配置。如果是集群,则添加其它的主机地址 --> <property> <name>hbase.zookeeper.quorum</name> <value>test1</value> </property> <property> <name>hbase.tmp.dir</name> <value>/root/hbase/tmp</value> </property> <!-- false是单机模式,true是分布式模式 --> <property> <name>hbase.cluster.distributed</name> <value>false</value> </property>

说明:hbase.rootdir:这个目录是region server的共享目录,用来持久化Hbase 。hbase.cluster.distributed :Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。

六、Hive整合HBase的环境配置以及测试 1,环境配置

因为Hive与HBase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-handler-.jar工具类来实现。所以只需要将hive的 hive-hbase-handler-.jar 复制到hbase/lib中就可以了。
切换到hive/lib目录下
输入:

cp hive-hbase-handler-*.jar /opt/hbase/hbase1.2/lib

这里写图片描述


注: 如果在hive整合hbase中,出现版本之类的问题,那么以hbase的版本为主,将hbase中的jar包覆盖hive的jar包。

2,hive和hbase测试

在进行测试的时候,确保hadoop、hbase、hive环境已经成功搭建好,并且都成功启动了。
打开xshell的两个命令窗口
一个进入hive,一个进入hbase

6.2.1在hive中创建映射hbase的表

在hive中创建一个映射hbase的表,为了方便,设置两边的表名都为t_student,存储的表也是这个。
在hive中输入:

create table t_student(id int,name string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties("hbase.columns.mapping"=":key,st1:name") tblproperties("hbase.table.name"="t_student","hbase.mapred.output.outputtable" = "t_student");

说明:第一个t_student 是hive表中的名称,第二个t_student是定义在hbase的table名称 ,第三个t_student 是存储数据表的名称("hbase.mapred.output.outputtable" = "t_student"这个可以不要,表数据就存储在第二个表中了) 。
(id int,name string) 这个是hive表结构。如果要增加字段,就以这种格式增加。如果要增加字段的注释,那么在字段后面添加comment ‘你要描述的’。
例如:
create table t_student(id int comment ‘StudentId’,name string comment ‘StudentName’)
org.apache.hadoop.hive.hbase.HBaseStorageHandler 这个是指定的存储器。
hbase.columns.mapping 是定义在hbase的列族。
例如:st1就是列族,name就是列。在hive中创建表t_student,这个表包括两个字段(int型的id和string型的name)。 映射为hbase中的表t_student,key对应hbase的rowkey,value对应hbase的st1:name列。

表成功创建之后
在hive、hbase分别中查看表和表结构
hive中输入

show tables; describe t_student;

hbase输入:

list describe ‘t_student’

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxjpd.html