hadoop理解

hadoop:

  • 开源分布式平台
  • 核心:HDFS、MapReduce
  • HDFS在集群上实现分布式文件系统
  • MapReduce在集群上实现分布式计算和任务处理

1 HDFS体系结构

一个HDFS集群是由一个NameNode和若干个DataNode组成。

  • NameNode(名字节点):管理文件系统的命名空间和客户端对文件的访问操作
    (1)执行文件系统的命名空间操作,如打开、关闭、重命名文件或目录
    (2)负责数据块到具体DataNode的映射
  • DataNode(数据节点):管理存储的数据
    (1)负责处理文件系统客户端的文件读写请求
    (2)在NameNode的统一调度下进行数据块的创建、删除和复制工作

在这里插入图片描述

2 MapReduce体系结构

MapReduce框架是由一个单独运行在主节点的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。

  • JobTracker:调度和管理其他TaskTracker
  • TaskTracker:负责执行任务 ,运行于DataNode之上

3 MapReduce任务处理流程

思想:分而治之

  • 用户自定义的Map函数把输入的键值对映射(map)成一组新的键值对
  • MapReduce把所有具有相同的key值的value集合一起,传递给Reduce函数
  • 用户自定义的Reduce函数对相同key下的所有value进行处理再输出最终的键值对

4 MapReduce应用案例

4.1 单词计数

解决方案
  • 将文件内容切分为单词
  • 将所有相同的单词聚集在一起
  • 计算单词出现的次数并输出
设计思路
  • map阶段:完成由输入数据到单词切分的工作 <行号,内容> --> <word,1>
  • reduce阶段:接收所有单词并计算其频数 <word,{1,1,…}> --> <word,sum>

4.2 数据去重

解决方案
  • 将文件内容切分为单词
  • 将所有相同的单词聚集在一起
  • 接收元组,直接输出key
设计思路
  • map阶段:完成由输入数据到单词切分的工作 <行号,内容> --> <word,1>
  • reduce阶段:接收单词并直接输出键 <word,{1,1,…}> --> <word,NAN>

4.3 数据排序

解决方案
  • 利用hadoop自带的排序
  • 将数据转为IntWritable类型
  • hadoop自动对所有的元组进行基于Key的排序
  • 接收元组,直接输出key,根据输入value-list中的元素个数决定key的输出次数
设计思路
  • map阶段:将输入的value转为IntWritable类型,作为输出的key <行号,data> --> <data,1>
  • 自定义partition函数:
    (1)注意:reduce自动排序仅仅是发送到自己所在节点的数据,使用默认的排序不能保证全局顺序
    (2)根据输入数据的最大值和mapreduce框架中partition的数量获取将输入数据按照大小分块的边界,然后根据输入数据和边界的关系返回对应的partition ID
  • reduce阶段:将输入的key复制到输出的value上,根据输入value-list中的元素个数决定key的输出次数,用全局linenum代表key的位次 <data,{1,1,…}> --> <linenum, data>

4.4 单/多表连接

解决方案
  • 区分输入行是左表还是右表,然后对两列值进行分割,连接列保存在key中,其他列和左右表标识保存在value中
  • 解析map输出,将value中数据按照左右表标识分别保存,求笛卡尔积并输出
设计思路
  • map阶段:识别出输入的行属于哪个表后,对其进行分割,将连接的列值保存在key中,另一列和左右表标识保存在value中,然后输出<行号,行数据> --> <连接列值,其他列值和左右表标识>
  • reduce阶段:拿到连接结果后,解析value内容,根据标识将左右表内容分开存放,求笛卡尔积最后直接输出 <连接列值,{其他列值和左右表标识,其他列值和左右表标识,…}> --> <连接列值,左表其他列值和右表其他列值的笛卡尔积>

4.5倒排索引

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值