美文网首页
hadoop 常用命令、参数

hadoop 常用命令、参数

作者: 衣介书生 | 来源:发表于2020-02-19 17:37 被阅读0次

    常用命令

    选项名称 使用格式 含义
    -ls -ls <路径> 查看指定路径的当前目录结构
    -lsr -lsr <路径> 递归查看指定路径的目录结构
    -du -du <路径> 统计目录下个文件大小
    -dus -dus <路径> 汇总统计目录下文件(夹)大小
    -count -count [-q] <路径> 统计文件(夹)数量
    -mv -mv <源路径> <目的路径> 移动
    -cp -cp <源路径> <目的路径> 复制
    -rm -rm [-skipTrash] <路径> 删除文件/空白文件夹
    -rmr -rmr [-skipTrash] <路径> 递归删除
    -put -put <多个linux上的文件> <hdfs路径> 上传文件
    -copyFromLocal -copyFromLocal <多个linux上的文件> <hdfs路径> 从本地复制
    -moveFromLocal -moveFromLocal <多个linux上的文件> <hdfs路径> 从本地移动
    -getmerge -getmerge <源路径> <linux路径> 合并到本地
    -cat -cat <hdfs路径> 查看文件内容
    -text -text <hdfs路径> 查看文件内容
    -copyToLocal -copyToLocal [-ignoreCrc] [-crc] [hdfs源路径] [linux目的路径] 拷贝到本地
    -moveToLocal -moveToLocal [-crc] <hdfs源路径> <linux目的路径> 移动到本地
    -mkdir -mkdir <hdfs路径> 创建空白文件夹
    -setrep -setrep [-R] [-w] <副本数> <路径> 修改副本数量
    -touchz -touchz <文件路径> 创建空白文件
    -stat -stat [format] <路径> 显示文件统计信息
    -tail -tail [-f] <文件> 查看文件尾部信息
    -chmod -chmod [-R] <权限模式> [路径] 修改权限
    -chown -chown [-R] [属主][:[属组]] 路径 修改属主
    -chgrp -chgrp [-R] 属组名称 路径 修改属组
    -help -help [命令选项] 帮助

    常用参数

    配置项 含义
    mapred.job.name 作业名
    mapred.job.priority=HIGH 作业优先级
    mapred.job.map.capacity=800 最多同时运行的 map 数量
    mapred.job.reduce.capacity=800 最多同时运行的 reduce 数量
    mapred.compress.map.output=true map的输出是否压缩
    mapred.output.compress=true reduce的输出是否压缩
    mapred.map.output.compression.codec=
    org.apache.hadoop.io.compress.GzipCodec
    map的输出压缩方式
    mapred.output.compression.codec=
    org.apache.hadoop.io.compress.GzipCodec
    reduce的输出压缩方式
    hadoop.job.ugi 作业执行权限
    stream.map.output.field.separator=. 指定分隔符
    stream.num.map.output.key.fields=2 指定key的范围
    map.output.key.field.separator=. 指定第二次分隔的分隔符
    mapred.text.key.partitioner.options=-k1,2 基于第一个分隔指定partition key
    mapred.min.split.size=1073741824 影响splitSize的大小和任务数
    mapred.min.split.size=3221225472 影响splitSize的大小和任务数
    mapred.reduce.memory.limit=800 限制内存为800M
    dfs.replication=3 副本数量
    -outputformat
    org.apache.hadoop.mapred.lib.SuffixMultipleTextOutputFormat
    多路输出
    mapred.map.tasks 期望的 map 数
    mapred.reduce.tasks 期望的reduce数

    如何确定 map 数

    相关名词解释
    • block_size : hdfs的文件块大小,可以通过参数 dfs.block.size 设置
    • total_size : 输入文件整体的大小
    • input_file_num : 输入文件的个数
    1 计算 splitSize

    注意:与mapred.min.split.size、mapred.max.split.size、block_size和minSplitSize几个值有关。

    minSize=max{minSplitSize,mapred.min.split.size} 
    maxSize=mapred.max.split.size
    splitSize=max{minSize,min{maxSize,blockSize}}
    # minSplitSize 大小默认为 1B
    # maxSplitSize 大小默认为 Long.MAX_VALUE = 9223372036854775807 
    

    如果只设置mapred.min.split.size,计算方式可以简化为:

    splitSize = max(mapred.min.split.size, block_size);
    
    2 计算默认 map 个数

    如果不进行任何设置,默认的map个数是和blcok_size相关的。 default_num = total_size / block_size

    3 期望 map 数

    可以通过参数mapred.map.tasks来设置程序员期望的map个数,但是这个个数只有在大于default_num的时候,才会生效。 goal_num = mapred.map.tasks

    4 计算 split_num

    可以通过mapred.min.split.size 设置每个task处理的文件大小,但是这个大小只有在大于block_size的时候才会生效。

    split_size = max(mapred.min.split.size, block_size);
    split_num = total_size / split_size;
    
    计算的map个数

    通过公式compute_map_num = min(split_num, max(default_num, goal_num))可以计算出 map 数。除了这些配置以外,mapreduce还要遵循一些原则。 mapreduce的每一个map处理的数据是不能跨越文件的,也就是说min_map_num >= input_file_num。 所以,最终的map个数应该为:final_map_num = max(compute_map_num, input_file_num)

    6 总结

    实际上只设置 mapred.map.tasks 和 mapred.min.split.size 这两个参数,如果想增加map个数,则设置mapred.map.tasks 为一个较大的值,如果想减少 map 数,则设置mapred.min.split.size 为一个较大的值。

    相关文章

      网友评论

          本文标题:hadoop 常用命令、参数

          本文链接:https://www.haomeiwen.com/subject/daoafhtx.html