1. bulkloading 批量导入工具
1.1 环境准备
1) 新建文本数据 music 1 .txt , music2.txt
music1.txt :
编号 rowkey 歌名(song) 歌手singer 性别gender 节奏 客户端
1_sing1_ 2016 song1 singer1 man slow ios
2_sing2_2017 song2 singer2 man slow pc
3_sing1_ 2016 song13 singer3 man slow ios
4_sing2_2017 song4 singer24 man slow pc
5_sing1_ 2016 song5 singer3 man slow ios
6_sing2_2017 song6 singer24 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 目录),配置(即 cp )到 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 musicrecored
注 : 新建的 文本数据 music 1 .txt , music2.txt 。 数据之间 的不能是空格
需要用 Tab 键 或者 制表符 “\” ;
否则会读取不到, 如下图 :
1.3 概念
bulkloading 批量导入分两步完成
第一部分将需要导入的文件转化为 hflie 格式的文件
第二部分将hfile 文件关联到hbase 的表
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/home/hduser/hbase-1.2.0/lib/*
利用hbase-service * .jar 提供的工具(mapreduce job) 来完成一下两步骤,
1.) hfds 上文本数据生成 hfile 数据文件(importtsv)
注 : 下命令是一行,输入完才可执行, 否则虚拟机会误认为是两个命令;会出错。
语法: ¥》 hadoop jar hbase-server *. jar importtsv -D importtsv . bulk.output=hfile位置 -D importtsv.colums=HBASE_ROW_KEY, info:song,info:singer, info:gender, info:ryghme,info:terminal 表名 hdfs 输入文件路径
样例 :hadoop jar hbase-server *. jar importtsv -D importtsv . bulk.output=/m1 -D importtsv.colums=HBASE_ROW_KEY, info:song,info:singer, info:gender, info:ryghme,info:terminal musicrecored /input/music/
2.) 将生成的 hfile 文件 与 hbase 库 表关联 (completebulkload)
语法 :
样例: $> hadoop jar hbase-server*.jar completebulkload hfile位置 表名
2. Java 利用 hbase 完成 mapreduce
步骤:
在eclipse 上新建一个 JAVA Project , 然后添加 resource 文件夹,所需的(log4j.properties, hbase-site .xml , core-site.xml)三个文件,
添加所需的依赖包, 右击工程名 -----》Build Path ------》 Configure ..... -----》Libraries ------》Add JARs.... -----> 选中工程里添加的依赖包,主要是为了把引入的依赖变成该工程里的依赖包, --------》 Apply -----》 ok
-------> 【添加 Junit 】 。Build Path ------》 Configure ..... -----》Libraries ------》Add Library ------> JUnit --- > Next ----> Finsh.
2.1 概念
2.2 TableMapper
2.3 TableReduce
TableMapReduceUtil 方法