大数据实战——MapReduce案例实践

🌟欢迎来到 我的博客 —— 探索技术的无限可能!


🌟博客的简介(文章目录)

大数据实战——MapReduce案例实践

  • 一.过程分析(截图)
    • 1. 确定Hadoop处于启动状态
    • 2. 在/usr/local/filecotent下新建child_parent文件,并写入以下内容
    • 3. 将/usr/local/filecontent/child_parent上传到hdfs的data目录中
    • 4. 查看data目录下的内容
    • 5. 编写SingleTableLink.java并运行文件
      • 5.1进入eclipse
      • 5.2默认workspace(这里必须是Hadoop用户下,如果是个人用户名下,就代表前面错误,你不是在Hadoop下完成的操作,会显示没有java路径)
      • 5.3新建class
      • 5.4编写SingleTableLink.java
    • 6. 打成jar包并指定主类,在linux中运行
    • 7. 查看输出文件内容
    • 8. 将/home/hadoop/Downloads/Dedup.txt上传到hdfs的data目录中
    • 9. 查看data目录下的内容
    • 10. 编写SingleTableLink.java并运行文件
      • 10.1新建class
      • 10.2编写Dedup.java
    • 11. 打成jar包并指定主类,在linux中运行
    • 12. 查看输出文件内容
  • 二.解题思路
    • 2.1关系连接
    • 2.2数据去重

一.过程分析(截图)

1. 确定Hadoop处于启动状态

在这里插入图片描述

图1:打开hdfs
在终端输入./sbin/start-dfs.sh启动hdfs。

在这里插入图片描述

图2:确定Hadoop处于启动状态
通过输入jps确定Hadoop处于启动状态。

关系连接

2. 在/usr/local/filecotent下新建child_parent文件,并写入以下内容

在终端输入sudo vi hellodemo新建child_parent文件,并写入以下内容:

Tom Lucy
Tom Jack
Jone Lucy
Jone ack
Lucy Mary
Lucy Ben
Jack Alice
Jack Jesses
Terry Alice
Terry Jesses
Philip Terry
Philip Alma
Mark Terry
Mark Alma

在这里插入图片描述

图3:新建child_parent文件

在这里插入图片描述

图4:进入child_parent文件
在这里插入图片描述

图5:写好内容进child_parent文件

在这里插入图片描述

图6:按 ESC 保存,然后 shift+:wq

3. 将/usr/local/filecontent/child_parent上传到hdfs的data目录中

在这里插入图片描述

图7:上传到hdfs的data目录

在终端输入命令:bin/hdfs dfs -put /usr/local/filecontent/child_parent data将刚刚写的child_parent文件上传到hdfs的data目录下。

4. 查看data目录下的内容

在这里插入图片描述

图8:查看data目录下的内容

在终端输入命令:bin/hdfs dfs -ls data查看data目录下的内容,可以看到我们已经成功将刚刚写的child_parent文件上传到hdfs的data目录下。

在这里插入图片描述

图9:查看child_parent文件内容

在终端输入命令:bin/hdfs dfs -text data/child_parent查看child_parent文件内容。

5. 编写SingleTableLink.java并运行文件

5.1进入eclipse

在这里插入图片描述

图10:启动eclipse

在终端输入启动命令:./eclipse启动eclipse。

5.2默认workspace(这里必须是Hadoop用户下,如果是个人用户名下,就代表前面错误,你不是在Hadoop下完成的操作,会显示没有java路径)

在这里插入图片描述

图11:默认workspace

默认workspace点击launch进入下一步。

5.3新建class

在这里插入图片描述

图13:给新建class起名SingleTableLink

5.4编写SingleTableLink.java

在这里插入图片描述

图14:编写WordCountTest.java

在这里插入图片描述

图15:注意要把位置写对

6. 打成jar包并指定主类,在linux中运行

在这里插入图片描述

图16:选择“export”
在Eclipse工作界面左侧的“Package Explorer”面板中,在工程名称“SingleTableLink”上点击鼠标右键,在弹出的菜单中选择“Export”。

在这里插入图片描述

图17:选择“Runnable JAR file”
在该界面中,选择“Runnable JAR file”,然后,点击“Next>”按钮。

在这里插入图片描述

图18:SingleTableLink工程打包生成child_parent.jar

在该界面中,“Launch configuration”用于设置生成的JAR包被部署启动时运行的主类,需要在下拉列表中选择刚才配置的类“SingleTableLink”。在“Export destination”中需要设置JAR包要输出保存到哪个目录,这里设置为“/usr/local/hadoop/myapp/child_parent.jar”。在“Library handling”下面选择“Extract required libraries into generated JAR”。然后,点击“Finish”按钮完成打包。

在这里插入图片描述

图19:查看是否打包成功
在进入myapp目录下终端输入命令:ls,可以看到,“/usr/local/hadoop/myapp”目录下已经存在一个child_parent.jar文件。

7. 查看输出文件内容

在这里插入图片描述

图20:使用hadoop jar命令运行程序
在终端输入命令:./bin/hadoop jar ./myapp/child_parent.jar运行打包的程序。

在这里插入图片描述

图21:运行结果

结果已经被写入了HDFS的“/user/hadoop/out2”目录中。

在这里插入图片描述

图22:查看输出文件内容
在终端输入命令:bin/hdfs dfs -cat /out2/*查看输出文件内容,结果入图22所示,自此关系连接程序顺利运行结束。

数据去重

8. 将/home/hadoop/Downloads/Dedup.txt上传到hdfs的data目录中

在这里插入图片描述

图23:上传到hdfs的data目录

在终端输入命令:bin/hdfs dfs -put /home/hadoop/Downloads/Dedup.txt data将刚刚写的child_parent文件上传到hdfs的data目录下。

9. 查看data目录下的内容

在这里插入图片描述

图24:查看data目录下的内容

在终端输入命令:bin/hdfs dfs -ls data查看data目录下的内容,可以看到我们已经成功将刚刚写的Dedup.txt文件上传到hdfs的data目录下。

10. 编写SingleTableLink.java并运行文件

10.1新建class

在这里插入图片描述

图25:给新建class起名Dedup

10.2编写Dedup.java

在这里插入图片描述

图26:编写Dedup.java
注意输入输出的地址。

11. 打成jar包并指定主类,在linux中运行

在这里插入图片描述

图27:查看是否打包成功
在进入myapp目录下终端输入命令:ls,可以看到,“/usr/local/hadoop/myapp”目录下已经存在一个Dedup.jar文件。

12. 查看输出文件内容

在这里插入图片描述

图28:使用hadoop jar命令运行程序
在终端输入命令:./bin/hadoop jar ./myapp/Dedup.jar运行打包的程序。

在这里插入图片描述

图29:运行结果

结果已经被写入了HDFS的“/user/hadoop/out3”目录中。

在这里插入图片描述

图30:查看输出文件内容
在终端输入命令:bin/hdfs dfs -cat /out3/*查看输出文件内容,结果入图30所示,自此数据去重程序顺利运行结束。

在这里插入图片描述

图31:关闭hdfs
关闭eclipse后,在终端输入./sbin/stop-dfs.sh关闭hdfs。

二.解题思路

2.1关系连接

只有连接左表的parent列和右表的child列,才能得到grandchild和grandparent的信息。
因此需要将源数据的一张表拆分成两张表,且左表和右表是同一个表。
• 所以在map阶段将读入数据分割成child和parent之后,将parent设置成key,child设置成value进行输出,并作为左表;
再将同一对child和parent中的child设置成key,parent设置成value进行输出,作为右表。
为了区分输出中的左右表,需要在输出的value中再加上左右表的信息,比如在value的String最开始处加上字符1表示左表,加上字符2表示右表。
这样在map的结果中就形成了左表和右表,然后在shuffle过程中完成连接。
reduce接收到连接的结果,其中每个key的value-list就包含了"grandchild–grandparent"关系。
取出每个key的value-list进行解析,将左表中的child放入一个数组,右表中的parent放入一个数组,
最后对两个数组求笛卡尔积得到最后的结果

2.2数据去重

存储系统的重复数据删除过程一般是这样的:首先将数据文件分割成一组数据块,为每个数据块计算指纹,然后以指纹为关键字进行Hash查找,匹配则表示该数据块为重复数据块,仅存储数据块索引号,否则则表示该数据块是一个新的唯一块,对数据块进行存储并创建相关元信息。这样,一个物理文件在存储系统就对应一个逻辑表示,由一组FP(指纹)组成的元数据。当进行读取文件时,先读取逻辑文件,然后根据FP序列,从存储系统中取出相应数据块,还原物理文件副本。从如上过程中可以看出,Dedupe的关键技术主要包括文件数据块切分、数据块指纹计算和数据块检索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/476579.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从零开始的LeetCode-算法】3233. 统计不是特殊数字的数字数量

给你两个 正整数 l 和 r。对于任何数字 x,x 的所有正因数(除了 x 本身)被称为 x 的 真因数。 如果一个数字恰好仅有两个 真因数,则称该数字为 特殊数字。例如: 数字 4 是 特殊数字,因为它的真因数为 1 和…

java基础概念37:正则表达式2-爬虫

一、定义 【回顾】正则表达式的作用 作用一:校验字符串是否满足规则作用二:在一段文本中查找满足要求的内容——爬虫 二、本地爬虫VS网络爬虫 2-1、本地爬虫 示例: 代码优化: public static void main(String[] args) {// 大…

Flume日志采集系统的部署,实现flume负载均衡,flume故障恢复

目录 安装包 flume的部署 负载均衡测试 故障恢复 安装包 在这里给大家准备好了flume的安装包 通过网盘分享的文件:apache-flume-1.9.0-bin.tar.gz 链接: https://pan.baidu.com/s/1DXMA4PxdDtUQeMB4J62xoQ 提取码: euz7 --来自百度网盘超级会员v4的分享 ----…

SQL注入靶场演练

找闭合,用万能密码,发现过滤or,所以绕过admin’oORr‘1‘’1 发现登陆成功 尝试用order by查询列数,又发现by过滤,所以绕过admin’/**/oorrder/**/bBYy/**/3查出列数是3 用联合查询,发现过滤http://139.1…

【软件入门】Git快速入门

Git快速入门 文章目录 Git快速入门0.前言1.安装和配置2.新建版本库2.1.本地创建2.2.云端下载 3.版本管理3.1.添加和提交文件3.2.回退版本3.2.1.soft模式3.2.2.mixed模式3.2.3.hard模式3.2.4.使用场景 3.3.查看版本差异3.4.忽略文件 4.云端配置4.1.Github4.1.1.SSH配置4.1.2.关联…

日常开发记录-正确的prop传参,reduce搭配promise的使用

日常开发记录-正确的prop传参&#xff0c;reduce搭配promise的使用 1.正确的prop传参2.reduce搭配promise的使用 1.正确的prop传参 一般会的父组件传参子组件 //父组件 <A :demodata.sync"testData" :listData.sync"testData2"></A> data ()…

最大熵谱估计

估计思想&#xff1a;采用最大熵原则&#xff0c;外推自相关函数方法估计信号功率谱。它基于将已知的有限长度自相关序列以外的数据用外推的方法求得&#xff0c; 而不是把它们当作是零。 已知{ R(0),R(1),…R(p)},求得R(p1),R(p2),… 保证外推后自相关矩阵正定&#xff0c;自…

JavaWeb——Mybatis

6. Mybatis MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC的开发 6.1. Mybatis入门 6.1.1. 入门程序 6.1.2. JDBC 6.1.3. 数据库连接池 6.1.4. Lombok 6.2. Mybatis基础操作 6.2.1. 删除 6.2.1.1. 根据主键删除 6.2.1.2. 预编译SQL #{id}在编译过程中会替换成?…

零碎04 MybatisPlus自定义模版生成代码

目录 背景 动手开干 需要的依赖包&#xff0c;需要注意mybatis-plus-generator的3.5版本是没有兼容历史版本的。 定义一个CodeGenerator类&#xff0c;负责生成代码和配置属性 Entity模版 背景 MybatisPlus代码生成使用默认的velocity模版解决不了定制化的需求&#xff0…

tomcat 后台部署 war 包 getshell

1. tomcat 后台部署 war 包 getshell 首先进入该漏洞的文件目录 使用docker启动靶场环境 查看端口的开放情况 访问靶场&#xff1a;192.168.187.135:8080 访问靶机地址 http://192.168.187.135:8080/manager/html Tomcat 默认页面登录管理就在 manager/html 下&#xff0c…

MongoDB进阶篇-索引(索引概述、索引的类型、索引相关操作、索引的使用)

文章目录 1. 索引概述2. 索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引2.3.1 地理空间索引&#xff08;Geospatial Index&#xff09;2.3.2 文本索引&#xff08;Text Indexes&#xff09;2.3.3 哈希索引&#xff08;Hashed Indexes&#xff09; 3. 索引相关操作3.1 查看索…

如何给 Apache 新站点目录配置 SELinux ?

在 web 服务器管理领域&#xff0c;确保服务器环境的安全性至关重要。SELinux (Security-Enhanced Linux) 是保护 Linux 服务器最有效的工具之一&#xff0c;它是一种强制访问控制 (MAC mandatory access control) 安全机制。当使用最流行的 web 服务器 Apache 提供 web 内容时…

Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持

作者&#xff1a;来自 Elastic Saikat Sarkar 使用 Elasticsearch 向量数据库构建搜索 AI 体验时如何使用 IBM watsonx™ Slate 文本嵌入。 Elastic 很高兴地宣布&#xff0c;通过集成 IBM watsonx™ Slate 嵌入模型&#xff0c;我们的开放推理 API 功能得以扩展&#xff0c;这…

【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;案例背景&#x1f4af;逻辑运算符的优先级与短路求值运算符优先级的概念短路求值的概念 &#x1f4af;分析案例代码的执行过程第一步&#xff1a;执行 && 运算第二步&#…

2024年11月21日Github流行趋势

项目名称&#xff1a;twenty 项目维护者&#xff1a;charlesBochet, lucasbordeau, Weiko, FelixMalfait, bosiraphael项目介绍&#xff1a;正在构建一个由社区支持的现代化Salesforce替代品。项目star数&#xff1a;21,798项目fork数&#xff1a;2,347 项目名称&#xff1a;p…

【算法】计算程序执行时间(C/C++)

引言 我们在写算法时要考虑到算法的执行效率&#xff0c;有的题目规定了时间限制&#xff0c;我们需要在这个时间之内去解决问题。如果我们需要比对算法的好坏&#xff0c;就需要输出这个程序运行了多长时间。 在C或C中计算程序执行时间&#xff0c;可以使用多种方法&#xf…

【题解】—— LeetCode一周小结46

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结45 11.切棍子的最小成本 题目链接&#xff1a;1547. 切棍子的最…

PH热榜 | 2024-11-22

DevNow 是一个精简的开源技术博客项目模版&#xff0c;支持 Vercel 一键部署&#xff0c;支持评论、搜索等功能&#xff0c;欢迎大家体验。 在线预览 1. Lovable 标语&#xff1a;全球首位全栈人工智能工程师 介绍&#xff1a;GPT工程师已在140多个国家拥有超过5万用户&#…

时序论文23|ICML24谷歌开源零样本时序大模型TimesFM

论文标题&#xff1a;A DECODER - ONLY FOUNDATION MODEL FOR TIME - SERIES FORECASTING 论文链接&#xff1a;https://arxiv.org/abs/2310.10688 论文链接&#xff1a;https://github.com/google-research/timesfm 前言 谷歌这篇时间序列大模型很早之前就在关注&#xff…

【UCIE协议系列-1】

UCIE协议系列-1 1 UCIE背景1.1 UCIE产生背景1.2 UCIE主要特性 2 UCIE分层协议2.1 Protocol 层2.1.1 Mode VS protocal2.1.2 PCIe 6.02.1.2.1 Raw Mode for PCIe 6.02.1.2.2 Flit Mode: Standard 256B Flit for PCIe 6.0 2.1.3 CXL3.0 256B Flit Mode2.1.3.1 Raw Mode for CXL 2…