hadoop记录

一、命令

-ls
-lsr
-du  : 显示文件大小, -du  -h :以M为单位显示大小,-du -s -h :以G为单位显示大小
-dus
-count[-q]
-mv <src> <dst>
-cp <src> <dst>
-ln <src> <dst>
-rm <path>
-rmr <path>
-expunge
-put <localsrc> ... <dst>
-copyFromLocal <localsrc> ... <dst>
-moveFromLocal <localsrc> ... <dst>
-get [-ignoreCrc] [-crc] [-repair] <src> <localdst>
-getmerge [-addnl] <src> <localdst> | -getmerge <src> <localdst> [addnl]
-cat <src>
-text <src>
-copyToLocal [-ignoreCrc] [-crc] [-repair] <src> <localdst>
-copySeqFileToLocal [-ignoreLen] <srcFile> <localDstFile>
-moveToLocal [-crc] <src> <localdst>
-mkdir <path>
-setrep [-R] [-w] [-d] <rep> <path/file>
-setAcl <user> <path> <permission>
-getAcl [-u <user>] [-p <path>]
-removeAcl [-u <user>] [-p <path>]
-touchz <path>
-test -[ezd] <path>
-stat [format] <path>
-tail [-f] <file>
-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...
-chown [-R] [OWNER][:[GROUP]] PATH...
-chgrp [-R] GROUP PATH...

二、所有变量先初始化
!!!!!所有用到的变量包括中间变量,一定一定要初始化!!!!!包括中间变量,在key值切换时也必须要初始化!!!!!!

三、两次输出:1次再换key,一次在程序结束,输出时注意各变量是不是 current_name还是name

-D stream.num.map.output.key.fields=2 \  # 设置前几列为key
-D num.key.fields.for.partition=1 \ #使用 !key中!前几列划分partition,分桶
-D stream.map.output.field.separator=, \  设置map输出的字段分隔符
-D map.output.key.field.separator=, \ 设置key内的字段分隔符
-D mapred.text.key.comparator.options="-k1,1 -k2,2n" \  # 定义key的排序方式,第一列文本序,第二列数字序
-D stream.reduce.output.field.separator=, \  设置reduce输出的字段分隔符,注意注释reduce,依然会执行排序,排序输出按照reduce输出的字段分隔符,输出

其他-D作业配置:
mapred.job.name作业名
mapred.job.priority 作业优先级
mapred.job.map.capacity 最多同时运行map任务数
mapred.job.reduce.capacity 最多同时运行reduce任务数
hadoop.job.ugi 作业执行权限
mapred.map.tasks map任务个数
mapred.reduce.tasks reduce任务个数
mapred.job.groups 作业可运行的计算节点分组
mapred.task.timeout 任务没有响应(输入输出)的最大时间
stream.non.zero.exit.is.failure=true #任务失败重启
mapred.compress.map.output map的输出是否压缩
mapred.map.output.compression.codec map的输出压缩方式
stream.map.output.field.separator 指定map输出时的分割符
stream.num.map.output.key.fields=4 指定map输出按照分隔符切割后,key所占有的列数
mapred.output.compress reduce的输出是否压缩
mapred.output.compression.type:压缩类型,有NONE, RECORD和BLOCK,默认值RECORD。
mapred.output.compression.codec reduce的输出压缩方式, 默认值org.apache.hadoop.io.compress.DefaultCodec
stream.reduce.output.field.separator 指定reduce输出时的分割符
stream.num.reduce.output.key.fields 指定输出按照分隔符切割后,key所占有的列数
map.output.key.field.separator=. #分桶分隔符:指定map输出<key,value>对之后,其中key内部的分割符
num.key.fields.for.partition=2 #指定分桶时,按照分隔符切割后,用于分桶key所占的列数
mapred.job.reduce.memory.mb #每个map Task需要的内存量
mapred.job.reduce.memory.mb #每个reduce Task需要的内存量
mapreduce.job.reduce.slowstart.completedmaps 当Map Task完成的比例达到该值后才会为Reduce Task申请资源,默认是0.05

四、抽取数据时通过mapper把所有需要的数据拉出来,形成一张基础表,后续所有操作都可以通过这张表进行。最好加入一些本次不一定用但一般会用,或者可以用来check的字段,例如:分类,nid

五、hadoop日志:
1、MapReduce 任务计数器

  MapReduce 任务计数器的 groupName为org.apache.hadoop.mapreduce.TaskCounter,它包含的计数器如下表所示

map 输入的记录数(MAP_INPUT_RECORDS):
作业中所有 map 已处理的输入记录数。每次 RecorderReader 读到一条记录并将其传给 map 的 map() 函数时,该计数器的值增加。

map 跳过的记录数(MAP_SKIPPED_RECORDS):
作业中所有 map 跳过的输入记录数。

map 输入的字节数(MAP_INPUT_BYTES)
作业中所有 map 已处理的未经压缩的输入数据的字节数。每次 RecorderReader 读到一条记录并 将其传给 map 的 map() 函数时,该计数器的值增加

分片split的原始字节数(SPLIT_RAW_BYTES)
由 map 读取的输入-分片对象的字节数。这些对象描述分片元数据(文件的位移和长度),而不是分片的数据自身,因此总规模是小的

map 输出的记录数(MAP_OUTPUT_RECORDS)
作业中所有 map 产生的 map 输出记录数。每次某一个 map 的Context 调用 write() 方法时,该计数器的值增加

map 输出的字节数(MAP_OUTPUT_BYTES)
作业中所有 map 产生的 未经压缩的输出数据的字节数。每次某一个 map 的 Context 调用 write() 方法时,该计数器的值增加。

map 输出的物化字节数(MAP_OUTPUT_MATERIALIZED_BYTES)
map 输出后确实写到磁盘上的字节数;若 map 输出压缩功能被启用,则会在计数器值上反映出来

combine 输入的记录数(COMBINE_INPUT_RECORDS)
作业中所有 Combiner(如果有)已处理的输入记录数。Combiner 的迭代器每次读一个值,该计数器的值增加。

combine 输出的记录数(COMBINE_OUTPUT_RECORDS)
作业中所有 Combiner(如果有)已产生的输出记录数。每当一个 Combiner 的 Context 调用 write() 方法时,该计数器的值增加。

reduce 输入的组(REDUCE_INPUT_GROUPS)
作业中所有 reducer 已经处理的不同的码分组的个数。每当某一个 reducer 的 reduce() 被调用时,该计数器的值增加。

reduce 输入的记录数(REDUCE_INPUT_RECORDS)
作业中所有 reducer 已经处理的输入记录的个数。每当某个 reducer 的迭代器读一个值时,该计数器的值增加。如果所有 reducer 已经处理完所有输入, 则该计数器的值与计数器 “map 输出的记录” 的值相同

reduce 输出的记录数(REDUCE_OUTPUT_RECORDS)
作业中所有 map 已经产生的 reduce 输出记录数。每当某一个 reducer 的 Context 调用 write() 方法时,该计数器的值增加。

reduce 跳过的组数(REDUCE_SKIPPED_GROUPS)
作业中所有 reducer 已经跳过的不同的码分组的个数。

reduce 跳过的记录数(REDUCE_SKIPPED_RECORDS)
作业中所有 reducer 已经跳过输入记录数。

reduce 经过 shuffle 的字节数(REDUCE_SHUFFLE_BYTES)
shuffle 将 map 的输出数据复制到 reducer 中的字节数。

溢出的记录数(SPILLED_RECORDS)
作业中所有 map和reduce 任务溢出到磁盘的记录数

CPU 毫秒(CPU_MILLISECONDS)
总计的 CPU 时间,以毫秒为单位,由/proc/cpuinfo获取

物理内存字节数(PHYSICAL_MEMORY_BYTES)
一个任务所用物理内存的字节数,由/proc/cpuinfo获取

虚拟内存字节数(VIRTUAL_MEMORY_BYTES)
一个任务所用虚拟内存的字节数,由/proc/cpuinfo获取

有效的堆字节数(COMMITTED_HEAP_BYTES)
在 JVM 中的总有效内存量(以字节为单位),可由Runtime().getRuntime().totaoMemory()获取。

GC 运行时间毫秒数(GC_TIME_MILLIS)
在任务执行过程中,垃圾收集器(garbage collection)花费的时间(以毫秒为单位), 可由 GarbageCollector MXBean.getCollectionTime()获取;该计数器并未出现在1.x版本中。

由 shuffle 传输的 map 输出数(SHUFFLED_MAPS)
有 shuffle 传输到 reducer 的 map 输出文件数。

失败的 shuffle 数(SHUFFLE_MAPS)
在 shuffle 过程中,发生拷贝错误的 map 输出文件数,该计数器并没有包含在 1.x 版本中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值