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

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

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

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

一.过程分析(截图)

1. 确定Hadoop处于启动状态

图1:打开hdfs

在终端输入./sbin/start-dfs.sh启动hdfs。

图2:确定Hadoop处于启动状态

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

关系连接

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

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

java 复制代码
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:编写SingleTableLink.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的关键技术主要包括文件数据块切分、数据块指纹计算和数据块检索。

相关推荐
寂然如故21 分钟前
Apache Spark
大数据·spark·apache
FreeIPCC2 小时前
如何评估电话机器人的效果?
大数据·人工智能·语言模型·机器人·开源·信息与通信
FreeIPCC2 小时前
开源电话机器人产品的优点是什么?
大数据·人工智能·语言模型·机器人·信息与通信
2403_889461682 小时前
智控水利:道品科技农业灌区自动化闸门引领农业灌溉新变革
大数据·网络·人工智能·经验分享·科技·自动化·云计算
企业软文推广3 小时前
软文实战技巧:如何利用媒体平台资源提升品牌影响力?
大数据·python
Aly_3 小时前
Flink 从入门到实战
大数据·flink
荔家大少3 小时前
海外媒体发稿:根据您的要求编写二十个文案标题方法-华媒舍
大数据·搜索引擎·新媒体运营·传媒·媒体
Hsu_kk4 小时前
Flink Standalone 集群模式安装部署教程
大数据·flink
zmd-zk5 小时前
kafka生产者和消费者命令的使用
大数据·分布式·学习·kafka