hadoop第三天——1. MapReduce原理

job.setNumReduceTask(3); // 默认1个reducetask,这里改成3个
在mr程序中,reducetask的个数和最终输出文件的个数有对等的关系
默认情况下,mr程序只有一个reducetask,所以输出文件是一个,但是可以通过代码手动指定reducetask个数。
job.setNumReduceTask(n); n为几,reducetask个数就是几,对应的输出文件就是几
part-r-00000、
当涉及两个及以上reducetask时,maptask的数据按照何种方式发送给reducetask,这个问题就是mr中的分区(partition)问题。
mr中默认分区规则是:key值hash取模
key.hash % reduceTask 个数 余数为几,就去哪个分区
hash是个算法,可以根据指定的内容计算出唯一特征值,只要内容不变,哈希值一定不変。
默认分区规则能够保证,只要key一样的,一定来到同一个分区。

  • 关于mr的输入路径
    如果指向的是一个文件,就处理该文件
    如果指向的是一个目录,就处理该目录下所有文件
    mr程序面临的首要问题就是:启动多少个maptask来处理数据,也就是任务划分。
    不管如何划分:不能重复、不能遗漏处理
    在mr中,内部有默认的机制来进行数据的划分“逻辑切片(逻辑规划)
    规则:逐个遍历待处理目录下文件,以切片大小对文件形成规划
    split block size=128M(默认)
    /wordcount/input
    split1 1.txt 0-128M
    split2 1.txt 128M-200M
    split3 2.txt 0-100M
    有多少个切片规划,就启动多少个maptask

  • 影响maptask个数的因素

  • 文件的大小

  • 文件的个数

  • 切片的大小

  • 影响reducetask个数的因素

  • 取决于设置job.setNumReduceTasks(N);

mr默认读取数据组件:TextInputFormat,一行一行的读取数据
k:每行起始偏移量
v:该行内容
context.write(k1,v1),但是不能频繁直接写到磁盘上
内存缓冲区,默认100M
缓冲区满了,写到磁盘上 spill 溢写
溢出的过程有几次,至少一次,取决于map逻辑
每次溢出都会排序sort(字典序)
多次溢出的文件合并(merge)成一个文件

job.setNumReduceTasks(2);
如果代码中设置了两个及以上的reducetask
这时候就涉及到了具体的数据分区的概念
<key,value> ------> key.hashcode % 2
余数为几,分区编号就是几
在进入内存缓冲区之前,进行分区计算

最后合并的文件:分区且排序
当maptask处理完自己的数据之后,把最终结果文件放置在自己运行机器的某个路径下,等待reducetask前来拉取数据
reducetask启动线程fetcher,到各个map端拉取属于自己分区的数据

在mr中可以把上一个输出路径作为下一个输入路径

卸载Jupyter Lab可以使用以下方法: 1. 使用conda卸载: 打开终端或命令提示符,运行以下命令: ``` conda uninstall jupyterlab ``` 这将卸载Jupyter Lab及其相关的依赖包。 2. 使用pip卸载: 打开终端或命令提示符,运行以下命令: ``` pip uninstall jupyterlab ``` 这将使用pip卸载Jupyter Lab。 请注意,根据引用\[1\]和引用\[2\]的内容,有时候完全卸载Jupyter Lab可能会有一些困难,因为可能会有一些残留文件。如果遇到这种情况,可以尝试手动删除残留文件。在终端或命令提示符中,进入/anaconda3/bin和/anaconda3/share这两个文件夹,查看是否有以"jupyter"开头的文件或文件夹,如果有,可以直接删除它们。 希望这些方法能够帮助您成功卸载Jupyter Lab。如果问题仍然存在,您可以尝试参考引用\[3\]中提供的教程,或者考虑完全卸载并重新安装Jupyter Lab。 #### 引用[.reference_title] - *1* *3* [Anaconda完全卸载Jupyter/Jupyter Lab](https://blog.youkuaiyun.com/Faster6/article/details/125190497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [如何不残留地卸载jupyter/lab](https://blog.youkuaiyun.com/qq_41782124/article/details/115100718)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值