英文原文摘自:《HBase Administration Cookbook》??编译:ImportNew?-?陈晨 本篇文章是对数据合并的系列文章之二(共三篇),针对的情景模式就是将现有的各种类型的数据库或数据文件中的数据转入至 HBase 中。 上一篇 ???《HBase数据迁移(1)- 通过单个客
英文原文摘自:《HBase Administration Cookbook》??编译:ImportNew?-?陈晨
本篇文章是对数据合并的系列文章之二(共三篇),针对的情景模式就是将现有的各种类型的数据库或数据文件中的数据转入至HBase中。
上一篇 ???《HBase数据迁移(1)- 通过单个客户端导入MySQL数据》
HBase提供importtsv工具支持从TSV文件中将数据导入HBase。使用该工具将文本数据加载至HBase十分高效,因为它是通过MapReduce Job来实施导入的。哪怕是要从现有的关系型数据库中加载数据,也可以先将数据导入文本文件中,然后使用importtsv 工具导入HBase。在导入海量数据时,这个方式运行的很好,因为导出数据比在关系型数据库中执行SQL快很多。
importtsv 工具不仅支持将数据直接加载进HBase的表中,还支持直接生成HBase自有格式文件(HFile),所以你可以用HBase的bulk load工具将生成好的文件直接加载进运行中的HBase集群。这样就减少了在数据迁移过程中,数据传输与HBase加载时产生的网络流量。下文描述了importtsv 和bulk load工具的使用场景。我们首先展示使用importtsv 工具从TSV文件中将数据加载至HBase表中。当然也会包含如何直接生成HBase自有格式文件,以及如何直接将已经生成好的文件加载入HBase。
准备
我们在本文中将使用 “美国国家海洋和大气管理局 气候平均值”的公共数据集合。访问http://www1.ncdc.noaa.gov/pub/data/normals/1981-2010/下载。 我们使用在目录 products | hourly 下的小时温度数据(可以在上述链接页面中找到)。下载hly-temp-10pctl.txt文件。
下载后的数据因为格式不支持的原因,不能直接用importtsv工具加载。我们提供了脚本来帮助你将数据转换为TSV文件。除了原有数据,被加载的TSV文件中还必须包含一个栏位用于表示HBase表数据行的row key。本文附带的_tsv_hly.py脚本从NOAA的小时数据文件中读取数据,生成row key并将数据输出至本地文件系统的TSV文件:
$ python to_tsv_hly.py -f hly-temp-10pctl.txt -t hly-temp-10pctl.tsv
因为importtsv工具是通过运行MapReduce Job来实施导入动作,我们需要在集群上运行MapReduce。在主节点上执行下述命令以开启MapReduce守护进程:
hadoop$ $HADOOP_HOME/bin/start-mapred.sh
我们在客户端服务器上添加hac用户用于运行job&#x