Hadoop实习操作练习1(Hive与HBase初探)

Chapter 1:     引言

近期电信集团公司举办了大数据技术培训课,按照要求,Hadoop小白的我对两者作完对比,进行实际操作做一个练习记录吧,嘿嘿。。。

两者的共同点:

1.hbase与hive都是架构在hadoop之上的。都是用hadoop作为底层存储

两者的区别:

2.Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目 。

3.想象你在操作RMDB数据库,如果是全表扫描,就用Hive+Hadoop,如果是索引访问,就用HBase+Hadoop 。

4.Hive query就是MapReduce jobs可以从5分钟到数小时不止,HBase是非常高效的,肯定比Hive高效的多。

5.Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。

6.hive借用hadoop的MapReduce来完成一些hive中的命令的执行

7.hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。

8.hbase是列存储。所以Hbase可以对数据进行增改删等操作,但Hive是行的,只能追加数据。

9.hdfs作为底层存储,hdfs是存放文件的系统,而Hbase负责组织文件。

10.hive需要用到hdfs存储文件,需要用到MapReduce计算框架。

Chapter 2:     Hive操作

基础操作:

登录Hadoop的Master节点--》切换到Hadoop帐号-->使用Hive查看表,并exit退出:

联合查询:

内连接:

hive> SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

查看hive为某个查询使用多少个MapReduce作业

hive> Explain SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);

外连接:

hive> SELECT sales.*, things.* FROM sales LEFT OUTER JOIN things ON (sales.id = things.id);

hive> SELECT sales.*, things.* FROM sales RIGHT OUTER JOIN things ON (sales.id = things.id);

hive> SELECT sales.*, things.* FROM sales FULL OUTER JOIN things ON (sales.id = things.id);

in查询:Hive不支持,但可以使用LEFT SEMI JOIN

hive> SELECT * FROM things LEFT SEMI JOIN sales ON (sales.id = things.id);

CREATE TABLE ... AS SELECT:新表预先不存在

hive>CREATE TABLE target AS SELECT col1,col2 FROM source;

视图查询:

创建视图:

hive> CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;

查看视图详细信息:

hive> DESCRIBE EXTENDED valid_records;

外部表、内部表、分区表的区别及操作:

此时,会在hdfs上新建一个tt表的数据存放地,例如,笔者是在 hdfs://master/input/table_data

上传hdfs数据到表中:

load data inpath ‘/input/data‘ into table tt;

load data inpath '/input/data' into table tt;

此时会将hdfs上的/input/data目录下的数据转移到/input/table_data目录下。

删除tt表后,会将tt表的数据和元数据信息全部删除,即最后/input/table_data下无数据,当然/input/data下再上一步已经没有了数据!

如果创建内部表时没有指定location,就会在/user/hive/warehouse/下新建一个表目录,其余情况同上。

注意的地方就是:load data会转移数据!

2. 外部表:

create external table et (name string , age string);

create external table et (name string , age string);

此时,会在/user/hive/warehouse/新建一个表目录et

load data inpath ‘/input/edata‘ into table et;

此时会把hdfs上/input/edata/下的数据转到/user/hive/warehouse/et下,删除这个外部表后,/user/hive/warehouse/et下的数据不会删除,但是/input/edata/下的数据在上一步load后已经没有了!数据的位置发生了变化!本质是load一个hdfs上的数据时会转移数据!

3. 分区表

为内部表某个分区导入数据,Hive将建立目录并拷贝数据到分区当中

LOAD DATA LOCAL INPATH ‘${env:HOME}/california-employees‘

INTO TABLE employees

PARTITION (country = ‘US‘, state = ‘CA‘);

为外部表某个分区添加数据

ALTER TABLE log_messages ADD  IF NOT EXISTS PARTITION(year = 2012, month = 1, day = 2)

LOCATION ‘hdfs://master_server/data/log_messages/2012/01/02‘;

备注:Hive并不关心分区,目录是否存在,是否有数据,这会导致没有查询结果

从本地文件系统中加载数据。

LOAD DATA LOCAL INPATH "/opt/data/1.txt" INTO TABLE table1;

意思是,从本地文件系统/opt/data/1.txt加载到hive的table1中。这时hive会读取该文件,并将内容写到hdfs中table1所在的位置。

从HDFS中加载数据

LOAD DATA INPATH "/data/datawash/1.txt" INTO TABLE table1;

意思是从HDFS的/data/datawash/1.txt写入到table1所在目录。

关于加载中的OVERWRITE是这样。

LOAD DATA LOCAL INPATH "/opt/data/1.txt" OVERWRITE INTO TABLE table1;

如果加了OVERWRITE,则覆盖原先已经存在的数据,如果你确定原先没有数据,则可以写上。

Chapter 3:     HBase操作

安装:在安装Hbase之前需先安装Zookeeper,见http://jeffxie.blog.51cto.com/1365360/329212

登录:

语法:

操作 命令表达式
创建表
create ‘table_name, ‘family1‘,‘family2‘,‘familyN‘

添加记录       put ‘table_name‘, ‘rowkey‘, ‘family:column‘, ‘value‘
查看记录 get ‘table_name, ‘rowkey‘   
查看表中的记录总数 count  ‘table_name‘
删除记录 delete  ‘table_name‘ ,‘rowkey‘ , ‘family:column‘

deleteall ‘table_name‘,‘rowkey‘

删除一张表 先 disable ‘table_name‘

再 drop ‘table_name‘

查看所有记录 scan "table_name"  ,很危险 最好加LIMIT : scan ‘table_name‘,LIMIT=>10
查看某个表某个列中所有数据 scan "table" , {COLUMNS =>[‘family1:‘,‘family2‘ VERSIONS=2]} VERSIONS 选填

练习:

status   //查看服务器状态

version   //查询Hbase版本

create ‘test‘,‘course‘,‘device‘   //创建表

list      //列出所有的表

exists ‘test‘    //查询表是否存在

put ‘test‘,‘Li Lei‘,‘course:Math‘,‘90‘

put ‘test‘,‘Han Meimei‘,‘course:English‘,‘92‘     //插入记录

get ‘test‘,‘Li Lei‘    //获取一个Id的所有数据

get ‘test‘,‘Li Lei‘,‘device‘   //获取一个ID,一个列族的所有数据

get ‘test‘,‘Li Lei‘,‘device:laptop‘   // 获取一个ID,一个列族中的一个列的所有数据

更新一条记录:

get ‘test‘,‘Li Yang‘,‘device:laptop‘,‘Asus‘

count ‘test‘                                                //查看表中有多少行

delete ‘test‘,‘Li Yang‘,‘device:laptop‘     //删除id为’Li Yang’的值的’device:laptop’字段

deleteall ‘test‘,‘Li Yang‘                            //删除整行

删除表:

disable ‘test‘

drop ‘test‘

退出:

exit

时间: 2024-10-11 11:58:15

Hadoop实习操作练习1(Hive与HBase初探)的相关文章

大数据时代之hadoop(六):hadoop 生态圈(pig,hive,hbase,ZooKeeper,Sqoop)

大数据时代之hadoop(一):hadoop安装 大数据时代之hadoop(二):hadoop脚本解析 大数据时代之hadoop(三):hadoop数据流(生命周期) 大数据时代之hadoop(四):hadoop 分布式文件系统(HDFS) 大数据时代之hadoop(五):hadoop 分布式计算框架(MapReduce) hadoop是有apache基金会所开发的分布式系统基础架构,其主要提供了两方面的功能:分布式存储和分布式计算.其中分布式存储是分布式计算的基础,在hadoop的实现里面,提

[转帖]hive与hbase的联系与区别:

https://www.cnblogs.com/xubiao/p/5571176.html 原作者写的很好.. 这里面简单学习总结一下.. 都是bigdata的工具, 都是基于google的bigtable 的二次研发.基于hadoop作为底层存储. 区别在于 hive 是虚拟表 目的是将HSQL 解析成为 mapreduce 的jobs 进行 大数据的查询处理.因为是mapreduce的可能耗时比较久一些. 而hbase 是实际影响hadoop的物理文件的存储的, 类比key value 数据

Hadoop Hive与Hbase关系 整合

用hbase做数据库,但因为hbase没有类sql查询方式,所以操作和计算数据很不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于Hadoop+Hive架构对海量数据进行查询:http://blog.csdn.net/kunshan_shenbin/article/details/7105319 2. HBase 0.90.5 + Hadoop 1.0.0 集成:http://blog.csdn.net/kunshan_shenb

王家林的云计算分布式大数据Hadoop征服之旅:HDFS&MapReduce&HBase&Hive&集群管理

一:课程简介: 作为云计算实现规范和实施标准的Hadoop恰逢其时的应运而生,使用Hadoop用户可以在不了解分布式底层细节的情况下开发出分布式程序,从而可以使用众多廉价的计算设备的集群的威力来高速的运算和存储,而且Hadoop的运算和存储是可靠的.高效,的.可伸缩的,能够使用普通的社区服务器出来PB级别的数据,是分布式大数据处理的存储的理想选择. 本课程会助你深入浅出的掌握Hadoop开发(包括HDFS.MapReduce.HBase.Hive等),并且在此基础上掌握Hadoop集群的配置.维

hadoop三----基于hadoop伪分布式整合hive和hbase

hadoop的生态圈: ETL 数据的抽取.转换.加载 1)安装hive 1.解压   # tar zvxf hive-0.13.0.tar.gz -C /usr/local   # cd /usr/local   # ln -sv  /usr/local/hive-0.12.0 /usr/local/hive 2.替换jar包,保持hbase0.98与hadoop1.2一致   # cd /usr/hive/lib   # rm -rf hbase-0.94*   # find /usr/hb

Hadoop Hive与Hbase整合+thrift

1.  简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析. Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类, 大致意思如图所示

hadoop、hive、hbase的理解

hadoop是一个分布式计算+分布式文件系统,前者其实就是MapReduce,后者是HDFS.后者可以独立运行,前者可以选择性使用,也可以不使用. hive是一个构建在Hadoop基础设施之上的数据仓库. hbase是一种Key/Value系统,它运行在HDFS之上,是一个分布式的.面向列的开源数据库. 特点: hive把数据文件加载进来作为一个hive表(或者外部表),它支持类似sql语句的功能,你可以通过该语句完成分布式环境下的计算功能,hive会把语句转换成MapReduce,然后交给ha

【hadoop】16、学习hive操作语句

学习DDL语句 创建对象的语句 Create/Drop/Alter Database Create Database CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)]; Drop Database DROP (DATABASE|SC

HIVE和HBASE区别

1. 两者分别是什么? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通过Hive可以使用HQL语言查询存放在HDFS上的数据.HQL是一种类SQL语言,这种语言最终被转化为Map/Reduce. 虽然Hive提供了SQL查询功能,但是Hive不能够进行交互查询--因为它只能够在Haoop上批量的执行Hadoop. Apache HBase是一种Key/Value系统,它运行在HDFS之上.和Hive不一样,Hbase的能够在它的数据库上实时运行,而不是运行MapRedu