`
iwinit
  • 浏览: 454826 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Hadoop小试牛刀之dump数据

阅读更多

 

各位好,最近小弟接到一个需求,需要dump数据从云梯(淘宝的hadoop环境)到TAIR(淘宝的缓存系统)。
原先的大概设计:
先从云梯原始表分析出部分数据,再用Datax(数据同步工具)将这些数据导入mysql单表,再起一个单机多线程任务跑(这里需要8个多小时)。
我的一个简单想法,既然数据在云梯上,为什么不直接在云梯上直接跑MapReduce任务呢?然后我就开始这么干了。。。
 
 1.由于原始表在hive环境中,大概20亿条记录,而我感兴趣的只是其中部分数据。所以先用hivesql过滤数据,sql如下:
 
set mapred.reduce.tasks=45;//产生的hive文件个数控制
set hive.job.hooks.autored.enable=false;

create external table if not exists ecrm_buyer_benefit (
 buyer_id              string
,seller_id            string
,end_time                string
)
comment 'stat_buyer_benefit'
row format delimited
fields terminated by ','
lines terminated by '\n'
stored as TEXTFILE;

INSERT OVERWRITE TABLE ecrm_buyer_benefit
select buyer_id,seller_id,max(end_time)
from r_ecrm_buyer_benefit  b
where
b.pt=20121126000000
and
b.end_time>'2012-11-27 00:00:00'
and b.promotion_type='3'
and (b.status='1' or b.status='0')
group by buyer_id,seller_id;
 
 
说明
a.通过参数控制hivesql跑出来的文件数目,方便后续跑MapReduce任务时控制map数量,避免同时并发数太高,把TAIR写挂了
b.使用TEXTFILE类型文件,hive会默认压缩生成.deflate文件
c.查询分区表,取最大时间的记录,业务逻辑可以忽略哈
 
2.执行完之后,在表名下,我们会看到生成了45个文件,每个文件大概30M。通过./hadoop dfs -dus
  察看总大小为1.3G,共1.2亿条记录
3.编写MapReduce代码
a.业务逻辑比较简单,主要考虑异常数据,由于是build数据,所以Map主要负责build,reduce主要负责搜集异常记录,对异常数据需要做重试。同时用counter记录所有异常数据。记录异常:
private void recordError(OutputCollector<LongWritable,Text> output,LongWritable key,String line,Reporter reporter){
reporter.getCounter("counter_group", "error_counter").increment(1l);
try {
output.collect(key, new Text(line));
} catch (IOException e) {
e.printStackTrace();
System.out.println("output error,line:"+line);
}
}
 
reducer只输出异常信息:
public void reduce(LongWritable key, Iterator<Text> values,OutputCollector<LongWritable, Text> output, Reporter reporter) throws IOException {
while (values.hasNext()) {
output.collect(key, values.next());
}
}
 
运行结果1.2G条记录起了45个mapper同时跑,在TAIR 1wTPS下,运行了8个半小时。当然这个后续还有很多可以优化的,比如使用map多线程(默认单线程)等。
 
整个开发还是比较方便的,主要的问题就是如何提交第三方依赖包。这里使用maven的assemble将所有依赖的类打入同一个jar。
pom配置:
<plugins>
         <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.taobao.ump.dump.DumpStarter</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
 
执行打包:mvn clean compile assembly:single
 ,在target下生成10M的jar包,提交hadoop执行即可
 
3.小节
使用hadoop进行并行开发还是很方便的。不过我这里用来做IO任务,其实不是很合适,hadoop应该是为cpu任务设计的。
分享到:
评论

相关推荐

    基于Hadoop的电影影评数据分析

    【基于Hadoop的电影影评数据分析】是一项大数据课程的大作业,旨在利用Hadoop的分布式处理能力来分析电影影评数据。Hadoop是一个由Apache软件基金会开发的开源框架,专为处理和存储大规模数据而设计。它由四个核心...

    基于Hadoop网站流量日志数据分析系统.zip

    基于Hadoop网站流量日志数据分析系统 1、典型的离线流数据分析系统 2、技术分析 - Hadoop - nginx - flume - hive - mysql - springboot + mybatisplus+vcharts nginx + lua 日志文件埋点的 基于Hadoop网站流量...

    基于hadoop的电信客服数据分析+文档

    在大数据处理领域,Hadoop是一个不可或缺的核心框架,它主要用于存储和处理海量数据。在这个基于Hadoop的电信客服数据分析项目中,我们重点探讨如何利用Hadoop生态系统来解析和分析电信行业的客户通话记录,从而获取...

    Hadoop之外卖订单数据分析系统

    在大数据处理领域,Hadoop是一个不可或缺的开源框架,它为海量数据的存储和处理提供了高效、可靠的解决方案。本文将深入探讨“Hadoop之外卖订单数据分析系统”,并介绍如何利用Hadoop进行大规模数据处理,以及如何将...

    基于Hadoop豆瓣电影数据分析实验报告

    【基于Hadoop豆瓣电影数据分析实验报告】 在大数据时代,对海量信息进行高效处理和分析是企业决策的关键。Hadoop作为一款强大的分布式计算框架,自2006年诞生以来,已经在多个领域展现了其卓越的数据处理能力。本...

    2022毕业设计,基于 Hadoop 的游戏数据分析系统源码.zip

    【标题】:“2022毕业设计,基于 Hadoop 的游戏数据分析系统源码” 这个毕业设计项目主要聚焦于使用Hadoop框架开发一个游戏数据分析系统。Hadoop是Apache软件基金会的一个开源分布式计算平台,专为处理和存储大规模...

    Hadoop构建数据仓库实践1_hadoop_

    在大数据处理领域,Hadoop是一个不可或缺的关键工具,它以其分布式计算框架著称,为企业和组织提供了海量数据存储和处理的能力。本实践指南将深入探讨如何利用Hadoop来构建高效的数据仓库系统,以此来提升数据分析的...

    大数据云计算技术 淘宝网Hadoop与数据分析 taobao数据团队(共30页).ppt

    淘宝网作为中国最大的电子商务平台,其背后的数据处理能力是其成功的关键之一。本篇将深入探讨Hadoop这一大数据处理框架在淘宝网中的应用,以及其在数据分析领域的实践。 一、Hadoop基本概念 Hadoop是Apache基金会...

    使用hadoop进行天气数据分析.zip

    使用hadoop进行数据分析天气数据分析.zip使用hadoop进行数据分析天气数据分析.zip使用hadoop进行数据分析天气数据分析.zip使用hadoop进行数据分析天气数据分析.zip使用hadoop进行数据分析天气数据分析.zip使用hadoop...

    基于Hadoop框架的豆瓣大数据分析与搜索系统源码.zip

    基于Hadoop框架的豆瓣大数据分析与搜索系统源码.zip基于Hadoop框架的豆瓣大数据分析与搜索系统源码.zip基于Hadoop框架的豆瓣大数据分析与搜索系统源码.zip基于Hadoop框架的豆瓣大数据分析与搜索系统源码.zip基于...

    Hadoop数据分析_大数据_hadoop_数据分析_

    在大数据的世界里,Hadoop是不可或缺的一个核心组件,它为海量数据处理提供了高效、可靠的解决方案。本主题将深入探讨Hadoop在数据分析中的应用及其生态系统的关键技术。 首先,我们需要理解“大数据”的概念。...

    Hadoop豆瓣电影数据分析(Hadoop)操作源码

    Hadoop豆瓣电影数据分析(Hadoop)操作源码

    《Hadoop海量数据处理》高清完整PDF版

    本书《Hadoop海量数据处理》是一本专注于Hadoop技术的专业技术书籍,旨在向读者介绍Hadoop生态系统的关键组件、核心概念以及在处理海量数据时的应用方法。全书分为基础篇、应用篇和总结篇三个部分,全面涵盖了Hadoop...

    基于Hadoop技术的大数据就业岗位数据分析.docx

    摘要:大數据是一门新兴技术,为了进一步了解与之有关的就业岗位情况,通过使用Java程序爬取出真实的大数据就业岗位数据,再结合Hadoop技术进行统计分析,最后使用可视化技术呈现大数据技术岗位不同地区招聘的薪资...

    hadoop权威指南 - ncdc 气象数据 - 1901 - 1942 年的数据

    hadoop权威指南里全文贯穿案例提到的气象数据, 直接从附录提到的网站下载非常慢. 这里分享出来, 便于大家测试. 由于限制文件大小, 所以上传了1901-1942 年的数据, 对于测试学习足够了. 如果觉得少, 多复制几次, 将...

    Hadoop数据迁移--从Oracle向Hadoop

    Hadoop数据迁移是指将存储在传统数据库系统(如Oracle)中的数据转移到Hadoop文件系统(HDFS)的过程。在这个过程中,MapReduce作为一种编程模型,用于处理和生成大数据集,被用来连接Hadoop与Oracle数据库,使得...

    Hadoop 的大规模数据交换

    在大数据处理领域,Hadoop 是一个至关重要的开源框架,它为海量数据的存储和处理提供了高效、可扩展的解决方案。本文将深入探讨“Hadoop 的大规模数据交换”这一主题,结合给定的压缩包文件“基于Hadoop 的大规模...

    hadoop-基于hive的聊天数据分析报表可视化案例数据源

    hadoop-基于hive的聊天数据分析可视化案例数据源

Global site tag (gtag.js) - Google Analytics