HBASE和Hadoop集成

hadoop,hive,hbase的区别

1、hadoop:它是一个分布式计算+分布式文件系统,前者其实就是MapReduce,后者是HDFS。后者可以独立运行,前者可以选择性使用,也可以不使用

2、hive:通俗的说是一个数据仓库,仓库中的数据是被hdfs管理的数据文件,它支持类似sql语句的功能,你可以通过该语句完成分布式环境下的计算功能,hive会把语句转换成MapReduce,然后交给hadoop执行。这里的计算,仅限于查找和分析,而不是更新、增加和删除。它的优势是对历史数据进行处理,用时下流行的说法是离线计算,因为它的底层是MapReduce,MapReduce在实时计算上性能很差。它的做法是把数据文件加载进来作为一个hive表(或者外部表),让你觉得你的sql操作的是传统的表。

3、hbase:通俗的说,hbase的作用类似于数据库,传统数据库管理的是集中的本地数据文件,而hbase基于hdfs实现对分布式数据文件的管理,比如增删改查。也就是说,hbase只是利用hadoop的hdfs帮助其管理数据的持久化文件(HFile),它跟MapReduce没任何关系。hbase的优势在于实时计算,所有实时数据都直接存入hbase中,客户端通过API直接访问hbase,实现实时计算。由于它使用的是nosql,或者说是列式结构,从而提高了查找性能,使其能运用于大数据场景,这是它跟MapReduce的区别。

总结:
hadoop是hive和hbase的基础,hive依赖hadoop,而hbase仅依赖hadoop的hdfs模块。
hive适用于离线数据的分析,操作的是通用格式的(如通用的日志文件)、被hadoop管理的数据文件,它支持类sql,比编写MapReduce的java代码来的更加方便,它的定位是数据仓库,存储和分析历史数据
hbase适用于实时计算,采用列式结构的nosql,操作的是自己生成的特殊格式的HFile、被hadoop管理的数据文件,它的定位是数据库,或者叫DBMS

1 hbase和hadoop集成

1).把hbase-site.xml配置文件复制到$HADOOP_HOME/etc/hadoop目录下

 2).编辑$HADOOP_HOME/etc/hadoop/hadoop-env.sh 添加最后一行:

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/home/sheng/app/hbase-1.3.2/lib/*

3). 把修改后的hbase-site.xml和hadoop-env.sh 分发至各节点

集成测试 统计一个表的行数:

hadoop jar $HBASE_HOME/lib/hbase-server-1.3.2.jar rowcounter  /user/hbase/music.txt

如果能得到表的行数,证名集成环境成功

2 将hdfs中的数据存放到hbase中
批量导入: 思想是把原始数据文件生成HBase的HFile文件,,再把HFile文年加载到HBase中

importtsv 生成HBase中的Hstore的物理文件---->HFile文件
语法格式:

hadoop jar $HBASE_HOME/lib/hbase-server-1.3.2.jar  importtsv
-Dimporttsv.bulk.output=指定输出的路径于用存放HFile文件
-Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:singer,info:gender,info:ryghme,info:terminal 
-Dcreate.table=yes
表名   输入的HDFS路径

注:-Dcreate.table=yes 表示自动创建表

    -Dimporttsv.bulk.output=指定输出的路径于用存放HFile文件  该目录自动生成

1)生成HFIle文件

hadoop jar $HBASE_HOME/lib/hbase-server-1.3.2.jar  importtsv -Dimporttsv.bulk.output=/user/hbase_hfile -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:singer,info:gender,info:ryghme,info:terminal -Dcreate.table=yes music4  /user/hbase

2)completedulkload 把生成HFile文件加载到HBase 中

语法格式:

hadoop jar  $HBASE_HOME/lib/hbase-server-1.3.2.jar  completebulkload 加载的HDFS路径 表名

hadoop jar  $HBASE_HOME/lib/hbase-server-1.3.2.jar  completebulkload /user/ambow/temp4 music4
发布了133 篇原创文章 · 获赞 53 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43599377/article/details/104514464
今日推荐