首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MapReduce整体介绍

    MapReduce框架(Map/Reduce) MapTask/ReduceTask 数据分发机制             MapTask接口实现类 : 对一行数据进行处理,map方法             ReduceTask接口实现类:对一组数据进行处理,reduce方法         MapReduce工作机制         划分输入切片: 数据切片             job.split文件         分布式数据处理         K相同的KV数据分配给同个ReduceTask         组合拳:CompareTo + Partation + Group         分区控制/分组控制         MapReduce编程模型             map task的实现                 读数据:TextInputFormat                          SequenceFileInputFormat                          DBInputFormat                 portation 分区                 调用Partitaioner 的getPartition 决定数据分区             reduce task的实现                 读数据:下载"区"数据,并且合并多个"同区"并且排序                 写数据:TextInputFormat                         SequenceFileOutputFormat                         DBOutputFormat             GroupingComparator:分组                 确定那些数据属于同一组         对倾斜数据的处理             1. 通过Combiner组件进行maptask端局部聚合数据减轻倾斜影响             2. 通过打算倾斜数据来消除倾斜的影响,通过在Key值后面添加随机值,这样就可以均衡的分布在ReduceTaks端。         MapReduce编程模型具体实现及处理流程:             MRAppMaster                 YarnChild(maptask/reducetask)                     main()                 1. MapTask:                     ->TextInputFormat                         ->LineRecordFromat                             ->Mapper                                 ->map()                                     ->context   --->  MapOutputCollector 环形缓存,存在大小限制                                                         ->spilter (80%) 分区(partation),排序(compare)                                                         ->write 溢出文件(可能包含多个文件,有序文件) 写本地磁盘                                                         ->merge 分区有序,分区索引文件                     多个maptask会生成多个merge文件                 2. Shuffle: Store && Rest                     map task 生成的数据传输给reduce task 的过程                    多个maptask会生成多个merge文件,这些文件会保存在NodeManager中,NodeManager具有Web服务,ReduceTask会通过Web服务下载merge文件,进行处理                         3. ReduceTask                     -> http下载:从多个DataManager中下载merge文件下载单个分区的KV数据,多个文件合并为一个文件

    01

    Hadoop-2.4.1学习之如何确定Mapper数量

    MapReduce框架的优势是可以在集群中并行运行mapper和reducer任务,那如何确定mapper和reducer的数量呢,或者说Hadoop如何以编程的方式控制作业启动的mapper和reducer数量呢?在《Hadoop-2.4.1学习之Mapper和Reducer》中曾经提及建议reducer的数量为(0.95~1.75 ) * 节点数量 * 每个节点上最大的容器数,并可使用方法Job.setNumReduceTasks(int),mapper的数量由输入文件的大小确定,且没有相应的setNumMapTasks方法,但可以通过Configuration.set(JobContext.NUM_MAPS, int)设置,其中JobContext.NUM_MAPS的值为mapreduce.job.maps,而在Hadoop的官方网站上对该参数的描述为与MapReduce框架和作业配置巧妙地交互,并且设置起来更加复杂。从这样一句含糊不清的话无法得知究竟如何确定mapper的数量,显然只能求助于源代码了。

    02

    数据仓库实战 4

    91712 Map-Reduce Framework Map input records=125 Map output records=125 Input split bytes=85 Spilled Records=0 Failed Shuffles=0 Merged Map outputs=0 GC time elapsed (ms)=71 CPU time spent (ms)=1700 Physical memory (bytes) snapshot=259682304 Virtual memory (bytes) snapshot=2850103296 Total committed heap usage (bytes)=235929600 Peak Map Physical memory (bytes)=259682304 Peak Map Virtual memory (bytes)=2850103296 File Input Format Counters Bytes Read=0 File Output Format Counters Bytes Written=2181 20/11/25 11:07:51 INFO mapreduce.ImportJobBase: Transferred 2.1299 KB in 29.0742 seconds (75.0149 bytes/sec) 20/11/25 11:07:51 INFO mapreduce.ImportJobBase: Retrieved 125 records. Warning: /opt/cloudera/parcels/CDH-7.1.3-1.cdh7.1.3.p0.4992530/bin/../lib/sqoop/../accumulo does not exist! Accumulo imports will fail. Please set $ACCUMULO_HOME to the root of your Accumulo installation. SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-7.1.3-1.cdh7.1.3.p0.4992530/jars/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-7.1.3-1.cdh7.1.3.p0.4992530/jars/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 20/11/25 11:07:56 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7.7.1.3.0-100 20/11/25 11:07:56 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 20/11/25 11:07:56 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset. 20/11/25 11:07:56 INFO tool.CodeGenTool: Beginning code generation 20/11/25 11:07:57 INFO manager.SqlManager: Executing SQL statement: select id, name, category2_id from base_category3 where 1=1 and (1 = 0)

    04

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券