hadoop 常用命令、参数

2020-02-19  本文已影响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 数

相关名词解释
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 为一个较大的值。

上一篇下一篇

猜你喜欢

热点阅读