首页 » SEO优化 » php写hadoop技巧_教你用Python 编写 Hadoop MapReduce 轨范

php写hadoop技巧_教你用Python 编写 Hadoop MapReduce 轨范

访客 2024-11-26 0

扫一扫用手机浏览

文章目录 [+]

本文分享自华为云社区《Hadoop Streaming:用Python 编写Hadoop MapReduce 程序》,作者:Donglian Lin。

随着数字媒体、物联网等发展的涌现,每天产生的数字数据量呈指数级增长。
这种情形给创建下一代工具和技能来存储和操作这些数据带来了寻衅。
这便是 Hadoop Streaming 的用武之地!
下面给出的图表描述了从2013年起环球每年产生的数据增长情形。
IDC估计,到2025年,每年产生的数据量将达到180 Zettabytes!

php写hadoop技巧_教你用Python 编写 Hadoop MapReduce 轨范

IBM 表示,每天有近2.5 千万字节的数据被创建,个中 90% 的天下数据是在过去两年中创建的!
存储如此弘大的数据量是一项具有寻衅性的任务。
Hadoop可以比传统的企业数据仓库更有效地处理大量构造化和非构造化数据。
它跨分布式打算机集群存储这些弘大的数据集。
Hadoop Streaming 利用MapReduce 框架,该框架可用于编写运用程序来处理海量数据。

php写hadoop技巧_教你用Python 编写 Hadoop MapReduce 轨范
(图片来自网络侵删)

由于MapReduce 框架基于 Java,您可能想知道如果开拓职员没有 Java 履历,他/她如何事情。
好吧,开拓职员可以利用他们喜好的措辞编写mapper/Reducer 运用程序,而无需节制太多 Java 知识,利用Hadoop Streaming而不是切换到 Pig 和 Hive 等新工具或技能。

1.什么是 Hadoop 流?

Hadoop Streaming 是 Hadoop 发行版附带的实用程序。
它可用于实行大数据剖析程序。
Hadoop 流可以利用Python、Java、PHP、Scala、Perl、UNIX 等措辞实行。
该实用程序许可我们利用任何可实行文件或脚本作为映射器和/或化简器来创建和运行 Map/Reduce 作业。
例如:

$HADOOP_HOME/bin/hadoop jar$HADOOP_HOME/hadoop-streaming.jar

-input myInputDirs

-输出我的输出目录

-文件夹/垃圾箱/猫

-减速器/bin/wc

参数解释:

Python MapReduce 代码:

mapper.py#!/usr/bin/pythonimport sys#Word Count Example# input comes from standard input STDINfor line in sys.stdin:line = line.strip() #remove leading and trailing whitespaceswords = line.split() #split the line into words and returns as a listfor word in words:#write the results to standard output STDOUTprint'%s %s' % (word,1) #Emit the word

reducer.py

#!/usr/bin/pythonimport sysfrom operator import itemgetter# using a dictionary to map words to their countscurrent_word = Nonecurrent_count = 0word = None# input comes from STDINfor line in sys.stdin:line = line.strip()word,count = line.split(' ',1)try:count = int(count)except ValueError:continueif current_word == word:current_count += countelse:if current_word:print '%s %s' % (current_word, current_count)current_count = countcurrent_word = wordif current_word == word:print '%s %s' % (current_word,current_count)

跑:

1. 创建一个包含以下内容的文件并将其命名为 word.txt。

猫鼠狮鹿虎狮象狮鹿

2. 将 mapper.py 和 reducer.py 脚本复制到上述文件所在的同一文件夹中。

3. 打开终端并找到文件所在的目录。
命令:ls:列出目录中的所有文件cd:变动目录/文件夹

4. 查看文件的内容。

命令:cat file_name

> mapper.py 的内容

命令:cat mapper.py

>reducer.py 的内容

命令:cat reducer.py

我们可以在本地文件(例如:word.txt)上运行 mapper 和reducer。
为了在 Hadoop 分布式文件系统 (HDFS) 上运行Map 和 Reduce,我们须要Hadoop Streaming jar。
以是在我们在HDFS 上运行脚本之前,让我们在本地运行它们以确保它们事情正常。

>运行映射器

命令:catword.txt | python mapper.py

>运行reducer.py

命令: cat word.txt | python mapper.py | sort -k1,1 | pythonreducer.py

我们可以看到映射器和减速器按预期事情,因此我们不会面临任何进一步的问题。

在 Hadoop 上运行Python 代码

在我们在Hadoop 上运行 MapReduce 任务之前,将本地数据(word.txt)复制到 HDFS

> 示例:hdfs dfs -put source_directory hadoop_destination_directory

命令:hdfs dfs -put/home/edureka/MapReduce/word.txt /user/edureka

复制jar文件的路径

基于jar版本的Hadoop Streaming jar路径为:

/usr/lib/hadoop-2.2.X/share/hadoop/tools/lib/hadoop-streaming-2.2.X.jar

因此,在您的终端上找到 Hadoop Streaming jar 并复制路径。

命令:

ls/usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

运行 MapReduce 作业

命令:

hadoop jar/usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar -file/home/edureka/mapper.py -mapper mapper.py -file /home/ edureka/reducer.py-reducer reducer.py -input /user/edureka/word -output /user/edureka/Wordcount

Hadoop 为统计和信息供应了一个基本的 Web 界面。
当Hadoop 集群运行时,在浏览器中打开http://localhost:50070。
这是Hadoop Web 界面的屏幕截图。

现在浏览文件系统并找到天生的 wordcount 文件以查看输出。
下面是截图。

我们可以利用这个命令在终端上看到输出

命令:hadoopfs -cat /user/edureka/Wordcount/part-00000

您现在已经学会了如何利用 Hadoop Streaming 实行用Python 编写的 MapReduce 程序!

点击关注,第一韶光理解华为云新鲜技能~华为云博客_大数据博客_AI博客_云打算博客_开拓者中央-华为云

相关文章

介绍百度网盘,云端存储时代的创新先锋

随着互联网技术的飞速发展,云计算已经成为现代生活不可或缺的一部分。而在这其中,百度网盘作为国内领先的云存储服务提供商,以其卓越的性...

SEO优化 2025-01-03 阅读0 评论0

介绍监控屏蔽技术,守护个人隐私的利器

随着科技的发展,监控设备已经深入到我们生活的方方面面。在享受便利的隐私安全问题也日益凸显。如何有效屏蔽监控,保护个人隐私,成为人们...

SEO优化 2025-01-03 阅读0 评论0

介绍番号观看方法,轻松驾驭影视世界

随着互联网的普及,网络影视资源日益丰富,番号作为影视作品的标识码,已经成为广大观众了解、搜索和观看影视作品的重要途径。如何正确地使...

SEO优化 2025-01-03 阅读0 评论0

介绍盗微信号黑幕,网络安全的严峻挑战

在数字化时代,微信已成为人们生活中不可或缺的通讯工具。随着微信用户数量的激增,盗微信号的事件也日益增多。本文将深入剖析盗微信号的方...

SEO优化 2025-01-03 阅读0 评论0