1,bulkloading 批量导入工具
1.1,环境准备
1)新建文本数据 music1.txt,music2.txt
music1.txt:
编号(rowkey) 歌名(song) 歌手(singer) 歌手性别(gender) 节奏 (ryghme) 客户端(terminal)
1_song1_2016 song1 singer1 man slow ios
2_song1_2017 song2 singer2 man slow pc
2)新建表 musicrecored 表(播放记录表)
列簇只有一个 info
3)新建表 namelist 表(歌曲播放统计表)
列簇只有一个 details
1.2,hbase 集成到 hadoop 中(集群每一个节点都需要配置)
1)将 hbase 核心配置文件 hbase-site.xml 添加到 hadoop主目录/etc/hadoop/下
2)将 hbase 的库(hbase主目录下lib目录)配置到 hadoop 的环境(hadoop-env.sh)中
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/home/hduser/hbase-1.2.0/lib/*
3)利用新建的 musicrecored 表测试集成是否成功
在 hbase 主目录/lib/中有 hbase-server***.jar 内有 hbase 提供的工具类 rowcounter 主要用于测试利用 mapreduce 统计 hbase 表中记录总数,命令如下:
$>hadoop jar hbase主目录/lib/hbase-server*.jar rowcounter musicrecord (表名)
1.3,概念
bulkloading 批量导入分成两部完成的:
第一部分将需要导入的文本转化为 HFILE(分布式文件)格式的文件;
第二部分将 HFILE 文件关联到 hbase 的表
1.4,导入数据过程
1)hdfs 上文本数据生成 HFILE 数据文件(importtsv)
语法: $>hadoop jar hbase-server*.jar importtsv -D importtsv.bulk.output=HFILE位置 -D importtsv.columns=HBASE_ROW_KEY,info:song,info:singer,info:gender,info:ryghme,info:terminal 表名 hdfs输入文件路径
样例:$>hadoop jar hbase-server*.jar importtsv -D importtsv.bulk.output=/output/m1 -D importtsv.columns=HBASE_ROW_KEY,info:song,info:singer,info:gender,info:ryghme,info:terminal musicrecord /input/music.txt
2)将生成的 HFILE 文件与 hbase 库表关联(completebulkload)
语法: $>hadoop jar hbase-server*.jar completebulkload HFILE位置 表名
样例:$>hadoop jar hbase-server*.jar completebulkload /output/m1/ musicrecord
|
|