Hadoop Streaming教程 0 软件版本 Linux 版本OpenEuler 24.03 SP2 LTS Hadoop版本hadoop3.4.1 Python版本python3.8.10 VSCode版本vscode1.98.0 参考链接https://bbs.huaweicloud.com/blogs/300640x. Hadoop Streaming简介x.1 概念随着数字媒体、物联网等发展的出现每天产生的数字数据量呈指数级增长。这种情况给创建下一代工具和技术来存储和操作这些数据带来了挑战。这就是 Hadoop Streaming 的用武之地下面给出的图表描绘了从 2013 年起全球每年产生的数据增长情况。 IDC 估计到 2025 年每年产生的数据量将达到 180 Zettabytes\nIBM 表示每天有近 2.5 千万字节的数据被创建其中 90% 的世界数据是在过去两年中创建的存储如此庞大的数据量是一项具有挑战性的任务。Hadoop 可以比传统的企业数据仓库更有效地处理大量结构化和非结构化数据。它跨分布式计算机集群存储这些庞大的数据集。Hadoop Streaming 使用 MapReduce 框架该框架可用于编写应用程序来处理海量数据。由于 MapReduce 框架基于 Java您可能想知道如果开发人员没有 Java 经验他/她如何工作。好吧开发人员可以使用他们喜欢的语言编写 mapper/Reducer 应用程序而无需掌握太多 Java 知识使用Hadoop Streaming而不是切换到 Pig 和 Hive 等新工具或技术。x.2什么是 Hadoop 流Hadoop Streaming 是 Hadoop 发行版附带的实用程序。它可用于执行大数据分析程序。Hadoop 流可以使用 Python、Java、PHP、Scala、Perl、UNIX 等语言执行。该实用程序允许我们使用任何可执行文件或脚本作为映射器和/或化简器来创建和运行 Map/Reduce 作业。例如//ℎ\n\n\n\n\n\n\n\n\n\n\n/\n\n\n\n/\nℎ\n\n\n\n\n\n\n\n\nHADOOP_HOME/hadoop-streaming.jar-input myInputDirs-输出我的输出目录-文件夹/垃圾箱/猫-减速器/bin/wc\n1 运行Python文件1.1 启动 hadoop 如果参照 hadoop 安装教程配置了环境变量可以在任何目录下启 动 hadoop\n1.2 新建 python 文件 从 VSCode 快捷方式启动File - Open Folder选中 home/mapreduce 目录。 (新建mapreduce目录)\n注意写完py文件要保存File-saveimport sys#Word Count Example# input comes from standard input STDIN\nfor line in sys.stdin: line line.strip() #remove leading and trailing whitespaces words line.split() #split the line into words and returns as a list for word in words: #write the results to standard output STDOUT print(‘%s\\t%s’ % (word,1) ) #Emit the word选中 mapreduce 目录新建文件 reducer.py并输入以下内容\n选中 mapreduce 目录新建文件 reducer.py并输入以下内容\nimport 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(‘\\t’,1) try: count int(count) except ValueError: continue if current_word word: current_count count\nelse: if current_word: print( ‘%s\\t%s’ % (current_word, current_count)) current_count count current_word wordif current_word word:print(‘%s\\t%s’ % (current_word,current_count) )1.3 运行 python 文件程序 在 terminal 终端中新建word.txt文件 cd ~ cd mapreduce vim word.txt\n插入以下内容Cat mouse lion deer Tiger lion Elephant lion deer“wq”保存退出然后在 terminal 终端中查看 python 文件程序 cd ~ cd mapreducelscat word.txtcat mapper.pycat reducer.py\n1.4 运行映射器我们可以在本地文件例如word.txt上运行 mapper 和 reducer。为了在 Hadoop 分布式文件系统 (HDFS) 上运行 Map 和 Reduce我们需要Hadoop Streaming jar。所以在我们在 HDFS 上运行脚本之前让我们在本地运行它们以确保它们工作正常。cat word.txt | python mapper.py\ncat word.txt | python mapper.py | sort -k1,1 | python3 reducer.py\n2 运行MapReduce2.1 在Hadoop上运行Python代码在我们在 Hadoop 上运行 MapReduce 任务之前将本地数据word.txt复制到 HDFShdfs dfs -put word.txt /user/hadoop2.2 复制jar文件的路径ls /usr/local/hadoop/share/hadoop/tools/lib/ls /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-3.4.1.jar\n2.3 运行MapReduce作业命令如下hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-3.4.1.jar -file mapper.py -mapper “python mapper.py” -file reducer.py -reducer “python reducer.py” -input word.txt -output /user/hadoop/NewCount\nHadoop 为统计和信息提供了一个基本的 Web 界面。当 Hadoop 集群运行时在浏览器中打开 http://localhost:9870/explorer.html#/user/hadoop/NewCount。\n我们可以使用这个命令在终端上看到输出hadoop fs -cat /user/hadoop/NewCount/part-00000\n您现在已经学会了如何使用 Hadoop Streaming 执行用 Python 编写的 MapReduce 程序文件删除命令hadoop dfs -rm -r /文件目录示例hadoop dfs -rm -r /user/hadoop/NewCount