- 浏览: 193676 次
文章分类
最新评论
-
自定义InputFormat的子类,并把重载方法isSplitable()返回值设为false
-
增加最小分片的大小,设置成大于要处理文件中最大文件的大小,简单的设成Long.MAX_VALUE即可
一般来说,分片大小计算公式如下:
Max(minimumSize,min(maximumSize,blockSize))
minimumSize < blockSize < maximumSize
如果将分片大小设置成比HDFS块更大,会增加对于map任务来说不是本地文件的块数,也就是说map要跨块读取文件。如果分片大小的设置的比较小的话,那么一个文件就会有很多map任务,那么大量的mapper任务会造成mapper任务所涉及的任务管理和启动开销大量增加,造成hadoop效率的下降,一般来说分片大小设置成块大小,也可以设置块大小的整数倍。
对于许多小文件的话,hadoop的处理效率是低下的,一种方法是我们使用Hadoop 存档工具把许多小文件打包成一个Har文件,但是这样会要求至少需要与原文件大小相同的另一份磁盘空间,而且har文件不能修改或者删除里面的文件,不过InputFormat类并不知道文件已经存档,所以处理效率仍然不好;另一种方法是使用CombineFileInputFormat类,同样这个类对大文件也有很好的效果,这对于HDFS中已经存在很多小文件的情况下值得一试。还有一种方法就是使用SequeneceFile 合并许多小文件,键是文件名,值是文件内容。
尽量避免许多小文件的情况:
-
处理小文件会增加运行作业需要的寻址次数
-
浪费namenode的内存
reducer个数选择
-
reducer最优个数与集群中可用的reducer任务槽数相关。
-
总槽数=集群中节点数*每个节点的任务槽数。
-
总槽数可以在mapred.tasktracker.reduce.tasks.maximun属性设置
常用方法
-
设置比总槽数稍微少一些的reducer数,给任务留余地(容忍一些错误发生而不需要次延长作业运行时间),比如说计划性任务或者推测性任务。
-
如果reduce任务很大,较好的做法是使用更多reducer,使任务粒度变小,这样任务的失败才不至于显著影响作业执行时间。
发表评论
-
多表join的一个优化思路
2012-11-20 11:24 1464big table:streamed small table: ... -
好的网站
2012-09-20 22:17 7891. http://www.cnblogs.com/luche ... -
Hadoop 任务流程
2012-09-07 16:18 825简单的来说分为四个阶段:InputFormat/MapTask ... -
Hadoop关于最大map reducer数目
2012-08-14 20:53 983mapred-site.xml文件: <prop ... -
java.io.IOException:Typemismatch in key from map:expected org.apache.hadoop.io
2012-08-14 20:53 1454解决办法: jo ... -
Hadoop 开启debug信息
2012-08-14 20:51 3997运行hadoop程序时,有时候你会使用一些System. ... -
Hadoop 关于0.95/1.75 * (number of nodes)误解
2012-08-14 20:51 981reduce任务槽,即集群能够同时运行的redu ... -
MapReduce ReadingList
2012-08-09 12:22 7001. http://www.aicit.org/jcit/gl ... -
"hadoop fs 和hadoop dfs的区别"
2012-05-30 15:27 1931粗略的讲,fs是个比较抽象的层面,在分布式环境中,fs就是df ... -
Hadoop 自动清除日志
2012-05-29 18:02 942hadoop集群跑了很多的任务后 在hadoop.log ... -
DistributedCache FileNotFoundException
2012-05-26 18:02 995此时注意两种文件路径表示形式,一个在HDFS中。一一个是本地文 ... -
Cygwin 不支持native lib 不支持使用native lib 提供的压缩
2012-05-25 13:33 1145弄了一个上午hadoop的压缩,一直报错NullPointer ... -
Hadoop 在Window下搭建 守护进程启动问题
2012-05-23 15:27 822hadoop version “0.20.2” java ... -
Cygwin ssh Connection closed by ::1
2012-05-17 21:09 1139在Win7下Cygwin中,使用sshlocalhost命令, ... -
Eclipse:Run on Hadoop 没有反应
2012-05-10 20:11 898hadoop-0.20.2下自带的eclise插件没有用,需要 ... -
Hadoop SequcenceFile 处理多个小文件
2012-04-29 11:04 3885利用sequenceFile打包多个小文件,MapFile是s ... -
Hadoop 自定义计数器
2012-04-22 09:04 1493public static class mapper e ... -
MapReduce : 新版API 自定义InputFormat 把整个文件作为一条记录处理
2012-04-10 21:47 2290自定义InputFormat 新版API 把真个文件当成 ... -
MapReduce : Combiner的使用(以平均数为例) 并结合in-mapper design pattern 实例
2012-04-10 18:51 4334没有使用Combiner 和 in-mapper des ... -
Hadoop NameNode backup
2012-03-24 18:12 853NameNode: <property> ...
相关推荐
在 HDFS 上创建输入文件目录,并将文本文件上传至 HDFS: ```bash hdfs dfs -mkdir /a hdfs dfs -put '/home/hadoop/one.txt' /a ``` 其中 `/a` 是 HDFS 上的目标目录,`/home/hadoop/one.txt` 是本地文件路径。...
5. **数据完整性检测**:HDFS客户端实现了对HDFS文件内容的校验和检查,确保数据的完整性。 6. **空间回收机制**:被删除的文件会先被移动到/trash目录,在这里可以随时恢复数据。 7. **元数据磁盘失效保护**:...
- **Map阶段**:输入数据被切分为键值对,由Mapper处理并生成中间键值对。 - **Shuffle阶段**:根据键排序并分发中间键值对到相应的Reducer。 - **Reduce阶段**:Reducer聚合和处理由Map产生的中间结果。 #### 14. ...
- HDFS中的文件被切分为多个Block进行存储,默认情况下,一个Block大小为128MB(早期版本为64MB)。通过这种分块的方式,HDFS能够有效地利用集群中的存储资源。 #### 四、MapReduce工作流程 MapReduce是Hadoop的...
7. **小文件过多的危害与避免**:小文件过多会导致NameNode元数据管理压力增大,影响性能。可以通过归档小文件、使用Har或者MapReduce的CombineFileInputFormat减少小文件数量。 8. **HDFS架构**:HDFS由NameNode...
HDFS中的文件被切分为一个或多个块(block),这些块被分配存储在不同的DataNode上,并且通常会进行冗余存储,即每个块都保留了多个副本,这样即使某些节点出现故障,数据也不会丢失。 在Hadoop的架构中,作业调度...
- **知识点说明**:HDFS中文件被切分成固定大小的数据块存储,这个数据块的大小被称为Block Size。HDFS的默认块大小为128MB(在较早版本中为64MB),这有助于优化存储效率和数据传输速度。 6. **下列哪项通常是集群...
- HDFS支持多种文件操作,如读写文件、复制文件等。需要注意的是,HDFS中的文件一旦写入,就不能修改,只能追加。 9. **HDFS为存储MapReduce设计** - HDFS针对MapReduce的特点进行了特殊设计,比如数据块的大容量...
MapReduce模型通过对输入数据的切分(Map步骤)和对中间结果的归约(Reduce步骤)来实现数据的并行处理,进而提高数据处理的速度。 系统设计中还需要考虑到数据的备份和恢复问题。通常会采用冗余存储策略来保障数据...
2. **映射阶段**(Map):将输入文件中的每一条记录转换为键值对形式,通常涉及一些初步的数据处理或聚合操作。 3. **洗牌阶段**(Shuffle):在这个阶段,中间结果会被按照键进行排序和分组,并发送到相应的reduce...
开发者可以设置输出路径,MapReduce作业完成后,可以通过HDFS上的文件访问到这些数据。 7. MapReduce与Hadoop生态系统中的其他组件交互:MapReduce不是孤立存在的,它与Hadoop生态系统中的其他组件,如Hive、Pig等...
1. Map阶段:在这个阶段,输入数据通常是用户-物品评分矩阵,每个键值对表示用户对某个物品的评分。Map函数将这些键值对分割,生成用户ID和物品ID的键值对,并附带对应的评分。例如,(user_id, (item_id, rating))。...