pannyvan

导航

hbase首次导入大批次的数据成功!

本次主要是采用hbase自带的importtsv工具来导入。首先要把数据文件上传到hdfs上,然后导入hbase表格。该导入方式只支持.tsv数据文件的导入。

导入流程:

1.下载数据。我们在本文中将使用 “美国国家海洋和大气管理局 气候平均值”的公共数据集合。访问http://www1.ncdc.noaa.gov/pub/data/normals/1981-2010/下载。 我们使用在目录 products | hourly 下的小时温度数据(可以在上述链接页面中找到)。下载hly-temp-10pctl.txt文件。

2.用Python脚本将其处理,添加rowkey,并且处理成.tsv文件。Python脚本见:https://github.com/uprush/hac-book/blob/master/2-data-migration/script/to_tsv_hly.py,脚本内容有待进一步学习研究。

3.第三部就是创建用户hac,用于运行job;建议在生产环境如此实施。为了能够从客户端运行MapReduce Job,你需要将${hadoop.tmp.dir}目录的写权限开放给客户端的hac用户,我这里是/tmp下面的,具体的话还是见配置文件,最好是把目录建立在/usr/hadoop/tmp下面。

1
2
root@client1# usermod -a -G hadoop hac
root@client1# chmod -R 775 /tmp

这里如果还不行的话,就直接chmod a+w /tmp

 

在HDFS中为hac用户建立主文件夹:

1
2
hadoop@client1$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/hac
hadoop@client1$ $HADOOP_HOME/bin/hadoop fs -chown hac /user/hac

 

 并且同时也确认hac用户在HDFS中的MapReduce的临时目录中也有写权限:$HADOOP_HOME/bin/hadoop fs -chmod -R 775 /usr/local/hadoop/var/mapred我这里这个目录是不存在的,我是建好了以后又修改的权限。

4.接下来就是将.tsv文件上传到hdfs了,hadoop fs -mkdir /usr/hac/input 建立hdfs上文件的存放位置,hadoop fs -copyFromLocal /usr/hadoop/hly-temp-10pctl.tsv /usr/hac/input 完了以后可以查看一下hadoop fs -ls /usr/hac/input,有的话上传成功。

5.接下来建表create 'hly_temp', {NAME => 't', VERSIONS => 1}

6.使用hac用户运行importtsv工具,执行如下脚本:hbase org.apache.hadoop.hbase.mapreduce.ImportTsv  -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  /usr/hac/input

过程中显示map **%,reduce 0%等等

7.验证:count 'hly_temp'

95630 row(s) in 12.2020 seconds
scan 'hly_temp', {COLUMNS => 't', LIMIT => 10}
AQW000617050110 column=t:v23,
timestamp=1322959962261, value=781S
AQW000617050110 column=t:v24,
timestamp=1322959962261, value=774C
10 row(s) in 0.1850 seconds
至此,导入成功!!!!

本文详细过程见:http://www.importnew.com/3645.html

还有一本伟大的书:HBase Administration Cookbook

posted on 2014-07-22 16:19  pannyvan  阅读(1162)  评论(1编辑  收藏  举报