hadoop目前遇到的问题

本文深入探讨了MapReduce的特点及其在一次写、多次读场景中的应用,通过实例展示了如何利用MapReduce进行数据排序、建立索引及数据结构优化,以提高数据检索效率。同时,介绍了Hadoop实例配置及MapReduce框架的基本组件,如InputFormat和RecordReader的实现,为读者提供了从理论到实践的全面指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在感觉瓶颈是没有真正运行的hadoop的实例,资料太少,完全无从下手

MapReduce的特点是适合一次写,多次读的场景,但这是怎么实现的呢?
例如一次写,就类似于建立数据结构,然后建立索引,或者再排序一下,数据的位置再调整一下,这样就有利于多次读的操作了。
就比如权威指南中的天气的例子,我可以把所有的数据,取得年份日期和温度,其他数据都放弃,然后排序,甚至是建立一个索引,把这个数据保存在新的文件中,甚至是把同一个年份作为key,value值是所有的温度的值,这样查询年份的时候就非常快了,处理后的数据保存在文件中,然后新的请求就会很快

那么新的请求也是要做 Map,Reduce操作的吗?MapReduce框架,这是比如的,map是必不可少的操作。

下面就是改写InputFormat和RecordReader的问题了的问题了,
InputFormat是如何构造Split的问题,主要就是对文件流的操作,要实现的是两个方法
RecordReader主要的两个方法是 init 和next,对应与hadoop++中的itemize.init()和 itemize.next()
hadoop++中的意思是,把数据按照split的方式保存在文件中,不同的split按照footer区分,那么我怎么写呢?要在reduce端口写吗?这个问题要想一想

看了streaming的源代码,主要看的是 StreamXmlRecordReader和StreamInputSplit,好麻烦啊,只是看懂了大概意思,StreamXmlRecordReader的最终的操作是由slowReadUntilMatch()和fastReadUntilMatch来完成的,主要方法是正则表达式的匹配,其实就是在找xml的标记;StreamInputSplit主要就是构造三个类就可以,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值