一、数据移植
1、 bulk load tool
importtsv
用法:importtsv -Dimporttsv.columns=a,b,c <tablename> <inputdir>
-Dimporttsv.skip.bad.lines=false - fail if encountering an invalid line
'-Dimporttsv.separator=|' - eg separate on pipes instead of tabs
-Dimporttsv.timestamp=currentTimeAsLong - use the specified timestamp
for the import
-Dimporttsv.mapper.class=my.Mapper - A user-defined Mapper to use
instead of org.apache.hadoop.hbase.mapreduce.TsvImporterMapper
******
hly_temp---hbase的表名称
/user/hac/input/2-1---hdfs中的csv的路径,目录下包含csv文件
*******
$HADOOP_HOME/bin/hadoop jar $HBASE_HOME/hbase-
0.92.1.jar importtsv \
-Dimporttsv.columns=HBASE_ROW_KEY,t:v01,t:v02,t:v03,t:v04,t:v0
5,t:v06,t:v07,t:v08,t:v09,t:v10,t:v11,t:v12,t:v13,t:v14,t:v15,t:v1
6,t:v17,t:v18,t:v19,t:v20,t:v21,t:v22,t:v23,t:v24 \
hly_temp \
/user/hac/input/2-1
高级用法:
用-Dimporttsv.bulk.output生成HFile到HBase中,后用completebulkload加载到jhbase集群中生效
$HADOOP_HOME/bin/hadoop jar $HBASE_HOME/hbase-
0.92.1.jar importtsv \
-Dimporttsv.bulk.output=/user/hac/output/2-1 \
-Dimporttsv.columns=HBASE_ROW_KEY,t:v01,t:v02,t:v03,t:v04,
t:v05,t:v06,t:v07,t:v08,t:v09,t:v10,t:v11,t:v12,t:v13,t:v14,
t:v15,t:v16,t:v17,t:v18,t:v19,t:v20,t:v21,t:v22,t:v23,t:v24 \
hly_temp \
/user/hac/input/2-1
$HADOOP_HOME/bin/hadoop jar $HBASE_HOME/hbase-
0.92.1.jar completebulkload \
/user/hac/output/2-1 \
hly_temp
2、自己编写mapreduce任务加载数据
a、输出格式为tableoutputformat,把数据插入到HBASE中
TableMapReduceUtil.initTableReducerJob(tableName, null, job);
b、在mapreduce中生成HFile,后用completebulkload加载到hbase中
HTable table = new HTable(conf, tableName);
job.setReducerClass(PutSortReducer.class);
Path outputDir = new Path(args[2]);
FileOutputFormat.setOutputPath
(job, outputDir);
job.setMapOutputKeyClass
(ImmutableBytesWritable.class);
job.setMapOutputValueClass(Put.class);
HFileOutputFormat.configureIncrementalLoad (job, table);
注意一点:HFile中的KV是有序的,违反这个顺序,就会报错误
这个在bulk load的mapreduce任务时候经常出错
3、向hbase导入数据前,预先创建region
创建表 hly_temp2,1个为n 的cf,预先split 10个region,
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.util.RegionSplitter -c 10
-f n hly_temp2
二、管理工具
1、web界面
http://hbase_master_server:60010/master.jsp
2、shell命令:
a、表定义
list
describe 't1'
disable 't1'
alter 't1', {NAME=>'f2' }增加一个f2的family
enable 't1'
drop 't1'
b、访问数据
put 't1','row1','f1:c1','value1'
count 't1'
scan 't1',{LIMIT>=10}
get 't1','row1'
delete 't1','row1','f1:c1'
deleteall 't1','row1'
incr 't1','row1','f1:c1',1
get_counter 't1', 'row1','f1:c1'
truncate 't1'
c、管理cluster
flush 't1'
***************flush region名称
flush 't1,,1324174482248.
e3d9b9952973964f3d8e61e191924698.'
compact 't1'
major_compact 't1'
*****************拆分region
hbase> split 'hly_temp,,1324174482248.
e3d9b9952973964f3d8e61e191924698.'
balance_switch true
balancer
d、rowcounter(用mapreduce计算)
hac@client1$ $HADOOP_HOME/bin/hadoop jar
$HBASE_HOME/hbase-0.92.1.jar rowcounter hly_temp
e、WAL split
${hbase.rootdir}/.logs/target_region_server,port,start_code -p -w -j
-p 打印,-w 'rowkey1' 只选择rowkey1的,-j JSON格式输出
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.
regionserver.wal.HLog
--split hdfs://master1:8020/hbase/.logs/ip-10-160-51-22.uswest-
1.compute.internal,60020,1324601160791
f、HFile tool
*************
-m 显示HFile metadata信息
-r 指定某个region
*************
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.io.hfile.
HFile -p -f /hbase/hly_temp/0d1604971684462a2860d43e2715558d
/n/1742023046455748097
g、hbck
$ $HBASE_HOME/bin/hbase hbck
hbase> close_region 'hly_temp,,1324196693253.9e6dd810550443bb488c8
71728d5dee0.'
$HBASE_HOME/bin/hbase hbck
$ $HBASE_HOME/bin/hbase hbck -fix
2、其他
查看HFile中的相关信息
$./hbase org.apache.hadoop.hbase.io.hfile.HFile -m -f hdfs://hadoop01:9000/hbase/sunwg01/641cfd6c6074e94b9f85074cfd6b7df5/f1/ed8c507c0f3e4d58bcf269784c105e02
backup master的配置:
配置backup master的方式是在hbase的conf下增加文件backup-masters,在该文件里面增加backup master的机器列表,每台 机器一条记录。
RegionMerge:
$ hbase org.apache.hadoop.hbase.util.Merge sunwg04 sunwg04,,1333590243046.93dc4a2b4737dc04402a7814f03fe403. sunwg04,105,1333590243046.8805a0dd2be4acf24ef71dedf4c16e13.
Rowcounter:
bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter tblName
HLog文件查看:
org.apache.hadoop.hbase.regionserver.wal.HLog -dump /hbase/.logs/sunwg,60020,1333581869001/sunwg%2C60020%2C1333581869001.1333581939408
HFile查看:
hbase org.apache.hadoop.hbase.io.hfile.HFile -v -p -f hdfs://sunwg:9000/hbase/sunwg01/a04d3c5665afa6b884b36e103e329f93/f1/f9a13ac196a04b649df28347d673051c