1007-使用MapReduce把数据从HDFS导入到HBase

1、项目需求
用户上网记录会产生大量的日志,数据需要长期保存,需要优雅的扩展,不需要全部的关系型数据库特性,瞬间写入良很大,展示每天用户的上网总流量,下载总流量。类似于: 


业务要求: 可以根据用户手机号查看某个时间段的上网记录

2、技术方案选型
选型HBase进行数据库存储,而HBase 使用的场景: 
(1) 大数据量 (100s TB级数据) 且有快速随机访问的需求。
例如淘宝的交易历史记录。数据量巨大无容置疑,面向普通 用户的请求必然要即时响应

(2) 容量的优雅扩展
大数据的驱使,动态扩展系统容量的必须的。例如:webPage DB。

(3) 业务场景简单,不需要关系数据库中很多特性(例如交叉列、交叉表,事务,连接等等)

(4) 优化方面:合理设计rowkey。因为hbase的查询用rowkey是最高效的,也几乎的唯一生产环境可行的方式。所以把你的查询请求转换为查询rowkey的请求吧。

(5)hbase大数据存储,写入和读取

3、HBase使用场景
1、爬虫网站URL的写入。
2、淘宝在2011年之前所有的后端持久化存储基本上都是在mysql上进行的(不排除少量oracle/bdb/tair/mongdb等),mysql由于开源,并且生态系统良好,本身拥有分库分表等多种解决方案,因此很长一段时间内都满足淘宝大量业务的需求。
但是由于业务的多样化发展,有越来越多的业务系统的需求开始发生了变化。一般来说有以下几类变化:
数据量变得越来越多,事实上现在淘宝几乎任何一个与用户相关的在线业务的数据量都在亿级别,每日系统调用次数从亿到百亿都有,且历史数据不能轻易删除。这需要有一个海量分布式文件系统,能对TB级甚至PB级别的数据提供在线服务
数据量的增长很快且不一定能准确预计,大多数应用系统从上线起在一段时间内数据量都呈很快的上升趋势,因此从成本的角度考虑对系统水平扩展能力有比较强烈的需求,且不希望存在单点制约
只需要简单的kv读取,没有复杂的join等需求。但对系统的并发能力以及吞吐量、响应延时有非常高的需求,并且希望系统能够保持强一致性
通常系统的写入非常频繁,尤其是大量系统依赖于实时的日志分析
希望能够快速读取批量数据

5、开发HBaseImport程序步骤

5. 1.在HBase中创建表wlan_log
  create 'wlan_log','cf'

5.2 .确定行键是什么
  手机号码:时间戳

RowKey设计:msisdn:日期时间串(yyyyMMddHHmmss),这样设计的原因: 
1)业务要求需要通过手机号码查询一个时间段内的上网记录
2)如果仅仅用手机号作为行健,那么同一手机号作为行健下,hbase的数据会被覆盖掉

5.3 .写代码


5.4 .使用ant发到远程linux服务器运行,把HBase的相关jar包放到HADOOP_CLASSPATH中
 
在hadoop-env.sh文件中增加如下代码
export HADOOP_CLASSPATH=/usr/local/hbase-0.98.8-hadoop2/lib/*


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾文教编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值